| | |
| | | using WIDESEAWCS_ISystemServices; |
| | | using WIDESEAWCS_Core.Helper; |
| | | |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class AlarmResetJob : JobBase, IJob |
| | | { |
| | | |
| | | private readonly IAlarmResetHsyServer _alarmResetHsyServer; |
| | | private readonly ISys_UserService _UserService; |
| | | WebSocketServer _webSocketServer; |
| | | private readonly Idt_ErrormsginfoService _ErrormsginfoService; |
| | | private readonly AlarmResetHsyServer _alarmResetHsy; |
| | | //private static readonly object _lockObj = new object(); //å é |
| | | |
| | | |
| | | // 墿·»çåå
¸è·è¸ªæ¥è¦ä¸ºæ¯ä¸ªè£
ç½® Quartz é»è®¤æ¯æ¬¡è°åº¦ä»»å¡æ¶ä¼éæ°å建 |
| | | private static readonly Dictionary<string, bool> _leftAlarmStates = new Dictionary<string, bool>() //å é |
| | | { |
| | | ["M109"] = false,//ä¼ºææ¥è¦ |
| | | ["M111"] = false,//å
¶ä»æ¥è¦ |
| | | ["M110"] = false,//æ¥åæ¥è¦ |
| | | ["M120"] = false,//éç¢æ¥è¦ |
| | | }; |
| | | private static readonly Dictionary<string, bool> _rightAlarmStates = new Dictionary<string, bool>() |
| | | { |
| | | ["M109"] = false,//ä¼ºææ¥è¦ |
| | | ["M111"] = false,//å
¶ä»æ¥è¦ |
| | | ["M110"] = false,//æ¥åæ¥è¦ |
| | | ["M120"] = false,//éç¢æ¥è¦ |
| | | }; |
| | | |
| | | public AlarmResetJob(Idt_ErrormsginfoService errormsginfoService, WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService) |
| | | { |
| | |
| | | _ErrormsginfoService = errormsginfoService; |
| | | } |
| | | |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | |
| | | //è·å设å¤å· |
| | | // è·å设å¤é
ç½® |
| | | //OtherDevice serialPortDevice = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid)) |
| | | { |
| | | Console.WriteLine("é
置项 DepartmentID æ æ³è½¬æ¢ä¸ºæ´æ°"); |
| | |
| | | var devices = GetDevicesByDeptId(deid); |
| | | if (devices != null) |
| | | { |
| | | //é¦å
è¦ä¸ç´è¯»ï¼å¦æåçäºæ
éè¦åå°_alarmResetHsyServerä¸è®°å½ä¸æ¥å¹¶ä¸ç»å°åç«¯æ°æ® |
| | | //å·¦plc |
| | | try |
| | | // Left PLC processing |
| | | try |
| | | { |
| | | if (devices.Value.left.IsConnected) |
| | | { |
| | | var leftPLcstuck1 = devices.Value.left.Communicator.Read<bool>("M109"); //å¡ä½æ¥è¦ |
| | | var leftPLcOher1 = devices.Value.left.Communicator.Read<bool>("M111"); //å
¶ä»æ¥è¦ //é»è®¤æ¯false |
| | | var leftPLcstuck1 = devices.Value.left.Communicator.Read<bool>("M109"); // Servo alarm |
| | | var leftPLcOher1 = devices.Value.left.Communicator.Read<bool>("M111"); // Other alarm |
| | | var leftscram = devices.Value.left.Communicator.Read<bool>("M110"); // Emergency stop |
| | | var leftstop = devices.Value.left.Communicator.Read<bool>("M120"); // Obstacle stop |
| | | |
| | | var leftPLcNowAdd = devices.Value.left.Communicator.Read<float>("D80"); |
| | | Console.WriteLine($"{devices.Value.left.DeviceName}:å¡ä½æ¥è¦{leftPLcstuck1}ï¼å
¶ä»æ¥è¦{leftPLcOher1}"); |
| | | if (leftPLcstuck1 == true && leftPLcOher1 == false) |
| | | { |
| | | string text = $"轨é{deid}ï¼ä¼¸ç¼©å¡ä½æ¥è¦"; |
| | | //æ¥è¦äºå¨è¿è°ç¨æ·»å æ¹æ³ï¼å¹¶ä¼ ç»å端 |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid,text, leftPLcstuck1); |
| | | |
| | | |
| | | // Check and record alarms only when state changes from false to true |
| | | if (leftPLcstuck1 && !_leftAlarmStates["M109"]) |
| | | { |
| | | string text = $"æ£8éå·¦ä¾§è¦ææºæï¼ä¼¸ç¼©å¡ä½æ¥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1); |
| | | _leftAlarmStates["M109"] = true; |
| | | } |
| | | else if (!leftPLcstuck1) |
| | | { |
| | | _leftAlarmStates["M109"] = false; |
| | | } |
| | | |
| | | } |
| | | if (leftPLcstuck1 == false && leftPLcOher1 == true) |
| | | { |
| | | string text = $"轨é{deid}ï¼å
¶ä»æ
鿥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1); |
| | | if (leftPLcOher1 && !_leftAlarmStates["M111"]) |
| | | { |
| | | string text = $"æ£8éå·¦ä¾§è¦ææºæï¼å
¶ä»æ
鿥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcOher1); |
| | | _leftAlarmStates["M111"] = true; |
| | | } |
| | | else if (!leftPLcOher1) |
| | | { |
| | | _leftAlarmStates["M111"] = false; |
| | | } |
| | | |
| | | } |
| | | if (leftPLcstuck1 == true && leftPLcOher1 == true)//妿æ¥è¦äº |
| | | { |
| | | string text = $"轨é{deid}ï¼æ¥è¦ä¼¸ç¼©å¡ä½æ¥è¦åå
¶ä»æ
鿥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1); |
| | | } |
| | | if (leftscram && !_leftAlarmStates["M110"]) |
| | | { |
| | | string text = $"æ£8éå·¦ä¾§è¦ææºæï¼æ¥åæ¥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftscram); |
| | | _leftAlarmStates["M110"] = true; |
| | | } |
| | | else if (!leftscram) |
| | | { |
| | | _leftAlarmStates["M110"] = false; |
| | | } |
| | | |
| | | if (leftstop && !_leftAlarmStates["M120"]) |
| | | { |
| | | string text = $"æ£8éå·¦ä¾§è¦ææºæï¼ééç¢åæ¢æ¥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftstop); |
| | | _leftAlarmStates["M120"] = true; |
| | | } |
| | | else if (!leftstop) |
| | | { |
| | | _leftAlarmStates["M120"] = false; |
| | | } |
| | | |
| | | |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new |
| | | { |
| | | device = "å·¦Plc", |
| | | Liftvalue = leftPLcNowAdd |
| | | }));//æD80ç»å端 |
| | | })); |
| | | } |
| | | } |
| | | catch (Exception) |
| | | { |
| | | string text = $"轨é{deid}ï¼å·¦PLCæªè¿æ¥"; |
| | | //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);//æ·»å æ°æ® |
| | | //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false); |
| | | } |
| | | |
| | | |
| | | // Right PLC processing |
| | | try |
| | | { |
| | | if (devices.Value.right.IsConnected)//æ¯å¦è¿æ¥ä¸ |
| | | if (devices.Value.right.IsConnected) |
| | | { |
| | | //å³plc |
| | | var rightPLcSuck = devices.Value.right.Communicator.Read<bool>("M109"); //å¡ä½æ¥è¦ |
| | | var rightPLcOher = devices.Value.right.Communicator.Read<bool>("M111");//å
¶ä»æ¥è¦ |
| | | var rightPLcSuck = devices.Value.right.Communicator.Read<bool>("M109"); // Servo alarm |
| | | var rightPLcOher = devices.Value.right.Communicator.Read<bool>("M111"); // Other alarm |
| | | var rightscram = devices.Value.right.Communicator.Read<bool>("M110"); // Emergency stop |
| | | var rightstop = devices.Value.right.Communicator.Read<bool>("M120"); // Obstacle stop |
| | | |
| | | var rightPLcNowAdd = devices.Value.right.Communicator.Read<float>("D80"); |
| | | Console.WriteLine($"{devices.Value.right.DeviceName}:å¡ä½æ¥è¦{rightPLcSuck}ï¼å
¶ä»æ¥è¦{rightPLcOher}"); |
| | | if (rightPLcSuck == true && rightPLcOher == false) |
| | | { |
| | | string text = $"轨é{deid}ï¼æ¥è¦ä¼¸ç¼©å¡ä½æ¥è¦"; |
| | | //æ¥è¦äºå¨è¿è°ç¨æ·»å æ¹æ³ï¼å¹¶ä¼ ç»å端 |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcSuck); |
| | | // _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserverè¿ç§åªè½ä¼ ç»å端jsonæ ¼å¼ |
| | | } |
| | | if (rightPLcOher == false && rightPLcSuck == true) |
| | | { |
| | | string text = $"轨é{deid}ï¼å
¶ä»æ
鿥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcOher); |
| | | } |
| | | if (rightPLcSuck == true && rightPLcOher == true)//妿æ¥è¦äº |
| | | { |
| | | string text = $"轨é{deid}ï¼æ¥è¦ä¼¸ç¼©å¡ä½æ¥è¦åå
¶ä»æ
鿥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcOher);//æ·»å æ°æ® |
| | | } |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new { |
| | | device="å³Plc", |
| | | Rightvalue= rightPLcNowAdd |
| | | }));//æD80ç»å端 |
| | | |
| | | |
| | | // Check and record alarms only when state changes from false to true |
| | | if (rightPLcSuck && !_rightAlarmStates["M109"]) |
| | | { |
| | | string text = $"æ£8éå³ä¾§è¦ææºæï¼æ¥è¦ä¼¸ç¼©å¡ä½æ¥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcSuck); |
| | | _rightAlarmStates["M109"] = true; |
| | | } |
| | | else if (!rightPLcSuck) |
| | | { |
| | | _rightAlarmStates["M109"] = false; |
| | | } |
| | | |
| | | if (rightPLcOher && !_rightAlarmStates["M111"]) |
| | | { |
| | | string text = $"æ£8éå³ä¾§è¦ææºæï¼å
¶ä»æ
鿥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcOher); |
| | | _rightAlarmStates["M111"] = true; |
| | | } |
| | | else if (!rightPLcOher) |
| | | { |
| | | _rightAlarmStates["M111"] = false; |
| | | } |
| | | |
| | | if (rightscram && !_rightAlarmStates["M110"]) |
| | | { |
| | | string text = $"æ£8éå³ä¾§è¦ææºæï¼æ¥åæ¥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightscram); |
| | | _rightAlarmStates["M110"] = true; |
| | | } |
| | | else if (!rightscram) |
| | | { |
| | | _rightAlarmStates["M110"] = false; |
| | | } |
| | | |
| | | if (rightstop && !_rightAlarmStates["M120"]) |
| | | { |
| | | string text = $"æ£8éå³ä¾§è¦ææºæï¼ééç¢åæ¢æ¥è¦"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightstop); |
| | | _rightAlarmStates["M120"] = true; |
| | | } |
| | | else if (!rightstop) |
| | | { |
| | | _rightAlarmStates["M120"] = false; |
| | | } |
| | | |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new |
| | | { |
| | | device = "å³Plc", |
| | | Rightvalue = rightPLcNowAdd |
| | | })); |
| | | } |
| | | } |
| | | catch (Exception) |
| | | { |
| | | string text = $"轨é{deid}ï¼å³PLCæªè¿æ¥"; |
| | | //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);//æ·»å æ°æ® |
| | | //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false); |
| | | } |
| | | |
| | | var alrt = _alarmResetHsyServer.GetWebSocketInfo(deid); |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt)); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | catch (Exception ex) |
| | | { |
| | | _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1); |
| | |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | public (OtherDevice left, OtherDevice right)? GetDevicesByDeptId(int deptId) |
| | | { |
| | | // 左设å¤å·ï¼1 -> 001ï¼2 -> 003ï¼3 -> 005... |
| | | int baseCode = 1 + (deptId - 1) * 2; |
| | | string leftCode = $"SSG{baseCode.ToString("D3")}"; |
| | | string rightCode = $"SSG{(baseCode + 1).ToString("D3")}"; |
| | |
| | | var left = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == leftCode); |
| | | var right = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == rightCode); |
| | | |
| | | |
| | | //if (left == null || right == null) |
| | | // return null; |
| | | |
| | | return (left, right); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |