From aa76e0acd1337d82ddef1d5a34b245c988ecfc13 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期五, 30 五月 2025 18:25:25 +0800
Subject: [PATCH] 修改问题

---
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs |  109 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 89 insertions(+), 20 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 08712ca..6eeb443 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(5000);
                     }
                     catch (OperationCanceledException)
                     {
@@ -364,7 +357,7 @@
         {
             while (true)
             {
-                Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�");
+                //Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�");
                 //鍙栨秷绾跨▼ 鍏抽棴PLC杩炴帴
                 if (cts.Token.IsCancellationRequested)
                 {
@@ -377,17 +370,91 @@
                 }
                 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 carcon = new carConverModel();
+                        if (carcon.conveyorBei.Keys.Contains(endLocate))
+                        {
+                            text = "杈撻�佺嚎鍖�";
+                            devStation = carcon.conveyorBei[endLocate];
+                        }
+                        else if (carcon.conveyorNan.Keys.Contains(endLocate))
+                        {
+                            text = "杈撻�佺嚎鍗�";
+                            devStation = carcon.conveyorNan[endLocate];
+                        }
+                        if (text != "")
+                        {
+                            var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text);
+                            var modConn = new PLCUtil(modPlc);
+
+                            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;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
+                            }
+                            modConn.Close();
+
+                            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 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞�
 
                     // 鑾峰彇鏈変换鍔$殑灏忚溅缂栧彿
@@ -417,11 +484,11 @@
                                 {
                                     var modCarDl = plcPosition.FirstOrDefault(s => s.Text == "鐢垫睜鐢甸噺");
                                     var (resultDl, valueDl) = modbusUtil.GetDBValue(modCarDl.PosType, modCarDl.PlcPos);
-                                    if (resultDl.IsSucceed && valueDl> FourWayCarDLEnum.Dl) 
+                                    if (resultDl.IsSucceed && valueDl> (int)FourWayCarDLEnum.Dl) 
                                     {
                                         //鍐欏叆缁撴潫鍏呯數鍛戒护
                                         var modCdEnd = plcPosition.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
-                                        modbusUtil.SetDBValue(modCdEnd.PosType, modCdEnd.PlcPos.ToString(), "2") ;
+                                        var resultDl22 = modbusUtil.SetDBValue(modCdEnd.PosType, modCdEnd.PlcPos.ToString(), "3") ;
                                         carErr = true;
                                         break; //鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞
                                     }
@@ -444,7 +511,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 +554,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)
                         {
@@ -505,13 +572,15 @@
                         }
                     }
                     var typeStr = "1";
+                    var typeStr2 = 1;
                     if (waitTask.Levels  == 888 )
                     {
                         typeStr = "0";//灏忚溅浠诲姟鏄厖鐢典换鍔�
+                        typeStr2 = 0;
                     }
                     //鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰�
-                    var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, typeStr);
-                    var datas2 = FourWayCarUtil.GetCarPathUp(data2, 1);
+                    var data2 = FourWayCarUtil.GetCarPath(starLocate, endLocate, typeStr);
+                    var datas2 = FourWayCarUtil.GetCarPathUp(data2, typeStr2);
                     
                     if (datas2 == null) 
                     { 

--
Gitblit v1.8.0