From fdab33a6b12d09c898606f15e40178b44e174721 Mon Sep 17 00:00:00 2001
From: IPC-610 <IPC-610@DESKTOP-6LEOOS3>
Date: 星期四, 26 九月 2024 17:00:16 +0800
Subject: [PATCH] 码垛交互流程

---
 Admin.NET/WCS.Application/PLC/PLCService.cs    |   40 +++++++++++++++++++++++++++++-----------
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs |    2 +-
 Admin.NET/WCS.Application/Hub/PlcHub.cs        |   18 +++++++++++++++++-
 3 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/Admin.NET/WCS.Application/Hub/PlcHub.cs b/Admin.NET/WCS.Application/Hub/PlcHub.cs
index 32b4253..282d65e 100644
--- a/Admin.NET/WCS.Application/Hub/PlcHub.cs
+++ b/Admin.NET/WCS.Application/Hub/PlcHub.cs
@@ -99,7 +99,23 @@
                 var ret = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Bit, "DB119", "0", PLCTaskAction.boDemo == true ? "1" : "0");
                 if (ret.IsSucceed)
                 {
-                    await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value);
+                    if (PLCTaskAction.boDemo)
+                    {
+                        // 鍐欏叆plc鎶撶鍝佺
+                        var rett = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Short, "DB111", "0", "1");
+                        if (rett.IsSucceed)
+                        {
+                            await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value);
+                        }
+                    }
+                    else 
+                    {
+                        var rett = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Short, "DB111", "0", "0");
+                        if (rett.IsSucceed)
+                        {
+                            await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value);
+                        }
+                    }                 
                 }
                 else
                 {
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 740df09..c9b3ec2 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1217,8 +1217,8 @@
                     #endregion
                 }
                 break;
-            #region 鍑哄簱浜や簰
 
+            #region 鍑哄簱浜や簰
             case "420":
                 {
                     #region 鎵樼洏鍒拌揪鎷i�夊伐浣�/鍑哄簱鍙�
@@ -1345,6 +1345,20 @@
 
             #endregion
 
+            case "50":
+                // plc鐢宠绌烘墭
+                {
+                    // 璋冪敤WMS绌烘墭鍑哄簱鎺ュ彛锛岃繑鍥炲嚭搴撲换鍔″瓨鍏ュ嚭搴撹〃
+
+                    // 鍐欏叆
+                }
+                break;
+            case "80":
+                // 绌烘墭鐩樿泛宸插埌浣�
+                {
+
+                }
+                break;
             default: break;
         }
 
@@ -1415,7 +1429,7 @@
                             {
                                 // 鍐欏叆娴佺▼鎺у埗瀛� 2
                                 var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
-                                if (retVal.IsSucceed)
+                                if (!retVal.IsSucceed)
                                 {
                                     Log.Error("婕旂ず妯″紡鍐欏叆鍒嗛亾鍙峰け璐�!");
                                     break;
@@ -1614,9 +1628,9 @@
                     {
                         // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
                         var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
-                        // 鏍规嵁宸ヤ綅鍙疯幏鍙栨墭鐩樼嚎璇ュ伐浣嶅彿鐨勯厤缃俊鎭�
-                        var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
-                        var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "鐩爣宸ヤ綅" && m.IsDelete == false);
+                        // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅
+                        var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId != modDevice.PlcId);
+                        var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "鐩殑宸ヤ綅" && m.IsDelete == false);
                         if (checkTaskMedel == null)
                         {
                             Log.Error(string.Format("缁勬墭澶辫触鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栨墭鐩樺彿澶辫触!", modDevice.StationNum));
@@ -1634,13 +1648,14 @@
                         // 鐮佸灈宸ヤ綅鎵樼洏鍙�
                         string palletNo = checkTaskMedel.PalletNo;
 
+                        // 鏄惁婕旂ず妯″紡
                         if (PLCTaskAction.boDemo)
                         {
                             // 鐩存帴绠眞ms鐢宠宸烽亾
                             var http = new HttpService();
                             string TaskNo = "", EndLocate = "";
                             string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
-                            if (!strMsg.Contains("-1"))
+                            if (strMsg.Contains("-1"))
                             {
                                 Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
                                 break;
@@ -1651,13 +1666,14 @@
                                 var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
                                 if (taskModel != null) 
                                 {
-                                    // 鍐欏叆鐮佸灈宸ヤ綅鐩爣宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱
-                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");     // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
+                                    // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
+                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");     
 
+                                    // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
                                     var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue);
                                     if (retVal.IsSucceed)
                                     {
-                                        // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
+                                        // 鍐欏叆鐮佸灈浜や簰-缁勬墭鍥炲娴佺▼瀛�
                                         retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
 
                                         // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
@@ -1707,8 +1723,10 @@
                                 var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
                                 if (taskModel != null)
                                 {
-                                    // 鍐欏叆鐮佸灈宸ヤ綅鐩爣宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱
-                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");     // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
+                                    // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
+                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");     
+
+                                    // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
                                     var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue);
                                     if (retVal.IsSucceed)
                                     {
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 709db5d..ee3557b 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -153,7 +153,7 @@
                             {
                                 //Console.WriteLine($"{modPlc.IP}璇诲彇{modDevice.DbNumber}.{modDevice.PlcPos}鐨勫�间负锛歿value}");
                                 //鏃犳祦绋嬭烦鍑�
-                                if (value == 0  && modPlc.Type != PLCTypeEnum.BoxConveyorLine)
+                                if (value == 0 )// && modPlc.Type!= PLCTypeEnum.BoxConveyorLine
                                     continue;
                                 var dto = modDevice.Adapt<WcsDeviceDto>();
                                 dto.Value = value;

--
Gitblit v1.8.0