From 8abc9481eafeb715b39a4f4f8d6f628a642e6b53 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 19 三月 2025 17:38:18 +0800 Subject: [PATCH] 优化AGV和输送线、产线对接逻辑 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/AGVsignal.cs | 118 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 82 insertions(+), 36 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/AGVsignal.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/AGVsignal.cs" index 4cb0717..3926374 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/AGVsignal.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/AGVsignal.cs" @@ -12,6 +12,7 @@ using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_Tasks.ConveyorLineJob.ConveyorLineExtend; +using WIDESEAWCS_Tasks.ProductionLineJob; namespace WIDESEAWCS_Tasks { @@ -29,39 +30,83 @@ { if (conveyor == null) throw new Exception("璇锋眰鏁版嵁涓虹┖"); if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("绔欑偣缂栧彿涓虹┖"); - CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "杈撻�佺嚎") as CommonConveyorLine; - if (!conveyorLine.IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + switch (conveyor.Station) + { + case "1001": + case "1008": + content = AGVRequestinConveyorLine(conveyor); + break; + case "MDX01": + content = AGVRequestinProductionLine(conveyor); + break; + default: throw new Exception($"鏈畾涔夌珯鍙板彿[Station锛歿conveyor.Station}]"); + } + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } + + /// <summary> + /// AGV鍜岃緭閫佺嚎浜や簰 + /// </summary> + /// <returns></returns> + public static WebResponseContent AGVRequestinConveyorLine(ConveyorLineDTO conveyor) + { + WebResponseContent content = new WebResponseContent(); + try + { + CommonConveyorLine? conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "杈撻�佺嚎") as CommonConveyorLine; + if (conveyorLine == null) throw new Exception("鏈壘鍒拌緭閫佺嚎璁惧淇℃伅"); + if (!conveyorLine.IsConnected) throw new Exception($"杈撻�佺嚎璁惧閫氳寮傚父"); + //conveyorLine.SetValue(ConveyorLine_AGV.WriteRGPutComplete, true, "1001");//浜哄伐鏀捐揣瀹屾垚 switch (conveyor.Type) { case 1: - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station); - if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station); + { + if (conveyor.Station == "1001") + { + content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station); + if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station); + } + else + { + content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station); + if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station); + } + } break; case 2: { - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station); - if (content.Status) + if (conveyor.Station == "1001") { - Thread.Sleep(1000); - conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, false, conveyor.Station); - conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, false, conveyor.Station); + content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station); + if (content.Status) + { + Thread.Sleep(1000); + conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, false, conveyor.Station); + conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, false, conveyor.Station); + } + } + else + { + content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station); + if (content.Status) + { + Thread.Sleep(1000); + conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, false, conveyor.Station); + conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, false, conveyor.Station); + } } } break; case 3: - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station); - if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station); + break; case 4: - { - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station); - if (content.Status) - { - Thread.Sleep(1000); - conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, false, conveyor.Station); - conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, false, conveyor.Station); - } - } + break; default: throw new Exception($"绫诲瀷鏈夎[Type锛歿conveyor.Type}]"); } @@ -73,35 +118,36 @@ } return content; } - - public static WebResponseContent AGVRequestin<T>(T conveyor) where T : ConveyorLineDTO, new() + /// <summary> + /// AGV鍜屼骇绾夸氦浜� + /// </summary> + /// <returns></returns> + public static WebResponseContent AGVRequestinProductionLine(ConveyorLineDTO conveyor) { WebResponseContent content = new WebResponseContent(); try { - if (conveyor == null) throw new Exception("璇锋眰鏁版嵁涓虹┖"); - if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("绔欑偣缂栧彿涓虹┖"); - CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "杈撻�佺嚎") as CommonConveyorLine; - if (!conveyorLine.IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + OtherDevice? ProductionLine = Storage.Devices.FirstOrDefault(x => x.DeviceCode == conveyor.Station) as OtherDevice; + if (ProductionLine == null) throw new Exception("鏈壘鍒颁骇绾胯澶囦俊鎭�"); + if (!ProductionLine.IsConnected) throw new Exception($"浜х嚎璁惧閫氳寮傚父"); + content.Status = ProductionLine.SetValue(ProductionLineDBName.WagvState, conveyor.Type); + if (!content.Status) throw new Exception("鍐欏叆AGV淇″彿澶辫触"); + var agvState = ProductionLine.GetValue<ProductionLineDBName, short>(ProductionLineDBName.agvState); + if (agvState == 3) throw new Exception("浜х嚎璁惧寮傚父"); switch (conveyor.Type) { case 1: - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station); - if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station); + if (agvState != conveyor.Type) throw new Exception("浜х嚎涓嶅厑璁歌繘鍏ヤ綔涓�"); break; case 2: - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station); + if (agvState != conveyor.Type) throw new Exception("浜х嚎涓嶅厑璁哥寮�"); break; case 3: - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station); - if (content.Status) content.Status = conveyorLine.GetValue<ConveyorLine_AGV, bool>(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station); + content.Status = ProductionLine.SetValue(ProductionLineDBName.Wrequest, 2); + if (content.Status) content.Status = ProductionLine.SetValue(ProductionLineDBName.WagvState, 0); break; - case 4: - content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station); - break; - default: throw new Exception($"绫诲瀷鏈夎[Type锛歿conveyor.Type}]"); } - content = content.Status ? content.OK() : content.Error(); + content = content.Status ? content.OK() : content.Error("鍐欏叆澶辫触"); } catch (Exception ex) { -- Gitblit v1.9.3