| | |
| | | _DtPlatformStationService= dt_PlatformStationService; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | |
| | | |
| | | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (commonStackerCrane != null) |
| | | { |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | WriteLog.Write_Log("å åæºå½åç¶æ", "å åæºå½åç¶æä¿¡æ¯", $"å åæºè®¾å¤å°å:ãDB105.2.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.StackerCraneAutoStatusDes}ã\n" + |
| | | $"å åæºå·¥ä½æ¨¡å¼å°å:ãDB105.3.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.StackerCraneStatusDes}ã\n" + |
| | | $"å åæºä½ä¸ç¶æå°å:ãDB105.22.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.StackerCraneWorkStatusDes}ã\n" + |
| | | $"å åæºå½å任塿§è¡ä¸å°å:ãDB105.18.0ã,读åçæ°æ®ï¼ã{commonStackerCrane.CurrentTaskNum}ã\n"); |
| | | |
| | | |
| | | |
| | | |
| | | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal) |
| | | { |
| | |
| | | } |
| | | else if (taskItem.TaskType == (int)TaskTypeEnum.Inbound || taskItem.TaskType == (int)TaskTypeEnum.Inventorybound) |
| | | { |
| | | InTaskStationIsOccupied(taskItem.SourceAddress, taskItem.Roadway); |
| | | return taskItem; |
| | | } |
| | | } |
| | |
| | | |
| | | int StationNum = conveyorLine.Communicator.Read<ushort>(deviceProDTO.DeviceProAddress); |
| | | int HandShake = conveyorLine.Communicator.Read<ushort>(HandShakeprodto.DeviceProAddress); |
| | | conveyorLine.Communicator.Write<short>(HandShakeprodto.DeviceProAddress, 1); |
| | | |
| | | WriteLog.Write_Log("åºåºåºå£ç¶æä¿¡æ¯", "åºåºåºå£ç¶æä¿¡æ¯", $"åºå£æ¯ã{NextAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{HandShakeprodto.DeviceProAddress}ã,读åçæ°æ®ï¼ã{HandShake}ã\n" + |
| | | $"åºå£æ¯å¦æè´§ç¶æå°åï¼ã{deviceProDTO.DeviceProAddress}ãï¼è¯»åçæ°æ®ã{StationNum}ã"); |
| | |
| | | |
| | | return false; |
| | | } |
| | | /// <summary> |
| | | /// å
¥åºä»»å¡åºå£æè´§æ è´§ç¶æ |
| | | /// </summary> |
| | | private void InTaskStationIsOccupied(string SourceAddress, string Roadway) |
| | | { |
| | | try |
| | | { |
| | | if (Roadway == "C") |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1004"); |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SourceAddress && x.DeviceProParamName == "StationNum"); |
| | | DeviceProDTO? HandShakeprodto = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SourceAddress && x.DeviceProParamName == "HandShake"); |
| | | |
| | | int StationNum = conveyorLine.Communicator.Read<ushort>(deviceProDTO.DeviceProAddress); |
| | | int HandShake = conveyorLine.Communicator.Read<ushort>(HandShakeprodto.DeviceProAddress); |
| | | WriteLog.Write_Log("å
¥åºåºå£ç¶æä¿¡æ¯", "å
¥åºåºå£ç¶æä¿¡æ¯", $"åºå£æ¯ã{SourceAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{HandShakeprodto.DeviceProAddress}ã,读åçæ°æ®ï¼ã{HandShake}ã\n" + |
| | | $"åºå£æ¯å¦æè´§ç¶æå°åï¼ã{deviceProDTO.DeviceProAddress}ãï¼è¯»åçæ°æ®ã{StationNum}ã"); |
| | | } |
| | | else |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1003"); |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SourceAddress && x.DeviceProParamName == "StationNum"); |
| | | DeviceProDTO? HandShakeprodto = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SourceAddress && x.DeviceProParamName == "HandShake"); |
| | | |
| | | int StationNum = conveyorLine.Communicator.Read<ushort>(deviceProDTO.DeviceProAddress); |
| | | int HandShake = conveyorLine.Communicator.Read<ushort>(HandShakeprodto.DeviceProAddress); |
| | | WriteLog.Write_Log("å
¥åºåºå£ç¶æä¿¡æ¯", "å
¥åºåºå£ç¶æä¿¡æ¯", $"åºå£æ¯ã{SourceAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{HandShakeprodto.DeviceProAddress}ã,读åçæ°æ®ï¼ã{HandShake}ã\n" + |
| | | $"åºå£æ¯å¦æè´§ç¶æå°åï¼ã{deviceProDTO.DeviceProAddress}ãï¼è¯»åçæ°æ®ã{StationNum}ã"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("读åç«å°ä¿¡æ¯é误ï¼" + ex.Message); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å®ä½è½¬æ¢æå½ä»¤Model |
| | |
| | | /// <param name="stackerCraneWorkStatusDes"></param> |
| | | public void UpdateHandShake(int taskNum, string stackerCraneWorkStatusDes) |
| | | { |
| | | // 1. æ¥è¯¢ä»»å¡ï¼ç©ºå¼ç´æ¥è¿å |
| | | Dt_Task? dtTask = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (dtTask == null) return; |
| | | |
| | | // 2. å®ä¹åºå®å°å |
| | | string[] targetAddresses = { "G03", "G04", "C02", "C01" }; |
| | | |
| | | // 3. æ¡ä»¶å¤æ + ç¡®å®åå
¥å¼ |
| | | short writeValue = -1; |
| | | if (dtTask.TaskType == 100 && targetAddresses.Contains(dtTask.TargetAddress)) |
| | | try |
| | | { |
| | | writeValue = stackerCraneWorkStatusDes switch |
| | | Dt_Task? dtTask = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (dtTask == null) return; |
| | | |
| | | string[] targetAddresses = { "G03", "G04", "C02", "C01" }; |
| | | if (dtTask.TaskType != 100 || !targetAddresses.Contains(dtTask.TargetAddress)) |
| | | return; |
| | | |
| | | short writeValue = stackerCraneWorkStatusDes switch |
| | | { |
| | | "æ¾è´§ä¸" => 1, |
| | | "ä»»å¡å®æ" => 0, |
| | | _ => -1 |
| | | }; |
| | | } |
| | | |
| | | // 4. è·å设å¤ç¼ç |
| | | string deviceCode = dtTask.CurrentAddress.StartsWith("C") ? "1004" : "1003"; |
| | | if (writeValue == -1) return; |
| | | |
| | | // 5. è·å设å¤ï¼ç©ºå¼ç´æ¥è¿å |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == deviceCode); |
| | | if (device != null && writeValue != -1) |
| | | { |
| | | CommonConveyorLine? conveyorLine = (CommonConveyorLine)device; |
| | | string deviceCode = dtTask.CurrentAddress.StartsWith("C") ? "1004" : "1003"; |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == deviceCode); |
| | | if (device == null) return; |
| | | |
| | | // 6. è·åæ¡æç¹ä½ï¼ç©ºå¼ç´æ¥è¿å |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | DeviceProDTO? handShake = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == dtTask.TargetAddress && x.DeviceProParamName == "HandShake"); |
| | | if (handShake == null) |
| | | { |
| | | WriteLog.Write_Log("åºåºåºå£å
æ
ç¶æé误信æ¯", "åºåºåºå£å
æ
ç¶æé误信æ¯", $"WCSæªæ¾å°åºå£ä¿¡æ¯æ¯ã{dtTask.TargetAddress}ãï¼ä»»å¡å·ï¼ã{dtTask.TaskNum}ã,å åæºä½ä¸ç¶æï¼ã{stackerCraneWorkStatusDes}ã"); |
| | | return; |
| | | } |
| | | // 7. åå
¥å¼ |
| | | conveyorLine.Communicator.Write<short>(handShake.DeviceProAddress, writeValue); |
| | | WriteLog.Write_Log("åºåºåºå£å
æ
ç¶ææ£å¸¸ä¿¡æ¯", "åºåºåºå£å
æ
ç¶ææ£å¸¸ä¿¡æ¯", $"åºå£æ¯ã{dtTask.TargetAddress}ãï¼ç³è¯·ç¶æå°åï¼ã{handShake.DeviceProAddress}ã,读åçæ°æ®ï¼ã{conveyorLine.Communicator.Read<ushort>(handShake.DeviceProAddress)}ã\n" + |
| | | $"ä»»å¡å·ï¼ã{dtTask.TaskNum}ã,å åæºä½ä¸ç¶æï¼ã{stackerCraneWorkStatusDes}ã"); |
| | | return; |
| | | if (handShake == null) return; |
| | | |
| | | conveyorLine.Communicator.Write<short>(handShake.DeviceProAddress, writeValue); |
| | | } |
| | | else |
| | | catch |
| | | { |
| | | WriteLog.Write_Log("åºåºåºå£å
æ
ç¶æé误信æ¯", "åºåºåºå£å
æ
ç¶æé误信æ¯", $"åºå£æ¯ã{dtTask.TargetAddress}ãï¼ä»»å¡å·ï¼ã{dtTask.TaskNum}ã,å åæºä½ä¸ç¶æï¼ã{stackerCraneWorkStatusDes}ã"); |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |