Merge branch 'MFC报警检测' into develop
This commit is contained in:
commit
aee33017b2
|
@ -18,47 +18,47 @@ namespace MECF.Framework.Common.Aitex.Core.RT.Device
|
|||
{
|
||||
|
||||
#region Variable
|
||||
|
||||
|
||||
private readonly R_TRIG _alarmTrigger;
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用误差检测
|
||||
/// </summary>
|
||||
private readonly bool _isEnableErrDetection;
|
||||
private bool _isEnableErrDetection;
|
||||
|
||||
/// <summary>
|
||||
/// 误差报警超限阈值
|
||||
/// </summary>
|
||||
private readonly double _alarmRange;
|
||||
private double _alarmRange;
|
||||
|
||||
/// <summary>
|
||||
/// 误差报警超限持续时间
|
||||
/// </summary>
|
||||
private readonly double _alarmTime;
|
||||
private double _alarmTime;
|
||||
|
||||
/// <summary>
|
||||
/// 误差警告超限阈值
|
||||
/// </summary>
|
||||
private readonly double _warningRange;
|
||||
private double _warningRange;
|
||||
|
||||
/// <summary>
|
||||
/// 误差警告超限持续时间
|
||||
/// </summary>
|
||||
private readonly double _warningTime;
|
||||
private double _warningTime;
|
||||
|
||||
protected readonly DIAccessor DiAlarm;
|
||||
protected readonly string AlarmText;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 误差超限警告检查器
|
||||
/// </summary>
|
||||
protected readonly ToleranceChecker ErrWarningChecker;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 误差超限报警检查器
|
||||
/// </summary>
|
||||
protected readonly ToleranceChecker ErrAlarmChecker;
|
||||
|
||||
|
||||
private readonly AlarmEventItem _alarmEvent;
|
||||
private readonly AlarmEventItem _warningEvent;
|
||||
|
||||
|
@ -70,7 +70,7 @@ namespace MECF.Framework.Common.Aitex.Core.RT.Device
|
|||
{
|
||||
// 获取diAlarm
|
||||
DiAlarm = ParseDiNode("diAlarm", node, ioModule);
|
||||
|
||||
|
||||
// 获取Alarm Text
|
||||
AlarmText = node.GetAttribute("AlarmText");
|
||||
|
||||
|
@ -93,6 +93,12 @@ namespace MECF.Framework.Common.Aitex.Core.RT.Device
|
|||
EventLevel.Warning);
|
||||
_alarmEvent = SubscribeAlarm($"{Module}.{Display}.ToleranceAlarm", "", ResetAlarmChecker);
|
||||
|
||||
|
||||
SC.RegisterValueChangedCallback($"{ScBasePath}.{Display}.EnableAlarm", (o) => { _isEnableErrDetection = SC.GetConfigItem($"{ScBasePath}.{Display}.EnableAlarm")?.BoolValue ?? false; });
|
||||
SC.RegisterValueChangedCallback($"{ScBasePath}.AlarmRange", (o) => { _alarmRange = SC.GetConfigItem($"{ScBasePath}.AlarmRange")?.DoubleValue ?? double.NaN; });
|
||||
SC.RegisterValueChangedCallback($"{ScBasePath}.AlarmTime", (o) => { _alarmTime = SC.GetConfigItem($"{ScBasePath}.AlarmTime")?.DoubleValue ?? double.NaN; });
|
||||
SC.RegisterValueChangedCallback($"{ScBasePath}.WarningRange", (o) => { _warningRange = SC.GetConfigItem($"{ScBasePath}.WarningRange")?.DoubleValue ?? double.NaN; });
|
||||
SC.RegisterValueChangedCallback($"{ScBasePath}.WarningTime", (o) => { _warningTime = SC.GetConfigItem($"{ScBasePath}.WarningTime")?.IntValue ?? int.MinValue; });
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -143,7 +149,7 @@ namespace MECF.Framework.Common.Aitex.Core.RT.Device
|
|||
_alarmEvent.Description = $"{Display} feedback ({feedback:F1}{Unit}) out of range {alarmLow} - {alarmHigh} {Unit} in {_alarmTime:F0} seconds";
|
||||
_alarmEvent.Set();
|
||||
}
|
||||
|
||||
|
||||
// 如果报Alarm,不再检查Warning。
|
||||
if (_alarmEvent.IsTriggered)
|
||||
return;
|
||||
|
@ -168,12 +174,12 @@ namespace MECF.Framework.Common.Aitex.Core.RT.Device
|
|||
|
||||
public virtual void Monitor()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public virtual void Terminate()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public virtual void Reset()
|
||||
|
|
Loading…
Reference in New Issue