新增PT1PT2误差报警:当5s内两者压力值差异大于设定值时,产生警告或报警
This commit is contained in:
parent
e2f8a886a7
commit
ce53852eb2
|
@ -0,0 +1,87 @@
|
|||
using Aitex.Core.RT.Device;
|
||||
using Aitex.Core.RT.Device.Unit;
|
||||
using Aitex.Core.RT.Event;
|
||||
using Aitex.Core.RT.IOCore;
|
||||
using Aitex.Core.RT.SCCore;
|
||||
using Aitex.Core.RT.Tolerance;
|
||||
using MECF.Framework.Common.Event;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
|
||||
namespace Aitex.Core.RT.Device.Devices
|
||||
{
|
||||
public class IoPressureBalanceChecker : BaseDevice, IDevice
|
||||
{
|
||||
private readonly AIAccessor _aiValue1 = null;
|
||||
private readonly AIAccessor _aiValue2 = null;
|
||||
private readonly string _formatString = "0.0";
|
||||
|
||||
private double _threshold = 8;
|
||||
private double _value = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 误差超限警告检查器
|
||||
/// </summary>
|
||||
private readonly ToleranceChecker _balanceChecker;
|
||||
|
||||
public string Value => _value.ToString(_formatString);
|
||||
public IoPressureBalanceChecker(string module, XmlElement node, string ioModule = "") : base(module, node, ioModule)
|
||||
{
|
||||
_aiValue1 = ParseAiNode("aiValue1", node, ioModule);
|
||||
_aiValue2 = ParseAiNode("aiValue2", node, ioModule);
|
||||
|
||||
_balanceChecker = new ToleranceChecker(5);
|
||||
|
||||
if (node.HasAttribute("formatString"))
|
||||
_formatString = string.IsNullOrEmpty(node.GetAttribute("formatString")) ? "F5" : node.GetAttribute("formatString");
|
||||
}
|
||||
|
||||
public bool Initialize()
|
||||
{
|
||||
_threshold = SC.GetValue<double>($"PM.{Module}.Heater.PressureBalanceDifference");
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool ResetChecker()
|
||||
{
|
||||
_balanceChecker.Reset(5);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
_balanceChecker.Reset(5);
|
||||
}
|
||||
|
||||
public void Terminate()
|
||||
{
|
||||
_balanceChecker.Reset(5);
|
||||
}
|
||||
|
||||
protected override void HandleMonitor()
|
||||
{
|
||||
_value = _aiValue1.Value - _aiValue2.Value;
|
||||
_balanceChecker.Monitor(_value, -_threshold, _threshold, 5);
|
||||
if (_balanceChecker.Trig)
|
||||
{
|
||||
var alarmLevel = SC.SafeGetStringValue($"PM.{Module}.Heater.PressureImbalanceAlarmLevel", "Warning");
|
||||
if (alarmLevel == "Warning")
|
||||
{
|
||||
EV.PostWarningLog(Module, $"PT1:{_aiValue1}({_aiValue1.Value})/PT2:{_aiValue2}({_aiValue2.Value}) Pressure out of balance(threshold:{_threshold})");
|
||||
}
|
||||
else
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"PT1:{_aiValue1}({_aiValue1.Value})/PT2:{_aiValue2}({_aiValue2.Value}) Pressure out of balance(threshold:{_threshold})");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -78,6 +78,7 @@
|
|||
<Compile Include="Devices\AdsIoProvider.cs" />
|
||||
<Compile Include="Devices\DoSensor.cs" />
|
||||
<Compile Include="Devices\IoLineHeater.cs" />
|
||||
<Compile Include="Devices\IoPressureBalanceChecker.cs" />
|
||||
<Compile Include="Devices\IoSensorAnalog.cs" />
|
||||
<Compile Include="Devices\IoBottomSection.cs" />
|
||||
<Compile Include="Devices\IoChamberMoveBody.cs" />
|
||||
|
|
Loading…
Reference in New Issue