From c5de0d98241f8c8349fa38851b77efcfc61e4d26 Mon Sep 17 00:00:00 2001 From: yanjinhui <3306209981@qq.com> Date: 星期二, 29 七月 2025 15:42:00 +0800 Subject: [PATCH] 前端代码 --- 项目代码/后端/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs | 203 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 135 insertions(+), 68 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs" index 1d08638..4fc54c3 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs" @@ -16,18 +16,34 @@ 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) { @@ -37,15 +53,10 @@ _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 鏃犳硶杞崲涓烘暣鏁�"); @@ -53,93 +64,155 @@ var devices = GetDevicesByDeptId(deid); if (devices != null) { - //棣栧厛瑕佷竴鐩磋锛屽鏋滃彂鐢熶簡鏁呴殰瑕佸啓鍒癬alarmResetHsyServer涓褰曚笅鏉ュ苟涓旂粰鍒板墠绔暟鎹� - //宸lc - 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"); //鍏朵粬鎶ヨ //榛樿鏄痜alse + 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 = "宸lc", Liftvalue = leftPLcNowAdd - }));//鎶奃80缁欏墠绔� + })); } } 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) { - //鍙硃lc - 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="鍙砅lc", - Rightvalue= rightPLcNowAdd - }));//鎶奃80缁欏墠绔� + + // 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 = "鍙砅lc", + 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); @@ -148,9 +221,9 @@ } 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")}"; @@ -158,13 +231,7 @@ 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); } } -} - - +} \ No newline at end of file -- Gitblit v1.9.3