From e533afd765bac692ed6eb5194b44a3bf6f927f17 Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-JIE70N9> Date: 星期四, 19 六月 2025 08:29:38 +0800 Subject: [PATCH] 遗留修改项 --- Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 115 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 98 insertions(+), 17 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs index 6e57018..b031d82 100644 --- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs +++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs @@ -53,6 +53,7 @@ private static List<ModbusUtil> listModbusUtil = new List<ModbusUtil>(); + public static List<ModbusUtil> modbusUtilConn { get { return listModbusUtil; } @@ -87,6 +88,7 @@ boDrumReversal = _sysConfigService.GetConfigValue<bool>("sys_DrumReversal").Result; boOutLock = _sysConfigService.GetConfigValue<bool>("sys_BoOutLock").Result; boEnterLock = _sysConfigService.GetConfigValue<bool>("sys_BoEnterLock").Result; + } /// <summary> /// 鍒濆鍖朠LC杩炴帴 @@ -210,15 +212,6 @@ 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 (Convert.ToInt32(value) == 0) continue; @@ -339,7 +332,7 @@ - Thread.Sleep(3000); + Thread.Sleep(2000); } catch (OperationCanceledException) { @@ -364,7 +357,7 @@ { while (true) { - Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�"); + //Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�"); //鍙栨秷绾跨▼ 鍏抽棴PLC杩炴帴 if (cts.Token.IsCancellationRequested) { @@ -377,17 +370,93 @@ } try { + + // 鑾峰彇瀵嗛泦搴撴湭鎵ц浠诲姟 鏍规嵁鍒涘缓鏃堕棿鎺掑簭 var waitTask = _db.Queryable<WcsTask>().Where(s => s.IsDelete == false && s.Status == TaskStatusEnum.Wait && s.Type == PLCTypeEnum.ShuttleCar).OrderBy(s => new {s.Levels, s.CreateTime}).First(); if (waitTask == null) { continue; } + var starLocate = ""; + var endLocate = ""; + var taskceng = 0; //01010101: 01鎺� 01鍒� 01灞� 01娣卞害-姝ら」鐩笉鍋氬垽鏂� - 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)); + if (waitTask.TaskType == TaskTypeEnum.In ) + { + //鍏ュ簱浠诲姟璧峰宸烽亾灏辨槸璧峰宸ヤ綅 + if (string.IsNullOrWhiteSpace(waitTask.StartRoadway) || string.IsNullOrWhiteSpace(waitTask.EndLocate)) + { + continue; + } + + taskceng = int.Parse(waitTask.StartRoadway.Substring(4, 2)); + starLocate = waitTask.StartRoadway; + endLocate = waitTask.EndLocate; + } + else if (waitTask.TaskType == TaskTypeEnum.Out) + { + taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2)); + starLocate = waitTask.StartLocate; + endLocate = waitTask.EndRoadway; + + #region 娣诲姞杈撻�佺嚎涓庝换鍔¢獙璇� + + + + var text = ""; + var devStation = ""; + var ip = ""; + var carcon = new carConverModel(); + if (carcon.conveyorBei.Keys.Contains(endLocate)) + { + text = "杈撻�佺嚎鍖�"; + ip = "10.26.254.10"; + devStation = carcon.conveyorBei[endLocate]; + } + else if (carcon.conveyorNan.Keys.Contains(endLocate)) + { + text = "杈撻�佺嚎鍗�"; + ip = "10.26.254.11"; + devStation = carcon.conveyorNan[endLocate]; + } + if (text != "") + { + //var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text); + //var modConn = new PLCUtil(modPlc); + var modConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == ip); + var modDevice = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation); + var (plcResult, palletVal) = modConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); + if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720) + { + continue;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂� + } + + var gongwei = carcon.conveyorRuKu[endLocate]; + //鍒ゆ柇浠诲姟 + var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei + && m.Type == PLCTypeEnum.ConveyorLine && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)); + if (convarTask != null) + { + continue;//鏀捐揣宸ヤ綅鏈変换鍔� + } + } + + + #endregion + } + else if (waitTask.TaskType == TaskTypeEnum.Move) + { + taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2)); + starLocate = waitTask.StartLocate; + endLocate = waitTask.EndLocate; + } + else + { + continue; + } + #region 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞� // 鑾峰彇鏈変换鍔$殑灏忚溅缂栧彿 @@ -426,6 +495,18 @@ break; //鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞 } } + var modCarPall = plcPosition.FirstOrDefault(s => s.Text == "鎵樼洏妫�娴�"); + var (resultPall, valuePall) = modbusUtil.GetDBValue(modCarPall.PosType, modCarPall.PlcPos); + //var modCarju = plcPosition.FirstOrDefault(s => s.Text == "涓惧崌浣嶇疆"); + //var (resultju, valueju) = modbusUtil.GetDBValue(modCarju.PosType, modCarju.PlcPos); + //if (resultPall.IsSucceed && valuePall == 1 && resultPall.IsSucceed && valuePall != 1) //1椤惰揣 2瀛愰�氶亾 3涓婚�氶亾 + //{ + // break; //鏆傜紦鍒嗛厤 + //} + if (resultPall.IsSucceed && valuePall == 1) //1鏈夋墭鐩� 2鏃犳墭鐩� + { + break; //鏆傜紦鍒嗛厤 + } //灏忚溅绌洪棽鍔犲叆闆嗗悎 if (value == 1) { @@ -444,7 +525,7 @@ { 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); + var d = FourWayCarUtil.GetCarPath(carVal, starLocate); kXCarList.Add(new CarInfo() { CarPlcIp = modbusUtil.PlcIP, @@ -487,7 +568,7 @@ //鍒ゆ柇灏忚溅浣嶇疆鏄惁涓庝换鍔$殑璧峰鍌ㄤ綅鐩稿悓,涓嶇浉鍚岋細鑾峰彇灏忚溅鍒板彇璐у偍浣嶈矾寰� 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); + var data1 = FourWayCarUtil.GetCarPath(carLocate, starLocate); var datas1 = FourWayCarUtil.GetCarPathUp(data1, 0); if (datas1 == null) { @@ -512,7 +593,7 @@ typeStr2 = 0; } //鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰� - var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, typeStr); + var data2 = FourWayCarUtil.GetCarPath(starLocate, endLocate, typeStr); var datas2 = FourWayCarUtil.GetCarPathUp(data2, typeStr2); if (datas2 == null) -- Gitblit v1.8.0