31 lines
803 B
C#
31 lines
803 B
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
namespace Aitex.Core.RT.IOCore
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 基于DI判断的互锁限制条件。
|
||
|
/// </summary>
|
||
|
internal class DiLimit : InterlockLimit<DIAccessor, bool>
|
||
|
{
|
||
|
public override bool CurrentValue => Io.Value;
|
||
|
|
||
|
public override string LimitReason =>
|
||
|
$"DI-{Io.IoTableIndex}({Io.Name}) = [{(Io.Value ? "ON" : "OFF")}],{base.Tip}";
|
||
|
|
||
|
public DiLimit(DIAccessor diItem, string value, string tip, Dictionary<string, string> cultureTip)
|
||
|
: base(diItem, value, tip, cultureTip)
|
||
|
{
|
||
|
if (bool.TryParse(value, out var limitValue))
|
||
|
LimitValue = limitValue;
|
||
|
else
|
||
|
throw new InvalidCastException($"unable to convert {value} to boolean.");
|
||
|
}
|
||
|
|
||
|
protected override bool CheckInRange()
|
||
|
{
|
||
|
return CurrentValue == LimitValue;
|
||
|
}
|
||
|
}
|
||
|
}
|