| | |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_TelescopicService; |
| | | using WIDESEAWCS_ISystemServices; |
| | | using WIDESEAWCS_Core.Helper; |
| | | |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | |
| | | private readonly IAlarmResetHsyServer _alarmResetHsyServer; |
| | | private readonly ISys_UserService _UserService; |
| | | WebSocketServer _webSocketServer; |
| | | |
| | | |
| | | |
| | | public AlarmResetJob(WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService) |
| | | private readonly Idt_ErrormsginfoService _ErrormsginfoService; |
| | | |
| | | |
| | | public AlarmResetJob(Idt_ErrormsginfoService errormsginfoService, WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService) |
| | | { |
| | | _webSocketServer = webSocketServer; |
| | | _alarmResetHsyServer = alarmResetHsyServer; |
| | | _UserService = UserService; |
| | | _ErrormsginfoService = errormsginfoService; |
| | | } |
| | | |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | |
| | | |
| | | //获取设备号 |
| | | // 获取设备配置 |
| | | OtherDevice serialPortDevice = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (serialPortDevice!=null) |
| | | //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 |
| | | |
| | | if (serialPortDevice.DeviceCode == "SSG001") |
| | | try |
| | | { |
| | | var leftPLcstuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警 |
| | | var leftPLcOher = serialPortDevice.Communicator.Read<bool>("M105"); //其他报警 //默认是false |
| | | Console.WriteLine($"{serialPortDevice.DeviceName}:卡住报警{leftPLcstuck},其他报警{leftPLcOher}"); |
| | | if (leftPLcstuck == true && leftPLcOher == false) |
| | | //if (leftPLcOher == false) |
| | | 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 leftPLcNowAdd = devices.Value.left.Communicator.Read<float>("D80"); |
| | | Console.WriteLine($"{devices.Value.left.DeviceName}:卡住报警{leftPLcstuck1},其他报警{leftPLcOher1}"); |
| | | if (leftPLcstuck1 == true && leftPLcOher1 == false) |
| | | { |
| | | string text = "轨道一:伸缩卡住报警"; |
| | | //报警了在这调用添加方法,并传给前端 |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck); |
| | | |
| | | } |
| | | if (leftPLcOher == true && leftPLcstuck == false) |
| | | { |
| | | string text = "轨道一:其他故障报警"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck); |
| | | |
| | | } |
| | | if (leftPLcstuck == true && leftPLcOher == true)//如果报警了 |
| | | { |
| | | string text = "轨道一:报警伸缩卡住报警和其他故障报警"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck); |
| | | |
| | | } |
| | | string text = $"轨道{deid}:伸缩卡住报警"; |
| | | //报警了在这调用添加方法,并传给前端 |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid,text, leftPLcstuck1); |
| | | |
| | | var alrt = _alarmResetHsyServer.GetWebSocketInfo(); |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));//websocketserver这种只能传给前端json格式 |
| | | |
| | | } |
| | | if (leftPLcstuck1 == false && leftPLcOher1 == true) |
| | | { |
| | | string text = $"轨道{deid}:其他故障报警"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1); |
| | | |
| | | } |
| | | if (leftPLcstuck1 == true && leftPLcOher1 == true)//如果报警了 |
| | | { |
| | | string text = $"轨道{deid}:报警伸缩卡住报警和其他故障报警"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1); |
| | | } |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new |
| | | { |
| | | device = "左Plc", |
| | | Liftvalue = leftPLcNowAdd |
| | | }));//把D80给前端 |
| | | } |
| | | } |
| | | else if (serialPortDevice.DeviceCode == "SSG002") |
| | | catch (Exception) |
| | | { |
| | | //右plc |
| | | var rightPLcSuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警 |
| | | var rightPLcOher = serialPortDevice.Communicator.Read<bool>("M105");//其他报警 |
| | | Console.WriteLine($"{serialPortDevice.DeviceName}:卡住报警{rightPLcSuck},其他报警{rightPLcOher}"); |
| | | if (rightPLcSuck == true && rightPLcOher == false) |
| | | { |
| | | string text = "轨道一:报警伸缩卡住报警"; |
| | | //报警了在这调用添加方法,并传给前端 |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcSuck); |
| | | // _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式 |
| | | } |
| | | if (rightPLcOher == true && rightPLcSuck == false) |
| | | { |
| | | string text = "轨道一:其他故障报警"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher); |
| | | } |
| | | if (rightPLcSuck == true && rightPLcOher == true)//如果报警了 |
| | | { |
| | | string text = "轨道一:报警伸缩卡住报警和其他故障报警"; |
| | | var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);//添加数据 |
| | | } |
| | | var alrt = _alarmResetHsyServer.GetWebSocketInfo(); |
| | | _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt)); |
| | | string text = $"轨道{deid}:左PLC未连接"; |
| | | //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);//添加数据 |
| | | } |
| | | |
| | | |
| | | try |
| | | { |
| | | 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 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给前端 |
| | | |
| | | } |
| | | } |
| | | catch (Exception) |
| | | { |
| | | string text = $"轨道{deid}:右PLC未连接"; |
| | | //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); |
| | | Console.WriteLine("错误信息:" + ex.Message); |
| | | Console.WriteLine(ex.StackTrace); |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |