From 3e9a6a06132b06b8c2568f900df936ccc654bd58 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期二, 29 四月 2025 14:09:20 +0800 Subject: [PATCH] 修改问题,添加四向车车充电流程 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 148 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 132 insertions(+), 16 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 371e13a..a25f1e5 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -6,6 +6,7 @@ using Furion.Logging; using IoTClient; using NewLife.Reflection; +using SixLabors.ImageSharp.ColorSpaces; using WCS.Application.Entity; using WCS.Application.Util; @@ -171,8 +172,8 @@ var carTask = _db.Queryable<WcsCarTasks>().First(m=>m.IsDelete == false && m.Status == TaskStatusEnum.Doing && m.CarTaskNo == valueTaskStr && m.CarNo == modDevice.PlcIdIP); if (carTask == null) { - var modRests = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅"); - plcConn.SetDBValue(modRests.PosType, modRests.PlcPos, "1");//娌℃湁鎵惧埌浠诲姟 澶嶄綅 + //var modRests = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅"); + //plcConn.SetDBValue(modRests.PosType, modRests.PlcPos, "1");//娌℃湁鎵惧埌浠诲姟 澶嶄綅 return; } @@ -207,6 +208,14 @@ modFinshTask.FinishDate = DateTime.Now; _db.Updateable(modFinshTask).ExecuteCommand(); + //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠� + if (modFinshTask.Levels == 888) + { + //鍐欏叆寮�濮嬪厖鐢� + var modCd = modDevice.listStation.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护"); + plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2"); + } + //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚 //HttpService httpService = new HttpService(); //var requestMode = new TaskRequestWMS() @@ -225,14 +234,6 @@ } - var modStationX = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(X)"); - var (resultx, valuex) = plcConn.GetDBValue(modStationX.PosType, modStationX.PlcPos); - var modStationY = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Y)"); - var (resulty, valuey) = plcConn.GetDBValue(modStationY.PosType, modStationY.PlcPos); - var modStationZ = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Z)"); - var (resultz, valuez) = plcConn.GetDBValue(modStationZ.PosType, modStationZ.PlcPos); - - WcsTask modTask; //瑕佷笅鍙戣矾寰�2浠诲姟 if (carTaskNext != null) @@ -245,17 +246,122 @@ { // 鑾峰彇浠诲姟淇℃伅 modTask = _db.Queryable<WcsTask>().Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP).OrderBy(m => m.Levels).OrderBy(m => m.CreateTime).First(); - if (modTask == null) + if (modTask != null) { - return; + carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First(); } - carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First(); } - //return; + //璇诲彇灏忚溅浣嶇疆 + var modStationX = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(X)"); + var (resultx, valuex) = plcConn.GetDBValue(modStationX.PosType, modStationX.PlcPos); + var modStationY = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Y)"); + var (resulty, valuey) = plcConn.GetDBValue(modStationY.PosType, modStationY.PlcPos); + var modStationZ = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Z)"); + var (resultz, valuez) = plcConn.GetDBValue(modStationZ.PosType, modStationZ.PlcPos); + var carXYZ = valuex.ToString().PadLeft(2, '0') + valuey.ToString().PadLeft(2, '0') + valuez.ToString().PadLeft(2, '0'); if (modTask == null || carTaskNext == null) { - //鍒ゆ柇灏忚溅鏄惁鏈夌┖闂叉椂闂磋褰� 娌℃湁锛氭坊鍔� 鏈夛細鍒ゆ柇褰撳墠鏃堕棿涓庤褰曟椂闂存槸鍚︽弧瓒�5鍒嗛挓 婊¤冻锛氭坊鍔犺灏忚溅鍘诲厖鐢典换鍔� + //璇诲彇灏忚溅鐢甸噺 + var modPosCarDl = modDevice.listStation.FirstOrDefault(s => s.Text == "鐢垫睜鐢甸噺"); + var (resultDl, valueDl) = plcConn.GetDBValue(modPosCarDl.PosType, modPosCarDl.PlcPos); + if (resultDl.IsSucceed && valueDl < FourWayCarDLEnum.Dl) + { + var endLocateCar = ""; + if (valuez == 1) + { + endLocateCar = "210401"; + } + else if (valuez == 2) + { + endLocateCar = "210402"; //011202 + } + else + { + return; // 灞傛暟閿欒 + } + //娣诲姞灏忚溅鍏呯數浣嶇疆 + WcsTask modCarTask = new WcsTask() + { + TaskNo = _taskService.GetTaskCode(), + TaskType = TaskTypeEnum.Move, + Type = PLCTypeEnum.ShuttleCar, + StartLocate = carXYZ, + EndLocate = endLocateCar, + PalletNo = "", + Status = TaskStatusEnum.Wait, + Levels = 888, //鍏呯數绛夌骇浼樺厛浠诲姟绛夌骇 + Origin = "WCS", + CarIp = modDevice.PlcIdIP + }; + _db.Insertable(modCarTask).ExecuteCommand(); + HubUtil.PublicTask(modCarTask.Adapt<WcsTaskOutput>()); + } + else if(resultDl.IsSucceed && valueDl < FourWayCarDLEnum.Dl2) + { + //鍒ゆ柇灏忚溅鏄惁鏈夌┖闂叉椂闂磋褰� 娌℃湁锛氭坊鍔� 鏈夛細鍒ゆ柇褰撳墠鏃堕棿涓庤褰曟椂闂存槸鍚︽弧瓒�5鍒嗛挓 婊¤冻锛氭坊鍔犺灏忚溅鍘诲厖鐢典换鍔� + var carTime = _db.Queryable<WcsCarTime>().First(m => m.IsDelete == false && m.CarIp == modDevice.PlcIdIP); + if (carTime == null) + { + var carTimeAdd = new WcsCarTime() + { + CarIp = modDevice.PlcIdIP, + CarTime = DateTime.Now + }; + _db.Insertable(carTimeAdd).ExecuteCommand(); + } + else + { + if (carTime.CarTime == null) + { + carTime.CarTime = DateTime.Now; + carTime.UpdateTime = DateTime.Now; + _db.Updateable(carTime).ExecuteCommand(); + } + else + { + var date1 = DateTime.Now; + var data2 = (DateTime)carTime.CarTime; + TimeSpan interval = date1 - data2; + if (interval.TotalMinutes >= 5) + { + var endLocateCar = ""; + if (valuez == 1) + { + endLocateCar = "011201"; + } + else if (valuez == 2) + { + endLocateCar = "011202"; + } + else + { + return; // 灞傛暟閿欒 + } + //娣诲姞灏忚溅鍏呯數浣嶇疆 + WcsTask modCarTask = new WcsTask() + { + TaskNo = _taskService.GetTaskCode(), + TaskType = TaskTypeEnum.Move, + Type = PLCTypeEnum.ShuttleCar, + StartLocate = carXYZ, + EndLocate = endLocateCar, + PalletNo = "", + Status = TaskStatusEnum.Wait, + Levels = 888, //鍏呯數绛夌骇浼樺厛浠诲姟绛夌骇 + Origin = "WCS", + CarIp = modDevice.PlcIdIP + }; + _db.Insertable(modCarTask).ExecuteCommand(); + HubUtil.PublicTask(modCarTask.Adapt<WcsTaskOutput>()); + } + } + + + } + } + + return; } @@ -264,6 +370,7 @@ Thread.Sleep(3000); return; } + //鍒ゆ柇褰撳墠浠诲姟鏄惁杩樻湁鍓嶇疆浠诲姟鏈畬鎴� var preStrs = carTaskNext.PreId.Split(';'); foreach (var preStr in preStrs) @@ -279,6 +386,7 @@ return;//鍓嶇疆浠诲姟鏈畬鎴� } } + //鍏堝浣� var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅"); plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1"); @@ -286,7 +394,15 @@ List<Result> listResult = new List<Result>(); //鑾峰彇灏忚溅浠诲姟鍙� var carTaskNo = FourWayCarUtil.GetTaskNo(); - + + //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟 + if (modTask.Levels == 888) + { + //鍐欏叆鍏呯數鍛戒护 + var modCd = modDevice.listStation.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护"); + listResult.Add(plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "1")); + } + var modWriteTask = modDevice.listStation.FirstOrDefault(s => s.Text == "鍐欏叆浠诲姟鍙�"); listResult.Add(plcConn.SetDBValue(modWriteTask.PosType, modWriteTask.PlcPos, carTaskNo.ToString())); -- Gitblit v1.8.0