From 13a442afefdddf1ec9ecd1e22c81735bf5c6a465 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期二, 10 六月 2025 16:08:24 +0800
Subject: [PATCH] 修改问题

---
 Admin.NET/WCS.Application/PLC/PLCService.cs      |  236 ++++++++++++++++++++++++++-------------
 Admin.NET/WCS.Application/Util/FourWayCarUtil.cs |    6 
 Admin.NET/WCS.Application/OpenApi/OpenApi.cs     |    8 
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs   |   20 ++-
 Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs |    2 
 Admin.NET/WCS.Application/PLC/ModbusUtil.cs      |   36 +++++
 6 files changed, 216 insertions(+), 92 deletions(-)

diff --git a/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs b/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs
index 8edc2ce..731f5b9 100644
--- a/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs
+++ b/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs
@@ -81,7 +81,7 @@
     /// 鍋ュ悍鐢甸噺 浣庝簬姝ょ數閲� 涓旀棤浠诲姟鏃跺幓鍏呯數
     /// </summary>
     [Description("鍋ュ悍鐢甸噺")]
-    Dl2 = 75,
+    Dl2 = 60,
     
 
 }
diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
index e1a8e4b..aadbd65 100644
--- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
+++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
@@ -98,7 +98,8 @@
             throw Oops.Bah("浠诲姟宸插瓨鍦�!");
         }
         var listTask = new List<WcsTask>();
-        foreach (var models in modelList)
+        var list = modelList.OrderBy(m => m.Order).ThenBy(m => m.TaskNo).ToList();
+        foreach (var models in list)
         {
             if (models.TaskType == "0")
             {
@@ -125,6 +126,7 @@
                 EndLocate = models.EndLocate,
                 EndRoadway = models.EndRoadway,
                 PalletNo = models.PalletNo,
+                CreateTime = DateTime.Now
             };
 
             // 鑻ラ潪AGV浠诲姟澧炲姞浠诲姟ID
@@ -133,9 +135,9 @@
                 taskAdd.TaskId = FourWayCarUtil.GetTaskId(); 
             }
 
-            listTask.Add(taskAdd);
+            await _db.Insertable(taskAdd).ExecuteCommandAsync();
         }
-        await _db.Insertable(listTask).ExecuteCommandAsync();
+        
     }
     /// <summary>
     /// WCS鎺ュ彈WMS涓嬪彂鐨勪换鍔�(鍗曟潯浠诲姟)
diff --git a/Admin.NET/WCS.Application/PLC/ModbusUtil.cs b/Admin.NET/WCS.Application/PLC/ModbusUtil.cs
index 1c77885..d34c77c 100644
--- a/Admin.NET/WCS.Application/PLC/ModbusUtil.cs
+++ b/Admin.NET/WCS.Application/PLC/ModbusUtil.cs
@@ -1,4 +1,5 @@
-锘縰sing IoTClient;
+锘縰sing Furion.Logging;
+using IoTClient;
 using IoTClient.Clients.Modbus;
 using IoTClient.Common.Enums;
 using IoTClient.Enums;
@@ -270,4 +271,37 @@
                 return new IoTClient.Result();
         }
     }
+
+    /// <summary>
+    /// 寰幆鍐欏叆PLC鍊硷紙骞惰鍙栧�煎垽鏂拰鍐欏叆鐨勫�兼槸鍚︿竴鑷达紝鍐欏叆鎺у埗瀛椾笉鑳界敤姝ゆ柟娉曪級
+    /// </summary>
+    public IoTClient.Result SetDBValueRepeat(PLCDataTypeEnum PosType, string Pos, string Value)
+    {
+        IoTClient.Result _result = new IoTClient.Result();
+
+        int setCount = 0;//鍐欏叆娆℃暟
+        while (setCount < 5)
+        {
+            _result = this.SetDBValue(PosType, Pos, Value);//鍐欏叆鍊�
+
+            //绱鍐欏叆娆℃暟
+            setCount++;
+
+            if (_result.IsSucceed)
+            {
+                //璇诲彇鍐欏叆鐨勫��
+                var (res, val) = GetDBValue(PosType, Pos);
+                if (val.ToString() == Value)
+                {
+                    //璇诲彇鐨勫�煎拰鍐欏叆鐨勫�间竴鑷达紝鐩存帴璺冲嚭寰幆
+                    break;
+                }
+            }
+        }
+        //鍐欏叆鏃ュ織
+        Log.Information($"鍐欏叆PLC锛孭os:{Pos},Value:{Value},setCount:{setCount}");
+
+        return _result;
+    }
+
 }
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index a9b033e..7167186 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -39,6 +39,10 @@
                     AGV(mod);                                       // AGV璋冨害
                     break;
                 case PLCTypeEnum.ShuttleCar: //绌挎杞�
+                    //if (mod.PlcIdIP == "10.26.254.28") 
+                    //{
+                    //    break;
+                    //}
                     ShuttleCar(mod);
                     break;
                 case PLCTypeEnum.RobotPalletizer:
@@ -222,33 +226,38 @@
                                     var devStation = ""; //宸ヤ綅
                                     var endLocate = modFinshTask.EndRoadway;
                                     var carcon = new carConverModel();
+                                    var ip = "";
                                     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);
+                                        //PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text);
+                                        //var modConn = new PLCUtil(modPlc);
 
                                         var modDeviceConver = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation);
                                         var (plcResult, palletVal) = modConn.GetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.PlcPos);
                                         if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 730)
                                         {
-                                            modConn.Close();
+                                            //modConn.Close();
                                             return;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
                                         }
                                         
                                         var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "740");
                                         if (!plcResult.IsSucceed)
                                         {
-                                            modConn.Close();
+                                            //modConn.Close();
                                             return;
                                         }
                                         //娣诲姞浠诲姟鏄庣粏
@@ -260,7 +269,36 @@
                                             InteractiveMsg = $"鍐欏叆鎸囦护740锛氭墭鐩樺埌杈緖modFinshTask.EndRoadway}"
                                         };
                                         _db.Insertable(taskMonitor).ExecuteCommand();
-                                        modConn.Close();
+
+                                        //鏀瑰彉浠诲姟鐘舵��
+                                        modFinshTask.Status = TaskStatusEnum.Complete;
+                                        modFinshTask.FinishDate = DateTime.Now;
+                                        _db.Updateable(modFinshTask).ExecuteCommand();
+
+                                        var locateOut = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.WareHouseNo == "W01" && m.LocatNo == modFinshTask.StartLocate);
+                                        if (locateOut != null && locateOut.Make == "1")
+                                        {
+                                            locateOut.PalletNo = "";
+                                            _db.Updateable(locateOut).ExecuteCommand();
+                                        }
+
+                                        //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
+                                        if (modFinshTask.Origin == "WMS")
+                                        {
+                                            HttpService httpService = new HttpService();
+                                            var requestMode = new TaskRequestWMS()
+                                            {
+                                                TaskNo = modFinshTask.TaskNo,
+                                                PalletNo = modFinshTask.PalletNo,
+                                                TaskType = ((int)modFinshTask.TaskType).ToString(),
+                                                TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+                                            };
+                                            var modResponseTask = httpService.RequestTask(requestMode).Result;
+                                            modFinshTask.IsSuccess = TaskSuccessEnum.Success;
+                                            _db.Updateable(modFinshTask).ExecuteCommand();
+                                            HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+                                        }
+
                                     }
 
 
@@ -271,6 +309,24 @@
                                     modFinshTask.Status = TaskStatusEnum.Complete;
                                     modFinshTask.FinishDate = DateTime.Now;
                                     _db.Updateable(modFinshTask).ExecuteCommand();
+
+                                    if (modFinshTask.TaskType == TaskTypeEnum.Move)
+                                    {
+                                        var locatemove = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.WareHouseNo == "W01" && m.LocatNo == modFinshTask.StartLocate);
+                                        if (locatemove != null && locatemove.Make == "1")
+                                        {
+                                            locatemove.PalletNo = "";
+                                            _db.Updateable(locatemove).ExecuteCommand();
+                                        }
+                                    }
+
+                                    var locateIn = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.WareHouseNo == "W01" && m.LocatNo == modFinshTask.EndLocate);
+                                    if (locateIn != null && locateIn.Make == "1")
+                                    {
+                                        locateIn.PalletNo = string.IsNullOrWhiteSpace(modFinshTask.PalletNo) ? "pall" : modFinshTask.PalletNo;
+                                        _db.Updateable(locateIn).ExecuteCommand();
+                                    }
+
                                     //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
                                     if (modFinshTask.Origin == "WMS")
                                     {
@@ -287,6 +343,9 @@
                                         _db.Updateable(modFinshTask).ExecuteCommand();
                                         HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
                                     }
+
+                                    
+
                                 }
                                 
                                 //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠�
@@ -476,12 +535,24 @@
                             return;//鍓嶇疆浠诲姟鏈畬鎴�
                         }
                     }
+                     
+                    //灏忚溅鐘舵��
+                    var (resultCar, valueCar) = plcConn.GetDBValue(modDevice.PosType, modDevice.PlcPos);
 
-                    //鍏堝浣�
-                    var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
-                    plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1");
+                    var modPosTaskStatus2 = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鐘舵��");
+                    var (resultTaskStatus2, valueTaskStatus2) = plcConn.GetDBValue(modPosTaskStatus.PosType, modPosTaskStatus.PlcPos);
+                    if (resultCar.IsSucceed && valueCar == 1 && resultTaskStatus2.IsSucceed && (valueTaskStatus2 == 0 || valueTaskStatus2 == 1))
+                    {
+                        //鍏堝浣�
+                        var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
+                        plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1");
+                    }
+                    else
+                    {
+                        return;
+                    }
 
-                    List<Result> listResult = new List<Result>();
+                        List<Result> listResult = new List<Result>();
                     //鑾峰彇灏忚溅浠诲姟鍙�
                     var carTaskNo = FourWayCarUtil.GetTaskNo();
 
@@ -494,7 +565,7 @@
                     }
 
                     var modWriteTask = modDevice.listStation.FirstOrDefault(s => s.Text == "鍐欏叆浠诲姟鍙�");
-                    listResult.Add(plcConn.SetDBValue(modWriteTask.PosType, modWriteTask.PlcPos, carTaskNo.ToString()));
+                    listResult.Add(plcConn.SetDBValueRepeat(modWriteTask.PosType, modWriteTask.PlcPos, carTaskNo.ToString()));
 
                     var modNodeX = modDevice.listStation.FirstOrDefault(s => s.Text == "鑺傜偣鍧愭爣X");
                     var modNodeY = modDevice.listStation.FirstOrDefault(s => s.Text == "鑺傜偣鍧愭爣Y");
@@ -528,19 +599,19 @@
                         var epathz = ePath.Substring(4, 2);
                         var epathn = ePath.Substring(6, 1);
                         //鍐欏叆浜や簰浣嶇疆
-                        listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), epathx));
-                        listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), epathy));
-                        listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), epathz));
-                        listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), epathn));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeX.PosType, posX++.ToString(), epathx));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeY.PosType, posY++.ToString(), epathy));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeZ.PosType, posZ++.ToString(), epathz));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeStatus.PosType, posStatus++.ToString(), epathn));
                     }
                     
                     //杩欓噷鏄妸鍚庨潰鐨勫潗鏍囧叏鍐�0锛堜负浜嗛槻姝笂娆′换鍔″潗鏍囨病琚鐩栵級
                     while (posX <= 43097)
                     {
-                        listResult.Add(plcConn.SetDBValue(modNodeX.PosType, posX++.ToString(), "0"));
-                        listResult.Add(plcConn.SetDBValue(modNodeY.PosType, posY++.ToString(), "0"));
-                        listResult.Add(plcConn.SetDBValue(modNodeZ.PosType, posZ++.ToString(), "0"));
-                        listResult.Add(plcConn.SetDBValue(modNodeStatus.PosType, posStatus++.ToString(), "0"));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeX.PosType, posX++.ToString(), "0"));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeY.PosType, posY++.ToString(), "0"));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeZ.PosType, posZ++.ToString(), "0"));
+                        listResult.Add(plcConn.SetDBValueRepeat(modNodeStatus.PosType, posStatus++.ToString(), "0"));
                     }
                     if (listResult.All(s => s.IsSucceed))
                     {
@@ -552,62 +623,67 @@
                             var devStation = "";
                             var endLocate = modTask.EndRoadway;
                             var carcon = new carConverModel();
+                            var ip = "";
                             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 modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text);
+                                //var modConn = new PLCUtil(modPlc);
 
                                 var modDeviceConver = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation);
                                 var (plcResult, palletVal) = modConn.GetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.PlcPos);
-                                if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720)
+                                if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) == 720)
                                 {
-                                    modConn.Close();
-                                    return;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
-                                }
-                                var listResultcon = new List<Result>();
+                                    var listResultcon = new List<Result>();
 
-                                //浠诲姟鍙蜂笌鎵樼洏鏉$爜
-                                var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "浠诲姟鍙�");
-                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString()));
-                                var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "鎵樼洏鏉$爜");
-                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString()));
+                                    //浠诲姟鍙蜂笌鎵樼洏鏉$爜
+                                    var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "浠诲姟鍙�");
+                                    listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString()));
+                                    var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "鎵樼洏鏉$爜");
+                                    listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString()));
 
-                                // 璧峰宸ヤ綅銆佺洰鐨勫伐浣�
-                                var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "璧峰宸ヤ綅");
-                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum));
-                                var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "鐩殑宸ヤ綅");
-                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate));
+                                    // 璧峰宸ヤ綅銆佺洰鐨勫伐浣�
+                                    var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "璧峰宸ヤ綅");
+                                    listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum));
+                                    var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "鐩殑宸ヤ綅");
+                                    listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate));
 
-                                if (listResultcon.All(s => s.IsSucceed))
-                                {
-                                    var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "730");
-                                    if (!plcResult.IsSucceed)
+                                    if (listResultcon.All(s => s.IsSucceed))
                                     {
-                                        modConn.Close();
-                                        return;
+                                        var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "730");
+                                        if (!plcResult.IsSucceed)
+                                        {
+                                            //modConn.Close();
+                                            return;
+                                        }
+                                        //娣诲姞浠诲姟鏄庣粏
+                                        var taskMonitor2 = new WcsTaskMonitor()
+                                        {
+                                            TaskNo = carTaskNext.TaskNo,
+                                            PlcName = modDevice.Text,
+                                            Status = TaskStatusEnum.Complete,
+                                            InteractiveMsg = $"鍐欏叆鎸囦护730锛氬伐浣嶆槸{modDeviceConver.StationNum}"
+                                        };
+                                        _db.Insertable(taskMonitor2).ExecuteCommand();
                                     }
-                                    //娣诲姞浠诲姟鏄庣粏
-                                    var taskMonitor2 = new WcsTaskMonitor()
-                                    {
-                                        TaskNo = carTaskNext.TaskNo,
-                                        PlcName = modDevice.Text,
-                                        Status = TaskStatusEnum.Complete,
-                                        InteractiveMsg = $"鍐欏叆鎸囦护730锛氬伐浣嶆槸{modDeviceConver.StationNum}"
-                                    };
-                                    _db.Insertable(taskMonitor2).ExecuteCommand();
                                 }
-
-                                modConn.Close();
+                                else if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 730)
+                                {
+                                    return;
+                                }
+                               
                             }
 
 
@@ -1196,12 +1272,12 @@
                             Log.Error(string.Format("杈撻�佺嚎430:鏈壘鍒板搴旂殑浠诲姟銆�"));
                             break;
                         }
-                        // 鏀瑰彉浠诲姟鐘舵��
-                        taskInfo.Status = TaskStatusEnum.Complete;
-                        taskInfo.FinishDate = DateTime.Now;
-                        //modTask.Levels = 999;
-                        _db.Updateable(taskInfo).ExecuteCommand();
-                        HubUtil.PublicTask(taskInfo.Adapt<WcsTaskOutput>());
+                        //// 鏀瑰彉浠诲姟鐘舵��
+                        //taskInfo.Status = TaskStatusEnum.Complete;
+                        //taskInfo.FinishDate = DateTime.Now;
+                        ////modTask.Levels = 999;
+                        //_db.Updateable(taskInfo).ExecuteCommand();
+                        //HubUtil.PublicTask(taskInfo.Adapt<WcsTaskOutput>());
                         // 鎻掑叆浠诲姟鏄庣粏 
                         var modInsertTaskMonitor = new WcsTaskMonitor()
                         {
@@ -1214,28 +1290,28 @@
                             StartLocat = Convert.ToString(starVal),
                             EndLocat = modDevice.StationNum,
                         };
-                        if (taskInfo.Origin == "WMS")
-                        {
-                            // 鍙嶉WMS
-                            var requestMode = new TaskRequestWMS()
-                            {
-                                TaskNo = taskInfo.TaskNo,
-                                PalletNo = taskInfo.PalletNo,
-                                TaskType = ((int)taskInfo.TaskType).ToString(),
-                                TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
-                            };
-                            HttpService httpService = new HttpService();
-                            var modResponseTask = httpService.RequestTask(requestMode).Result;
-                            if (modResponseTask.StatusCode == 0)
-                            {
-                                modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
-                            }
-                            else
-                            {
-                                Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
-                            }
-                        }
-                         
+                        //if (taskInfo.Origin == "WMS")
+                        //{
+                        //    // 鍙嶉WMS
+                        //    var requestMode = new TaskRequestWMS()
+                        //    {
+                        //        TaskNo = taskInfo.TaskNo,
+                        //        PalletNo = taskInfo.PalletNo,
+                        //        TaskType = ((int)taskInfo.TaskType).ToString(),
+                        //        TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+                        //    };
+                        //    HttpService httpService = new HttpService();
+                        //    var modResponseTask = httpService.RequestTask(requestMode).Result;
+                        //    if (modResponseTask.StatusCode == 0)
+                        //    {
+                        //        modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
+                        //    }
+                        //    else
+                        //    {
+                        //        Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
+                        //    }
+                        //}
+
                         // 鎻掑叆浜や簰鏃ュ織
                         _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
 
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 6eeb443..4c7b3f9 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -332,7 +332,7 @@
 
 
 
-                        Thread.Sleep(5000);
+                        Thread.Sleep(2000);
                     }
                     catch (OperationCanceledException)
                     {
@@ -407,29 +407,31 @@
 
                         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 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;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
-                            }
-                            modConn.Close();
+                            } 
 
                             var gongwei = carcon.conveyorRuKu[endLocate];
                             //鍒ゆ柇浠诲姟
@@ -493,6 +495,12 @@
                                         break; //鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞
                                     }
                                 }
+                                var modCarPall = plcPosition.FirstOrDefault(s => s.Text == "鎵樼洏妫�娴�");
+                                var (resultPall, valuePall) = modbusUtil.GetDBValue(modCarPall.PosType, modCarPall.PlcPos);
+                                if (resultPall.IsSucceed && valuePall  == 1)  //1鏈夋墭鐩� 2鏃犳墭鐩�
+                                {
+                                    break; //鏆傜紦鍒嗛厤 
+                                }
                                 //灏忚溅绌洪棽鍔犲叆闆嗗悎
                                 if (value == 1)
                                 {
diff --git a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
index 010fb9c..e62d86b 100644
--- a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
+++ b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
@@ -26,6 +26,10 @@
     /// <returns></returns>
     public static List<CarModel> GetCarPathUp(List<CarModel> list, int moveType)
     {
+        if (list == null)
+        {
+            return null;
+        }
         for (int i = 0; i < list.Count; i++)
         {
             if (i >= 0 && i < list.Count - 1)
@@ -491,7 +495,7 @@
 
                 if (current.Equals(end))
                 {
-                    Log.Error(ReconstructPath(cameFrom, current).ToString());
+                    Log.Error("灏忚溅璺緞鍒嗛厤锛�" +ReconstructPath(cameFrom, current).ToString());
                     return ReconstructPath(cameFrom, current);
                 }
 

--
Gitblit v1.8.0