|
@@ -19,6 +19,7 @@ namespace FurnaceRT.Extraction
|
|
|
{
|
|
|
public class MinicsManager : Singleton<MinicsManager>, IRTMini8Provider
|
|
|
{
|
|
|
+ private readonly object _lock = new object();
|
|
|
public void Connected(string ip, int port)
|
|
|
{
|
|
|
Console.WriteLine($"DisconnectedNotify {ip} {port}");
|
|
@@ -74,7 +75,7 @@ namespace FurnaceRT.Extraction
|
|
|
bool result = communicator.SelectConfigFile(minicsConfigName);
|
|
|
if (!result)
|
|
|
{
|
|
|
- EV.PostAlarmLog(ModuleName.Minics.ToString(), $"SelectMinicsConfig {minicsConfigName} fail!");
|
|
|
+ EV.PostAlarmLog(ModuleName.Minics.ToString(), $"SendMinicsConfig {minicsConfigName} fail!");
|
|
|
}
|
|
|
}
|
|
|
public Dictionary<string, Tuple<AlarmEventItem, AlarmEventItem, AlarmEventItem>> MinicsAlarmDic { get; set; } = new Dictionary<string, Tuple<AlarmEventItem, AlarmEventItem, AlarmEventItem>>();
|
|
@@ -99,25 +100,29 @@ namespace FurnaceRT.Extraction
|
|
|
{
|
|
|
|
|
|
var gasLineHeaterIndex = $"{alarm.Mini8Index}_{alarm.ChannelIndex}";
|
|
|
- if (!MinicsAlarmDic.ContainsKey(gasLineHeaterIndex))
|
|
|
+ lock (_lock)
|
|
|
{
|
|
|
- return;
|
|
|
- }
|
|
|
- var alarmValue = MinicsAlarmDic[gasLineHeaterIndex];
|
|
|
- if (alarm.AlarmType == RTCommunicatorBase.AlarmType.CapsOverFlow)
|
|
|
- {
|
|
|
- var msg = $"Unit{alarm.Mini8Index}CH{alarm.ChannelIndex} Feedback:{alarm.PV} limit is ({alarm.Caps}~{alarm.Floor}) ";
|
|
|
- alarmValue.Item1.Set(msg);
|
|
|
- }
|
|
|
- if (alarm.AlarmType == RTCommunicatorBase.AlarmType.FloorOverFlow)
|
|
|
- {
|
|
|
- var msg = $"Unit{alarm.Mini8Index}CH{alarm.ChannelIndex} Feedback:{alarm.PV} limit is ({alarm.Caps}~{alarm.Floor}) ";
|
|
|
- alarmValue.Item2.Set(msg);
|
|
|
- }
|
|
|
- if (alarm.AlarmType == RTCommunicatorBase.AlarmType.TcBroken)
|
|
|
- {
|
|
|
- var msg = $"Unit{alarm.Mini8Index}CH{alarm.ChannelIndex} is TcBroken";
|
|
|
- alarmValue.Item3.Set(msg);
|
|
|
+ var alarmValue = MinicsAlarmDic[gasLineHeaterIndex];
|
|
|
+ string message;
|
|
|
+
|
|
|
+ switch (alarm.AlarmType)
|
|
|
+ {
|
|
|
+ case RTCommunicatorBase.AlarmType.CapsOverFlow:
|
|
|
+ message = $"Unit{alarm.Mini8Index}CH{alarm.ChannelIndex} Feedback:{alarm.PV} limit is ({alarm.Caps}~{alarm.Floor}) ";
|
|
|
+ alarmValue.Item1.Set(message);
|
|
|
+ break;
|
|
|
+ case RTCommunicatorBase.AlarmType.FloorOverFlow:
|
|
|
+ message = $"Unit{alarm.Mini8Index}CH{alarm.ChannelIndex} Feedback:{alarm.PV} limit is ({alarm.Caps}~{alarm.Floor}) ";
|
|
|
+ alarmValue.Item2.Set(message);
|
|
|
+ break;
|
|
|
+ case RTCommunicatorBase.AlarmType.TcBroken:
|
|
|
+ message = $"Unit{alarm.Mini8Index}CH{alarm.ChannelIndex} is TcBroken";
|
|
|
+ alarmValue.Item3.Set(message);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ // Handle other cases or log an error
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|