From c2bed218cc875e59fff53ef43a187d5934bdf35c Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期日, 27 四月 2025 14:59:20 +0800 Subject: [PATCH] 修改优化问题 --- Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 94 ++++++++++++++++++++++++++++++----------------- 1 files changed, 60 insertions(+), 34 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs index e6932f9..17bcb90 100644 --- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs +++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs @@ -143,7 +143,7 @@ StartRead(); ConnectionStatus(); StartWatchAlarm(); - //AssignTasks(); + AssignTasks(); //StartWatchPosition(); } } @@ -209,15 +209,15 @@ var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); if (result.IsSucceed) { - //濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺� - if (modPlc.Type == PLCTypeEnum.ShuttleCar) - { - var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault(); - if (modHeart != null) - { - modPlcUtil.SetPlcDBValue(modHeart.PosType, modHeart.PlcPos, "1"); - } - } + ////濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺� + //if (modPlc.Type == PLCTypeEnum.ShuttleCar) + //{ + // var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault(); + // if (modHeart != null) + // { + // modPlcUtil.SetPlcDBValue(modHeart.PosType, modHeart.PlcPos, "1"); + // } + //} //鏃犳祦绋嬭烦鍑� if (Convert.ToInt32(value) == 0) continue; @@ -265,11 +265,22 @@ var (result, value) = modbusUtil.GetDBValue(modDevice.PosType, modDevice.PlcPos); if (result.IsSucceed) { + //濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺� + if (modPlc.Type == PLCTypeEnum.ShuttleCar) + { + var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault(); + if (modHeart != null) + { + modbusUtil.SetDBValue(modHeart.PosType, modHeart.PlcPos, "1"); + } + } + //鏃犳祦绋嬭烦鍑� if (value == 0) continue; var dto = modDevice.Adapt<WcsDeviceDto>(); dto.Value = value; + dto.PlcIdIP = modPlc.IP; dto.Type = _modplc.Type; dto.modbusUtil = modbusUtil; dto.listStation = listPlcPosition.Where(s => s.DeviceId == modDevice.Id).ToList(); @@ -367,10 +378,13 @@ { // 鑾峰彇瀵嗛泦搴撴湭鎵ц浠诲姟 鏍规嵁鍒涘缓鏃堕棿鎺掑簭 var waitTask = _db.Queryable<WcsTask>().Where(s => s.IsDelete == false && s.Status == TaskStatusEnum.Wait && s.Type == PLCTypeEnum.ShuttleCar).OrderBy(s => s.CreateTime).First(); - + if (waitTask == null) + { + continue; + } //01010101: 01鎺� 01鍒� 01灞� 01娣卞害-姝ら」鐩笉鍋氬垽鏂� - var taskpai = int.Parse(waitTask.StartLocate.Substring(4, 2)); - var tasklie = int.Parse(waitTask.StartLocate.Substring(4, 2)); + var taskpai = int.Parse(waitTask.StartLocate.Substring(0, 2)); + var tasklie = int.Parse(waitTask.StartLocate.Substring(2, 2)); var taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2)); #region 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞� @@ -380,6 +394,7 @@ // 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞︼紙鏍规嵁灏忚溅浠诲姟琛ㄦ槸鍚︽湁浠诲姟鍜屽皬杞︾姸鎬佸叡鍚屽垽鏂皬杞︽槸鍚︾┖闂�) var kXCarList = new List<CarInfo>(); + var carErr = false;//灏忚溅鏄惁鏈夊け鑱旂殑 foreach (var modbusUtil in listModbusUtil) { //濡傛灉灏忚溅鏈夋湭鎵ц鐨勪换鍔★紝璺冲嚭 @@ -414,7 +429,8 @@ if (!kXCarList.Any(m => m.CarPlcIp == modbusUtil.PlcIP)) { var carVal = ((int)valuex).ToString().PadLeft(2, '0') + ((int)valuey).ToString().PadLeft(2, '0') + ((int)valuez).ToString().PadLeft(2, '0'); - var d = FourWayCarUtil.GetCarPath(carVal, waitTask.StartLocate, 0); + //灏忚溅鍒板彇璐у偍浣嶈矾寰� + var d = FourWayCarUtil.GetCarPath(carVal, waitTask.StartLocate); kXCarList.Add(new CarInfo() { CarPlcIp = modbusUtil.PlcIP, @@ -430,8 +446,15 @@ else { Console.WriteLine($"璇诲彇鍥涘悜杞modbusUtil.PlcIP}鐘舵�佸け璐�"); - return;//鏈変竴涓皬杞﹁鍙栧け璐ヨ烦鍑烘柟娉曪紝鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞 + carErr = true; + break;//鏈変竴涓皬杞﹁鍙栧け璐ヨ烦鍑烘柟娉曪紝鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞 } + } + //鏈夊皬杞﹀け鑱旓紝涓嶅垎閰嶄换鍔� + if (carErr) + { + kXCarList.Clear();//娓呮绌鸿溅璁板綍 + break; } } @@ -442,7 +465,7 @@ var assignCar = kXCarList.OrderBy(m => m.Level).FirstOrDefault(); if (assignCar == null) { - break;//娌℃湁绌洪棽灏忚溅 + continue;//娌℃湁绌洪棽灏忚溅 } var data = new List<CarModel>(); if (assignCar.Level != 0) @@ -450,14 +473,15 @@ //鍒ゆ柇灏忚溅浣嶇疆鏄惁涓庝换鍔$殑璧峰鍌ㄤ綅鐩稿悓,涓嶇浉鍚岋細鑾峰彇灏忚溅鍒板彇璐у偍浣嶈矾寰� var carLocate = assignCar.X.ToString().PadLeft(2, '0')+assignCar.Y.ToString().PadLeft(2, '0')+ assignCar.Z.ToString().PadLeft(2, '0'); //鑾峰彇灏忚溅鍘诲彇璐у偍浣嶄换鍔¤矾寰� - var data1 = FourWayCarUtil.GetCarPath(carLocate, waitTask.StartLocate, 0); - data.AddRange(data1); + var data1 = FourWayCarUtil.GetCarPath(carLocate, waitTask.StartLocate); + var datas = FourWayCarUtil.GetCarPathUp(data1, 0); + data.AddRange(datas); } //鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰� - var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, 2, "1"); - - data.AddRange(data2); - if (data == null) { break; } + var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, "1"); + var datas2 = FourWayCarUtil.GetCarPathUp(data2, 1); + data.AddRange(datas2); + if (data == null) { continue; } var preId1 = "";//鍓嶇疆浠诲姟Id var executionPath1 = "";//浜や簰璺緞 @@ -478,10 +502,10 @@ //鍒ゆ柇濡傛灉鏄畬鏁磋矾寰� 璁板綍浜や簰璺緞 if (isOk == "1") { - if (i == 0) - { - return;//绗竴涓妭鐐规湁鍜屽叾浠栦换鍔¤矾寰勫啿绐侊紝鏃犳硶閬垮厤 - } + //if (i == 0) + //{ + // return;//绗竴涓妭鐐规湁鍜屽叾浠栦换鍔¤矾寰勫啿绐侊紝鏃犳硶閬垮厤 + //} var pathXYZQian = data[i - 1].X.ToString().PadLeft(2, '0') + data[i - 1].Y.ToString().PadLeft(2, '0') + data[i - 1].Z.ToString().PadLeft(2, '0') + data[i].NodeCom.ToString(); if (!executionPath1.Contains(pathXYZQian)) { @@ -540,14 +564,15 @@ var endLocate3 = ""; var executionPath3 = ""; var path3 = ""; - var data3 = new List<CarModel>(); + var datas3 = new List<CarModel>(); //鏌ユ壘鐩爣浣嶇疆 - while (endLocate3 == "" || data3.Count == 0 || data3 == null) + while (endLocate3 == "" || datas3.Count == 0 || datas3 == null) { endLocate3 = FourWayCarUtil.GetCarEndLocation(carXYZ, str3); - data3 = FourWayCarUtil.GetCarPath(carXYZ, endLocate3, 0, "0"); + var data3 = FourWayCarUtil.GetCarPath(carXYZ, endLocate3, "0"); + datas3 = FourWayCarUtil.GetCarPathUp(data3, 0); } - foreach (var itemPath in data3) + foreach (var itemPath in datas3) { var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString(); @@ -612,14 +637,15 @@ var endLocate = ""; var executionPath4 = ""; var path4 = ""; - var data4 = new List<CarModel>(); + var datas4 = new List<CarModel>(); //鏌ユ壘鐩爣浣嶇疆 - while (endLocate == "" || data4.Count == 0 || data4 == null) + while (endLocate == "" || datas4.Count == 0 || datas4 == null) { endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4); - data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate, 0, "0"); + var data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate); + datas4 = FourWayCarUtil.GetCarPathUp(data4, 0); } - foreach (var itemPath in data4) + foreach (var itemPath in datas4) { var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString(); -- Gitblit v1.8.0