| | |
| | | private readonly ITaskService _taskService; |
| | | private readonly Idt_ErrormsginfoService _ErrormsginfoService; |
| | | WebSocketServer _webSocketServer; |
| | | public OHTJob(ITaskService taskService, WebSocketServer webSocketServer,Idt_ErrormsginfoService errormsginfoService) |
| | | public OHTJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService) |
| | | { |
| | | _taskService = taskService;//注å
¥ |
| | | _webSocketServer = webSocketServer; |
| | |
| | | } |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | |
| | | bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); |
| | | if (flag && value != null) |
| | | { |
| | |
| | | var ZXJdevice = Storage.Devices.Find(v => v.DeviceName == "鳿æ´å½¢æº"); |
| | | //è§æ´æºPLC对象 |
| | | var GZJevice = Storage.Devices.Find(v => v.DeviceName == "é³æè§æ´æº"); |
| | | if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected) |
| | | { |
| | | return Task.CompletedTask; |
| | | } |
| | | //if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected) |
| | | //{ |
| | | // return Task.CompletedTask; |
| | | //} |
| | | try |
| | | { |
| | | #region å¤©è½¦å®æä»»å¡é»è¾ |
| | |
| | | { |
| | | throw new Exception(string.Format("天车åè´§å®æä»»å¡æªæ¥è¯¢å°ä»»å¡å·{0}", oHTReadData.R_TaskNumber)); |
| | | } |
| | | //å
¥åº |
| | | if (nawtask.TaskType == (int)TaskInboundTypeEnum.Inbound) |
| | | { |
| | | //妿任å¡çç¶ææ¯å¤©è½¦å
¥åºåè´§æ§è¡ä¸ |
| | | //妿任å¡çç¶ææ¯å¦æ¯å¤©è½¦å
¥åºåè´§æ§è¡ä¸ |
| | | if (nawtask.TaskState == (int)TaskInStatusEnum.Line_InGrabExecuting) |
| | | { |
| | | //ä¿®æ¹ç¶æ |
| | | WebResponseContent result = _taskService.UpdateTaskStatusToLine_Ingrab(nawtask); |
| | | if (result.Status) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | //åºåº |
| | | else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.Outbound) |
| | | { |
| | | //妿任å¡ç¶ææ¯å¤©è½¦åºåºåè´§æ§è¡ä¸ |
| | | //妿任å¡ç¶ææ¯å¦æ¯å¤©è½¦åºåºåè´§æ§è¡ä¸ |
| | | if (nawtask.TaskState == (int)TaskOutStatusEnum.Line_OutGrabExecuting) |
| | | { |
| | | //ä¿®æ¹ç¶æ |
| | | WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask); |
| | | if (result.Status) |
| | | { |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 3); |
| | | } |
| | | } |
| | | } |
| | | //ç´æ¥åºåº |
| | | else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.OutInventory) |
| | | { |
| | | //ä¿®æ¹ç¶æ |
| | | WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask); |
| | | if (result.Status) |
| | | { |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 3); |
| | | } |
| | | } |
| | | return Task.CompletedTask; |
| | |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | else if (oHTReadData.R_RunState == (int)RunStateEnum.MoveCompleted && oHTReadData.R_TaskState == (int)TaskStateEnum.TaskComplete) |
| | | { |
| | | //天车移å¨å®æ |
| | | WebResponseContent result = _taskService.StackCraneTaskCompleted(oHTReadData.R_TaskNumber, oHTReadData.weight); |
| | | if (result.Status) |
| | | { |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 3); |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | #endregion |
| | | |
| | | #region 天车åéä»»å¡é»è¾ |
| | | if (oHTReadData.R_RunMode == (int)RunModeEnum.Automatic && oHTReadData.R_AlarmCode == (int)AlarmCodeEnum.Normal) |
| | | if (oHTReadData.R_RunMode == (int)RunModeEnum.Automatic) |
| | | { |
| | | if (oHTReadData.R_RunState == (int)RunStateEnum.Standby) |
| | | { |
| | | Dt_Task? task = GetTask(InorOut); |
| | | if (task != null) |
| | | //æ¥ç任塿± 䏿¯å¦å卿§è¡ä¸çä»»å¡ |
| | | var tasking = _taskService.QueryTasking(); |
| | | if (tasking==null) |
| | | { |
| | | OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task); |
| | | if (oHTTaskCommand != null) |
| | | Dt_Task? task = GetTask(InorOut); |
| | | if (task != null) |
| | | { |
| | | //todoï¼åå
¥ä»»å¡å½ä»¤ |
| | | device.SetValue(DeviceDBName.W_Task_Type, oHTTaskCommand.W_Task_Type); |
| | | device.SetValue(DeviceDBName.W_Pick_Line, oHTTaskCommand.W_Pick_Line); |
| | | device.SetValue(DeviceDBName.W_Pick_Column, oHTTaskCommand.W_Pick_Column); |
| | | device.SetValue(DeviceDBName.W_Put_Line, oHTTaskCommand.W_Put_Line); |
| | | device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column); |
| | | device.SetValue(DeviceDBName.W_Catch_1, oHTTaskCommand.W_Catch_1); |
| | | device.SetValue(DeviceDBName.W_Catch_2, oHTTaskCommand.W_Catch_2); |
| | | device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber); |
| | | device.SetValue(DeviceDBName.W_CheckValue, oHTTaskCommand.W_CheckValue); |
| | | //确认信å·åå
¥1ï¼ä»»å¡ä¸è¾¾å®æ |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 1); |
| | | Thread.Sleep(500); |
| | | //WCSæ£æµå°å¤©è½¦çR_TaskState=1ï¼éè¿W_ConfirmSignalç½®2表示让天车å¼å§æ§è¡ä»»å¡ |
| | | int R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState); |
| | | if (R_TaskState == 1) |
| | | OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task); |
| | | if (oHTTaskCommand != null) |
| | | { |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 2); |
| | | //ç»å¤©è½¦ä¸åä»»å¡ä¹åå°æ¤å¼å0 |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 0); |
| | | //todoï¼åå
¥ä»»å¡å½ä»¤ |
| | | device.SetValue(DeviceDBName.W_Task_Type, oHTTaskCommand.W_Task_Type); |
| | | device.SetValue(DeviceDBName.W_Pick_Line, oHTTaskCommand.W_Pick_Line); |
| | | device.SetValue(DeviceDBName.W_Pick_Column, oHTTaskCommand.W_Pick_Column); |
| | | device.SetValue(DeviceDBName.W_Put_Line, oHTTaskCommand.W_Put_Line); |
| | | device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column); |
| | | device.SetValue(DeviceDBName.W_Catch_1, oHTTaskCommand.W_Catch_1); |
| | | device.SetValue(DeviceDBName.W_Catch_2, oHTTaskCommand.W_Catch_2); |
| | | device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber); |
| | | device.SetValue(DeviceDBName.W_CheckValue, oHTTaskCommand.W_CheckValue); |
| | | //确认信å·åå
¥1ï¼ä»»å¡ä¸è¾¾å®æ |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 1); |
| | | Thread.Sleep(500); |
| | | //WCSæ£æµå°å¤©è½¦çR_TaskState=1ï¼éè¿W_ConfirmSignalç½®2表示让天车å¼å§æ§è¡ä»»å¡ |
| | | int R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState); |
| | | if (R_TaskState == 1) |
| | | { |
| | | device.SetValue(DeviceDBName.W_ConfirmSignal, 2); |
| | | } |
| | | //ä¸åæåï¼ä¿®æ¹ä»»å¡ç¶æ |
| | | _taskService.UpdateTaskStatus(task.TaskId, oHTTaskCommand.W_Task_Type); |
| | | } |
| | | //ä¸åæåï¼ä¿®æ¹ä»»å¡ç¶æ |
| | | _taskService.UpdateTaskStatus(task.TaskNum, oHTTaskCommand.W_Task_Type); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _ErrormsginfoService.UpdateErrorMsg(ex.Message,1); |
| | | _ErrormsginfoService.UpdateErrorMsg(ex.Message, 1); |
| | | } |
| | | } |
| | | return Task.CompletedTask; |
| | |
| | | { |
| | | OHTTaskCommand oHtTaskCommand = new OHTTaskCommand(); |
| | | |
| | | if (task.TaskState==(int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | if (task.TaskState == (int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | { |
| | | oHtTaskCommand.W_Task_Type = 2; |
| | | string[] SourceCodes = task.SourceAddress.Split("-"); |
| | |
| | | oHtTaskCommand.W_Pick_Line = Convert.ToInt16(SourceCodes[0]); |
| | | oHtTaskCommand.W_Pick_Column = Convert.ToInt16(SourceCodes[1]); |
| | | oHtTaskCommand.W_Put_Line = 0; |
| | | oHtTaskCommand.W_Put_Column = 0; |
| | | oHtTaskCommand.W_Put_Column = 0; |
| | | } |
| | | else |
| | | { |
| | |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任塿ºå°åé
ç½®é误ï¼"); |
| | | return null; |
| | | } |
| | | oHtTaskCommand.W_CheckValue = task.TaskType + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]); |
| | | oHtTaskCommand.W_CheckValue = 2 + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]); |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.Line_Ingrab || task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) |
| | | { |
| | |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任塿ºå°åé
ç½®é误ï¼"); |
| | | return null; |
| | | } |
| | | oHtTaskCommand.W_CheckValue = task.TaskType + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]); |
| | | oHtTaskCommand.W_CheckValue = 3 + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]); |
| | | } |
| | | else if(task.TaskState == (int)TaskMoveStatusEnum.OutNewMove ) |
| | | { |
| | | oHtTaskCommand.W_Task_Type = 4; |
| | | string[] SourceCodes = task.TargetAddress.Split("-"); |
| | | if (SourceCodes.Length == 3) |
| | | { |
| | | oHtTaskCommand.W_Pick_Line = 0; |
| | | oHtTaskCommand.W_Pick_Column = 0; |
| | | oHtTaskCommand.W_Put_Line = Convert.ToInt16(SourceCodes[0]); |
| | | oHtTaskCommand.W_Put_Column = Convert.ToInt16(SourceCodes[1]); |
| | | } |
| | | else |
| | | { |
| | | //æ°æ®é
ç½®é误 |
| | | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"任塿ºå°åé
ç½®é误ï¼"); |
| | | return null; |
| | | } |
| | | oHtTaskCommand.W_CheckValue = 4 + Convert.ToInt16(SourceCodes[0]) + Convert.ToInt16(SourceCodes[1]); |
| | | } |
| | | |
| | | if (task.WMSId==1) |
| | |
| | | InorOut = "In"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (workType.Equals("In")) |
| | | { |
| | | InorOut = "Out"; |
| | | } |
| | | else |
| | | { |
| | | InorOut = "In"; |
| | | } |
| | | } |
| | | return task; |
| | | } |
| | | } |