|
@@ -16,6 +16,8 @@ using MECF.Framework.Common.CommonData.EnumData;
|
|
|
using MECF.Framework.Common.Equipment;
|
|
|
using MECF.Framework.Common.Event;
|
|
|
using MECF.Framework.Common.OperationCenter;
|
|
|
+using MECF.Framework.Common.Tolerance;
|
|
|
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
|
|
|
using System;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
@@ -113,12 +115,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
checker.ToleranceCheckerAlarm.RST = true;
|
|
|
checker?.DelayTimer.Restart();
|
|
|
}
|
|
|
- for (int i = 0; i < _hwILKChecker.Count; i++)
|
|
|
- {
|
|
|
- var checker = _hwILKChecker[i];
|
|
|
- checker.ToleranceCheckerAlarm.RST = true;
|
|
|
- checker?.DelayTimer?.Restart();
|
|
|
- }
|
|
|
+
|
|
|
for (int i = 0; i < _auxChecker.Count; i++)
|
|
|
{
|
|
|
var checker = _auxChecker[i];
|
|
@@ -129,6 +126,12 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
checker.ToleranceCheckerAlarm.RST = true;
|
|
|
checker?.DelayTimer.Restart();
|
|
|
}
|
|
|
+
|
|
|
+ for (int i = 0; i < _hwILKChecker.Count; i++)
|
|
|
+ {
|
|
|
+ var checker = _hwILKChecker[i];
|
|
|
+ checker?.FilterCheckerAlarm?.Restart();
|
|
|
+ }
|
|
|
}
|
|
|
private void InitAlarmConditionChecker()
|
|
|
{
|
|
@@ -266,7 +269,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
var checker = new AlarmConditionChecker()
|
|
|
{
|
|
|
Name = item.Value.Name,
|
|
|
- ToleranceCheckerAlarm = new ToleranceChecker(),
|
|
|
+ FilterCheckerAlarm = new FilterChecker(),
|
|
|
Parameter = new AlarmConditionAIParameter(),
|
|
|
};
|
|
|
|
|
@@ -638,55 +641,27 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
|
|
|
private void MonitorInterlockAlarmCondition()
|
|
|
{
|
|
|
+ if (_alarmConditionDic == null || !_alarmConditionDic.ContainsKey(_currentAlarmConditionIndex) || _alarmConditionDic[_currentAlarmConditionIndex].InterlockParameterLst == null || HWILKAlarmDic == null)
|
|
|
+ return;
|
|
|
+
|
|
|
foreach (var item in _hwILKChecker)
|
|
|
{
|
|
|
if (item.DIParameter == null || item.DIParameter.IsEnable == false)
|
|
|
continue;
|
|
|
|
|
|
- if (!_sensors.TryGetValue(item.Name, out var sensor))
|
|
|
+ if (!_sensors.TryGetValue(item.Name, out var sensorItem))
|
|
|
continue;
|
|
|
|
|
|
- if (!sensor.Value)
|
|
|
+ if (!HWILKAlarmDic.TryGetValue(sensorItem, out var alarmItem))
|
|
|
continue;
|
|
|
|
|
|
- //ProcessAlarmConditionErrorCommand(item.Command);
|
|
|
+ item.FilterCheckerAlarm.CheckInterval = 0.1;
|
|
|
|
|
|
+ item.FilterCheckerAlarm.Monitor(sensorItem.Value);
|
|
|
|
|
|
+ if (item.FilterCheckerAlarm.Trig)
|
|
|
+ ProcessAlarmConditionErrorCommand(item.DIParameter.Command, () => alarmItem.Set());
|
|
|
}
|
|
|
-
|
|
|
- //if (_triggeredAlarmList == null || _triggeredAlarmList.Count == 0)
|
|
|
- // return;
|
|
|
-
|
|
|
- //if (_hardwareInterlockAlarmConditionDic == null)
|
|
|
- // return;
|
|
|
-
|
|
|
- //if (_alarmConditionDic == null || !_alarmConditionDic.ContainsKey(_currentAlarmConditionIndex) || _alarmConditionDic[_currentAlarmConditionIndex].InterlockParameterLst == null)
|
|
|
- // return;
|
|
|
-
|
|
|
- //var newAlarm = _triggeredAlarmList[_triggeredAlarmList.Count - 1];
|
|
|
- //var alarmConditionItemName = "";
|
|
|
- //for (int i = _triggeredAlarmList.Count - 1; i >= 0; i--)
|
|
|
- //{
|
|
|
- // var alarm = _triggeredAlarmList[i];
|
|
|
- // var interval = DateTime.Now - newAlarm.OccuringTime;
|
|
|
- // if (interval.TotalMilliseconds > 1000)//老的alarm
|
|
|
- // continue;
|
|
|
- // var paras = newAlarm.EventEnum.Split('.');
|
|
|
- // if (paras.Length < 2)
|
|
|
- // continue;
|
|
|
- // var ret = _hardwareInterlockAlarmConditionDic.TryGetValue(paras[1], out string name);
|
|
|
- // if (ret)
|
|
|
- // {
|
|
|
- // newAlarm = alarm;
|
|
|
- // alarmConditionItemName = name;
|
|
|
- // var alarmConditionItem = _alarmConditionDic[_currentAlarmConditionIndex].InterlockParameterLst.FirstOrDefault(x => x.Name == alarmConditionItemName);
|
|
|
- // if (alarmConditionItem == null)
|
|
|
- // continue;
|
|
|
- // if (alarmConditionItem.IsEnable)
|
|
|
- // ProcessAlarmConditionErrorCommand(alarmConditionItem.Command);
|
|
|
- // break;
|
|
|
- // }
|
|
|
- //}
|
|
|
}
|
|
|
private void MonitorAPCAlarmCondition()
|
|
|
{
|
|
@@ -985,7 +960,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- private void ProcessAlarmConditionErrorCommand(string command)
|
|
|
+ private void ProcessAlarmConditionErrorCommand(string command, Action eventHandler = null)
|
|
|
{
|
|
|
var recipe = "";
|
|
|
var recipeType = "";
|
|
@@ -1035,6 +1010,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
LOG.Write($"Alarm condition: command={command}");
|
|
|
break;
|
|
|
case "Monitor":
|
|
|
+ eventHandler?.Invoke();
|
|
|
LOG.Write($"Alarm condition: command={command}");
|
|
|
break;
|
|
|
case "Buzzer":
|
|
@@ -1220,6 +1196,10 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
public AlarmConditionAIParameter Parameter { get; set; }
|
|
|
public AlarmConditionDIParameter DIParameter { get; set; }
|
|
|
public Stopwatch DelayTimer { get; set; }//N秒过后才检测
|
|
|
+
|
|
|
+
|
|
|
+ public FilterChecker FilterCheckerAlarm { get; set; }
|
|
|
+
|
|
|
}
|
|
|
class AlarmConditionTableParameter
|
|
|
{
|