using System.Collections.Generic; using Aitex.Core.RT.IOCore.Interlock.DataProvider; namespace Aitex.Core.RT.IOCore.Interlock; /// /// 基于AO判断的互锁限制条件。 /// internal class AoLimit : InterlockLimit { #region Constructors public AoLimit(AoValueProvider dataProvider, string value, string tip, Dictionary cultureTip) : base(dataProvider, value, tip, cultureTip) { LimitRange = new InterlockLimitRangeDouble(value); } #endregion #region Properties private InterlockLimitRangeDouble LimitRange { get; } public override double CurrentValue => (double)DataProvider.GetValue(); public override string LimitReason => $"{DataProvider.Name} = {CurrentValue:F1}, out of range [{LimitRange}]{(string.IsNullOrEmpty(Tip) ? "" : $",{Tip}")}"; public override string DaemonReason => $"{DataProvider.Name} = {CurrentValue:F1}, in the range [{LimitRange}]{(string.IsNullOrEmpty(Tip) ? "" : $",{Tip}")}"; #endregion #region Methods protected override bool CheckInRange() { return LimitRange.CheckIsInRange(CurrentValue); } public override string ToString() { return $"{Name}, Limit={LimitRange}"; } #endregion }