Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/Aitex/Core/RT/IOCore/Interlock/Actions/InterlockAction.cs

47 lines
1.2 KiB
C#
Raw Normal View History

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