From ac2920c6c36227646c03a38c76a335120b449817 Mon Sep 17 00:00:00 2001
From: Zhang-Hong-Lin <a3219986988@163.com>
Date: 星期日, 06 七月 2025 18:29:13 +0800
Subject: [PATCH] 优先级
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs | 256 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 238 insertions(+), 18 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs"
index 4be4e95..8973d07 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ZXJ/ZXJJob.cs"
@@ -17,8 +17,10 @@
using System.Threading.Tasks;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Model.Models.System;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
@@ -29,46 +31,264 @@
[DisallowConcurrentExecution]
public class ZXJJob : JobBase, IJob
{
+ public static bool W_ZXJ_Heat = true;
+ public static bool W_TC_Heat = true;
+ public static bool W_GZJ_Heat = true;
private readonly ITaskService _taskService;
+ private readonly Idt_ThicknessHtyService _IThicknessHtyService;
+ private readonly Idt_WeightHtyService _IWeightHtyService;
WebSocketServer _webSocketServer;
- public ZXJJob(ITaskService taskService, WebSocketServer webSocketServer)
+ private readonly Idt_ErrormsginfoService _ErrormsginfoService;
+ public ZXJJob(ITaskService taskService, WebSocketServer webSocketServer,Idt_ErrormsginfoService errormsginfoService, Idt_ThicknessHtyService ThicknessHtyService, Idt_WeightHtyService WeightHtyService)
{
_taskService = taskService;//娉ㄥ叆
_webSocketServer = webSocketServer;
+ _ErrormsginfoService = errormsginfoService;
+ _IThicknessHtyService = ThicknessHtyService;
+ _IWeightHtyService = WeightHtyService;
}
public Task Execute(IJobExecutionContext context)
{
-
+ //return Task.CompletedTask;
bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
if (flag && value != null)
{
- OtherDevice device = (OtherDevice)value;
+
try
{
- //Example
- //device.GetValue 璇诲彇
- //device.SetValue 鍐欏叆
- //_taskService.Repository; //浠撳偍灞傦紝杩涜鏁版嵁搴撹闂�
- OHTReadData oHTReadData = new OHTReadData();
- //todo:璇诲彇璁惧鏁版嵁锛�
+ //澶╄溅PLC瀵硅薄
+ OtherDevice TCevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "澶╄溅");
+ if (TCevice.Communicator.IsConnected)
+ {
+ #region 璇诲彇澶╄溅璁惧鏁版嵁
+ OHTJob.oHTReadData.R_HeartBeat = TCevice.GetValue<DeviceDBName, bool>(DeviceDBName.R_HeartBeat);
+ OHTJob.oHTReadData.R_RunMode = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_RunMode);
+ OHTJob.oHTReadData.R_RunState = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_RunState);
+ OHTJob.oHTReadData.R_AlarmCode = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_AlarmCode);
+ OHTJob.oHTReadData.R_TaskState = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState);
+ OHTJob.oHTReadData.R_CurrentLine = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentLine);
+ OHTJob.oHTReadData.R_CurrentColumn = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_CurrentColumn);
+ OHTJob.oHTReadData.R_RiseUp_Position = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_RiseUp_Position);
+ OHTJob.oHTReadData.R_TaskNumber = TCevice.GetValue<DeviceDBName, int>(DeviceDBName.R_TaskNumber);
+ OHTJob.oHTReadData.R_Loaded_1 = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_1);
+ OHTJob.oHTReadData.R_Loaded_2 = TCevice.GetValue<DeviceDBName, short>(DeviceDBName.R_Loaded_2);
+ OHTJob.oHTReadData.weight = TCevice.GetValue<DeviceDBName, float>(DeviceDBName.weight);
+ #endregion
+ if (W_TC_Heat)
+ {
+ W_TC_Heat = false;
+ TCevice.SetValue(DeviceDBName.W_HeartBeat, W_TC_Heat);
+ }
+ else
+ {
+ W_TC_Heat = true;
+ TCevice.SetValue(DeviceDBName.W_HeartBeat, W_TC_Heat);
+ }
+ }
+ else
+ {
+ throw new Exception($"澶╄溅PLC杩炴帴澶辫触");
+ }
+ //鏁村舰鏈篜LC瀵硅薄
+ OtherDevice device = (OtherDevice)value;
+ if (device.Communicator.IsConnected)
+ {
+ #region 璇诲彇鏁村舰鏈鸿澶囨暟鎹�
+ OHTJob.oHTReadData.R_ZXJ_HeartBeat = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_HeartBeat);
+ OHTJob.oHTReadData.R_ZXJ_isWork = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_isWork);
+ OHTJob.oHTReadData.R_ZXJ_RGVMode = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_RGVMode);
+ OHTJob.oHTReadData.R_ZXJ_TCMode = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_TCMode);
+ OHTJob.oHTReadData.R_ZXJ_TC_isready = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ZXJ_TC_isready);
+ OHTJob.oHTReadData.R_TCMode_TC = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_TCMode_TC);
+ OHTJob.oHTReadData.R_TCMode_CC = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_TCMode_CC);
+ OHTJob.oHTReadData.R_HC_isReady = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_HC_isReady);
+ OHTJob.oHTReadData.R_HC_isReadyWork = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_HC_isReadyWork);
+ OHTJob.oHTReadData.R_issafe = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_issafe);
+ //鎬绘暟
+ OHTJob.oHTReadData.R_CommonRecorder = device.GetValue<ZXJDBName, Int16>(ZXJDBName.R_CommonRecorder);
+ OHTJob.oHTReadData.R_SpecialRecorder = device.GetValue<ZXJDBName, Int16>(ZXJDBName.R_SpecialRecorder);
+ OHTJob.oHTReadData.R_TotalWeight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TotalWeight);
+ //閲嶉噺鍘氬害涓娿�佷笅闄愬��
+ //鍘氬害
+ float tza1 = OHTJob.oHTReadData.R_TopLeftUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopLeftUp);
+ float tza2 = OHTJob.oHTReadData.R_TopLeftBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopLeftBelow);
+ float tzb1 = OHTJob.oHTReadData.R_TopMiddleUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopMiddleUp);
+ float tzb2 = OHTJob.oHTReadData.R_TopMiddleBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopMiddleBelow);
+ float tzc1 = OHTJob.oHTReadData.R_TopRightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopRightUp);
+ float tzc2 = OHTJob.oHTReadData.R_TopRightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopRightBelow);
+ float tzd1 = OHTJob.oHTReadData.R_CentreLeftUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreLeftUp);
+ float tzd2 = OHTJob.oHTReadData.R_CentreLeftBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreLeftBelow);
+ float tze1 = OHTJob.oHTReadData.R_CentreMiddleUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreMiddleUp);
+ float tze2 = OHTJob.oHTReadData.R_CentreMiddleBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreMiddleBelow);
+ float tzf1 = OHTJob.oHTReadData.R_CentreRightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreRightUp);
+ float tzf2 = OHTJob.oHTReadData.R_CentreRightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreRightBelow);
+ float tzg1 = OHTJob.oHTReadData.R_BottomLeftUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomLeftUp);
+ float tzg2 = OHTJob.oHTReadData.R_BottomLeftBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomLeftBelow);
+ float tzh1 = OHTJob.oHTReadData.R_BottomRightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomRightUp);
+ float tzh2 = OHTJob.oHTReadData.R_BottomRightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomRightBelow);
+ //閲嶉噺
+ float ws1 = OHTJob.oHTReadData.R_WeightUp = device.GetValue<ZXJDBName, float>(ZXJDBName.R_WeightUp);
+ float ws2 = OHTJob.oHTReadData.R_WeightBelow = device.GetValue<ZXJDBName, float>(ZXJDBName.R_WeightBelow);
+ //閲嶉噺鍘氬害鍊�
+ //鍘氬害
+ float tz1 = OHTJob.oHTReadData.R_TopLeft = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopLeft);
+ float tz2 = OHTJob.oHTReadData.R_TopMiddle = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopMiddle);
+ float tz3 = OHTJob.oHTReadData.R_TopRight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_TopRight);
+ float tz4 = OHTJob.oHTReadData.R_CentreLeft = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreLeft);
+ float tz5 = OHTJob.oHTReadData.R_CentreMiddle = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreMiddle);
+ float tz6 = OHTJob.oHTReadData.R_CentreRight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_CentreRight);
+ float tz7 = OHTJob.oHTReadData.R_BottomLeft = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomLeft);
+ float tz8 = OHTJob.oHTReadData.R_BottomRight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_BottomRight);
+ //閲嶉噺
+ float w = OHTJob.oHTReadData.R_Weight = device.GetValue<ZXJDBName, float>(ZXJDBName.R_Weight);
- //todo:璁惧鐘舵�佹暟鎹彂閫佺粰鍓嶇
-
+ //璁板綍閲嶉噺鍘氬害
+ bool thickness = OHTJob.oHTReadData.R_ThicknessRecorder = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_ThicknessRecorder);
+ bool weight = OHTJob.oHTReadData.R_WeightRecorder = device.GetValue<ZXJDBName, bool>(ZXJDBName.R_WeightRecorder);
+ #endregion
+ //璁板綍閲嶉噺涓庡帤搴�
+ //鍘氬害
+ if (thickness)
+ {
+ dt_Thickness_hty dt_thickness = new dt_Thickness_hty();
+ dt_thickness.topleft = tz1;
+ dt_thickness.topmiddle = tz2;
+ dt_thickness.topright = tz3;
+ dt_thickness.centreleft = tz4;
+ dt_thickness.centremiddle = tz5;
+ dt_thickness.centreright = tz6;
+ dt_thickness.bottomleft = tz7;
+ dt_thickness.bottomright = tz8;
+ //鍒ゆ柇鍚堟牸
+ if (tz1 < tza2 && tz1 > tza1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz2 < tzb2 && tz1 > tzb1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz3 < tzc2 && tz1 > tzc1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz4 < tzd2 && tz1 > tzd1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz5 < tze2 && tz1 > tze1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz6 < tzf2 && tz1 > tzf1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz7 < tzg2 && tz1 > tzg1)
+ {
+ dt_thickness.qualified = 1;
+ }else if (tz8 < tzh2 && tz1 > tzh1)
+ {
+ dt_thickness.qualified = 1;
+ }else
+ {
+ dt_thickness.qualified = 0;
+ }
+ //鍖洪棿鍊�
+ dt_thickness.interval = tza1 + "-" + tza2+","+ tzb1 + "-" + tzb2 + "," + tzc1 + "-" + tzc2 + "," + tzd1 + "-" + tzd2 + "," + tze1 + "-" + tze2 + "," + tzf1 + "-" + tzf2 + "," + tzg1 + "-" + tzg2 + "," + tzh1 + "-" + tzh2;
+ if(tz1 != 0 && tz2 != 0 && tz3 != 0 && tz4 != 0 && tz5 != 0 && tz6 != 0 && tz7 != 0 && tz8 != 0)
+ {
+ _IThicknessHtyService.AddData(dt_thickness);
+ }
+ device.SetValue(DeviceDBName.R_ThicknessSuccess, true);
+ //闃叉鏁村舰鏈烘病鏀跺埌淇″彿寤舵椂
+ Thread.Sleep(400);
+ device.SetValue(DeviceDBName.R_ThicknessSuccess, false);
+ //闃叉鏁村舰鏈轰笉鑳藉嵆浣挎洿鏀逛俊鍙峰鑷撮噸澶嶇敓鎴愯褰曪紝寤舵椂
+ Thread.Sleep(400);
+ }
+ //閲嶉噺
+ if (weight)
+ {
+ dt_Weight_hty dt_weight = new dt_Weight_hty();
+ dt_weight.weight = w;
+ //鍒ゆ柇鍚堟牸
+ if (w>ws1&&w<ws2)
+ {
+ dt_weight.qualified = 1;
+ }
+ else
+ {
+ dt_weight.qualified = 0;
+ }
+ //鍖洪棿鍊�
+ dt_weight.interval = ws1+"-"+ws2;
+ //涓嶅緱灏忎簬150澶т簬350
+ if (w > 150 && w < 350 && w!=0)
+ {
+ _IWeightHtyService.AddData(dt_weight);
+ }
+ device.SetValue(DeviceDBName.R_WeightSuccess, true);
+ bool c = device.GetValue<DeviceDBName, bool>(DeviceDBName.R_WeightSuccess);
+ //闃叉鏁村舰鏈烘病鏀跺埌淇″彿寤舵椂
+ Thread.Sleep(400);
+ device.SetValue(DeviceDBName.R_WeightSuccess, false);
+ //闃叉鏁村舰鏈轰笉鑳藉嵆浣挎洿鏀逛俊鍙峰鑷撮噸澶嶇敓鎴愯褰曪紝寤舵椂
+ Thread.Sleep(400);
+ }
-
- //WriteInfo(device.DeviceName, "infoLog");
-
- //WriteDebug(device.DeviceName, "debugLog");
+ if (W_ZXJ_Heat)
+ {
+ W_ZXJ_Heat = false;
+ device.SetValue(ZXJDBName.W_ZXJ_HeartBeat, W_ZXJ_Heat);
+ }
+ else
+ {
+ W_ZXJ_Heat = true;
+ device.SetValue(ZXJDBName.W_ZXJ_HeartBeat, W_ZXJ_Heat);
+ }
+ }
+ else
+ {
+ throw new Exception($"鏁村舰鏈篜LC杩炴帴澶辫触");
+ }
+ //瑙勬暣鏈篜LC瀵硅薄
+ OtherDevice GZJevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "闃虫瀬瑙勬暣鏈�");
+ if (GZJevice.Communicator.IsConnected)
+ {
+ #region 璇诲彇瑙勬暣鏈鸿澶囨暟鎹�
+ OHTJob.oHTReadData.R_ZXJ_HeartBeat = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_GZJ_HeartBeat);
+ OHTJob.oHTReadData.R_GZJ_isWork = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_GZJ_isWork);
+ OHTJob.oHTReadData.R_RGVMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_RGVMode);
+ OHTJob.oHTReadData.R_CCMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_CCMode);
+ OHTJob.oHTReadData.R_TCMode = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_TCMode);
+ OHTJob.oHTReadData.R_DK_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_DK_isready);
+ OHTJob.oHTReadData.R_XK_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_XK_isready);
+ OHTJob.oHTReadData.R_TC_isready = GZJevice.GetValue<GZJDBName, bool>(GZJDBName.R_TC_isready);
+ #endregion
+ if (W_GZJ_Heat)
+ {
+ W_GZJ_Heat = false;
+ GZJevice.SetValue(GZJDBName.W_GZJ_HeartBeat, W_GZJ_Heat);
+ }
+ else
+ {
+ W_GZJ_Heat = true;
+ GZJevice.SetValue(GZJDBName.W_GZJ_HeartBeat, W_GZJ_Heat);
+ }
+ }
+ else
+ {
+ throw new Exception($"瑙勬暣鏈篜LC杩炴帴澶辫触");
+ }
+ //鐘舵�佹暟鎹彂閫佺粰鍓嶇
+ string ohtData = JsonConvert.SerializeObject(OHTJob.oHTReadData);
+ _webSocketServer.PublishAllClientPayload(ohtData);
}
catch (Exception ex)
{
- WriteError(device.DeviceName, "閿欒", ex);
+ //鐘舵�佹暟鎹彂閫佺粰鍓嶇
+ string ohtData = JsonConvert.SerializeObject(OHTJob.oHTReadData);
+ _webSocketServer.PublishAllClientPayload(ohtData);
+ _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1);
}
}
-
-
return Task.CompletedTask;
}
--
Gitblit v1.9.3