|
@@ -1,4 +1,5 @@
|
|
|
using Aitex.Core.RT.DataCenter;
|
|
|
+using Aitex.Core.RT.Device.Unit;
|
|
|
using Aitex.Core.RT.Event;
|
|
|
using Aitex.Core.RT.IOCore;
|
|
|
using Aitex.Core.RT.Log;
|
|
@@ -32,18 +33,28 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
private int _vac1PumpTimeS = 120;
|
|
|
private int _vac2PumpTimeS = 120;
|
|
|
private int _vac3PumpTimeS = 120;
|
|
|
+ private int _foolProofTime = 5;
|
|
|
+ private DeviceTimer _plcFoolProofTime = null;
|
|
|
+ private RD_TRIG _trigPLCConnected = null;
|
|
|
+
|
|
|
|
|
|
private void InitInterlock()
|
|
|
{
|
|
|
OP.AddCheck($"{Module}.{Name}.Disconnect", new CheckPlcConnect(this));
|
|
|
//OP.AddCheck($"{ChamberDoor.Module}.{ChamberDoor.Name}.Open", new CheckOpenDoor(this));
|
|
|
-
|
|
|
+ if (SC.ContainsItem("System.PLCConnectSensorFoolTime"))
|
|
|
+ _foolProofTime = SC.GetValue<int>("System.PLCConnectSensorFoolTime");
|
|
|
_configAutoControlCoolingValve = SC.GetConfigItem($"PM.{Module}.AutoControlCoolingValve");
|
|
|
_configVacuumSensorPressure = SC.GetConfigItem($"PM.{Module}.VacuumSensorPressure");
|
|
|
_configAutoControlChiller = SC.GetConfigItem($"PM.{Module}.Chiller.EnableAutoAdjust");
|
|
|
_chillerTurnOffIfTempBelow = SC.GetConfigItem($"PM.{Module}.Chiller.TurnOffIfTempBelow");
|
|
|
_chillerTurnOnIfTempAbove = SC.GetConfigItem($"PM.{Module}.Chiller.TurnOnIfTempAbove");
|
|
|
-
|
|
|
+ if (SensorPLCHeartBeatPC != null)
|
|
|
+ {
|
|
|
+ _trigPLCConnected = new RD_TRIG();
|
|
|
+ _plcFoolProofTime = new DeviceTimer();
|
|
|
+ _plcFoolProofTime.Start((_foolProofTime + 2) * 1000);//首次
|
|
|
+ }
|
|
|
_threadMonitor = new PeriodicJob(100, OnTimer, "interlock thread", true);
|
|
|
}
|
|
|
private void InitUserDefineInterlock()
|
|
@@ -141,7 +152,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
//MonitorVAC1();
|
|
|
//MonitorVAC2();
|
|
|
//MonitorVAC3();
|
|
|
-
|
|
|
+ MonitorPLCConnected();
|
|
|
//foreach (var item in _inCommandLst)
|
|
|
//{
|
|
|
// if (item == null)
|
|
@@ -242,6 +253,22 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ private void MonitorPLCConnected()
|
|
|
+ {
|
|
|
+ if (SensorPLCHeartBeatPC != null)
|
|
|
+ {
|
|
|
+ _trigPLCConnected.CLK = SensorPLCHeartBeatPC.Value;
|
|
|
+ if (_trigPLCConnected.T || _trigPLCConnected.R)
|
|
|
+ {
|
|
|
+ _plcFoolProofTime.Start(_foolProofTime * 1000);
|
|
|
+ }
|
|
|
+ if (_plcFoolProofTime.IsTimeout())
|
|
|
+ {
|
|
|
+ _plcFoolProofTime.Stop();
|
|
|
+ SensorPLCConnectedAlarm.Set($"Connected Status keep {_trigPLCConnected.CLK} out of {_foolProofTime}s");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
private void ProcessAlarmSignal()
|
|
|
{
|
|
|
bool isTrig = false;
|