using System.Collections.Generic; namespace Aitex.Core.RT.IOCore.Interlock.Actions { public class InterlockAction : InterlockActionBase { public InterlockAction(string module, DOAccessor doItem, bool value, string tip, Dictionary cultureTip) : base(module, doItem, value, tip, cultureTip) { } #region Methods /// /// 如果命中某个互锁限制条件,则将DO电平恢复到Action定义的反向电平。 /// /// 执行恢复电平动作的信息。 /// /// True:执行了电平恢复操作;False:未操作电平 /// public bool TryReverse(out string reason) { reason = string.Empty; // 如果DO当前电平不等于Action定义的电平,则啥也不干 if (_do.Value != _actionValue) return false; // 如果DO已经输出Action定义的电平,则反向 if (_do.SetValue(!_actionValue, out reason)) reason = $"Interlock Force set DO-{_do.IoTableIndex}({_do.Name}) = [{((!_actionValue) ? "ON" : "OFF")}]"; return true; } public override void Monitor() { throw new System.NotSupportedException(); } #endregion } }