From 42bb5b84ff935e0a3efb46f56d4ff5ca5ed9e592 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期三, 16 四月 2025 15:54:52 +0800
Subject: [PATCH] 修改问题,添加备注

---
 Admin.NET/WCS.Application/PLC/PLCService.cs           |   11 ++++++++++-
 Admin.NET/WCS.Application/Configuration/Database.json |    2 +-
 Admin.NET/WCS.Application/OpenApi/OpenApi.cs          |    5 ++++-
 Admin.NET/WCS.Application/PLC/PLCUtil.cs              |   40 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/Admin.NET/WCS.Application/Configuration/Database.json b/Admin.NET/WCS.Application/Configuration/Database.json
index 9aa88be..709fe9b 100644
--- a/Admin.NET/WCS.Application/Configuration/Database.json
+++ b/Admin.NET/WCS.Application/Configuration/Database.json
@@ -11,7 +11,7 @@
         //"ConnectionString": "PORT=5432;DATABASE=xxx;HOST=localhost;PASSWORD=xxx;USER ID=xxx", // PostgreSQL 搴撹繛鎺ュ瓧绗︿覆
         //"ConnectionString": "Server=localhost;Database=xxx;Uid=xxx;Pwd=xxx;SslMode=None;", // MySql 搴撹繛鎺ュ瓧绗︿覆",
         //"ConnectionString": "User Id=xxx; Password=xxx; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))", // Oracle 搴撹繛鎺ュ瓧绗︿覆
-        "ConnectionString": "Server=localhost;Database=WCS_JC30;User Id=sa;Password=sql2022;", // SqlServer 搴撹繛鎺ュ瓧绗︿覆
+        "ConnectionString": "Server=172.18.3.206;Database=WCS_JC30;User Id=sa;Password=sql2024!@#;", // SqlServer 搴撹繛鎺ュ瓧绗︿覆
 
 
         //"SlaveConnectionConfigs": [ // 璇诲啓鍒嗙/涓讳粠
diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
index f57a346..348f56f 100644
--- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
+++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
@@ -568,6 +568,7 @@
                                 };
                                 _db.Insertable(modTaskMonitor).ExecuteCommand();
                                 HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+                                //鍐欏叆鍏夊箷0
                                 Task.Run(() =>
                                 {
                                     var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.DB);
@@ -586,6 +587,7 @@
                                     HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                                 });
 
+                                //鍚戠爜鍨涙満鍣ㄤ汉鍐欏彇鎵樺畬鎴愪俊鍙�
                                 modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.Station);
                                 res = modConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos, "0");
                                 modTaskMonitor = new WcsTaskMonitor()
@@ -600,7 +602,8 @@
                                 HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                                 modConn.Close();
                             }
-                            if (modTask.StartLocate == AGVStaionEnum.A1.ToString())
+                            //璧峰宸ヤ綅鏄彁鍗囨満鍙栬揣宸ヤ綅
+                            if (modTask.StartLocate == AGVStaionEnum.A2.ToString())
                             {
                                 var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.ConveyorLine);
                                 var modConn = new PLCUtil(modPlc);
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index fbb86c4..c0f3050 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -675,9 +675,11 @@
             //濡傛灉鎷夋墭鐩樺幓鎴愬搧宸ヤ綅锛屽厛妫�鏌ユ湁娌℃湁缂烘墭
             if (modTask.StartLocate.Substring(0, 1) == "D" && modTask.EndLocate.Substring(0, 1) == "B")
             {
+                //鍒ゆ柇鐩爣浣嶇疆鏄媶鎵樻満鐨勪换鍔℃湁娌℃湁锛屾湁灏辫烦杩囨媶鎵樻満鍒版垚鍝佸伐浣嶇殑浠诲姟
                 if (listTask.Any(s => s.EndLocate.Substring(0, 1) == "D"))
                     continue;
             }
+            //濡傛灉鐩殑宸ヤ綅鏄師鏂欎粨锛屽厛妫�鏌ュ師鏂欎粨鍌ㄤ綅鐘舵��
             if (modTask.EndLocate == AGVStaionEnum.F1.ToString())
             {
                 if (_sysConfigService.GetConfigValue<bool>("cache_Materal").Result)
@@ -688,12 +690,17 @@
             //    if (!_sysConfigService.GetConfigValue<bool>("cache_Materal").Result)
             //        continue;
             //}
+            
+            //濡傛灉璧峰宸ヤ綅鏄媶鎵樻満
             if (modTask.StartLocate == AGVStaionEnum.D1.ToString())
             {
+                //鑾峰彇鍙犳媶鎵樻満IP
                 var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine);
+                //鑾峰彇鍙犳媶鎵樻満宸ヤ綅
                 var modDevice2 = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Text == "鎷嗘墭鏈�");
+                //鎵撳紑杩炴帴
                 var modConn = new PLCUtil(modPlc);
-                //鏄惁缂烘墭淇″彿
+                //鏄惁鍏佽鍙栨墭淇″彿
                 var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "鍏佽鍙栨墭");
                 var (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos);
                 if (result.IsSucceed)
@@ -724,6 +731,7 @@
                     }
                     else
                     {
+                        //涓嶅厑璁稿彇鎵橈紝鍒ゆ柇鏄惁鎷嗘墭鏈哄噯澶囧畬鎴�
                         modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "鍑嗗瀹屾垚");
                         (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos);
                         if (!value)
@@ -738,6 +746,7 @@
                     continue;
                 }
             }
+            //濡傛灉鐩殑宸ヤ綅鏄彁鍗囨満鏀捐揣宸ヤ綅锛屽厛妫�鏌ユ湁娌℃湁鎵樼洏绾跨殑浠诲姟
             if (modTask.EndLocate == AGVStaionEnum.A1.ToString())
             {
                 if (_db.Queryable<WcsTask>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Status == TaskStatusEnum.Doing).Any())
diff --git a/Admin.NET/WCS.Application/PLC/PLCUtil.cs b/Admin.NET/WCS.Application/PLC/PLCUtil.cs
index babe138..9b72835 100644
--- a/Admin.NET/WCS.Application/PLC/PLCUtil.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCUtil.cs
@@ -1,6 +1,7 @@
 锘縰sing DocumentFormat.OpenXml.Bibliography;
 using DocumentFormat.OpenXml.Drawing;
 using Elastic.Clients.Elasticsearch;
+using Furion.Logging;
 using IoTClient;
 using IoTClient.Clients.Modbus;
 using IoTClient.Clients.PLC;
@@ -332,4 +333,43 @@
         }
         return _client.BatchWrite(addresses);
     }
+
+    /// <summary>
+    /// 寰幆鍐欏叆PLC鍊硷紙骞惰鍙栧�煎垽鏂拰鍐欏叆鐨勫�兼槸鍚︿竴鑷达紝鍐欏叆鎺у埗瀛椾笉鑳界敤姝ゆ柟娉曪級
+    /// </summary>
+    public IoTClient.Result SetPlcDBValueRepeat(PLCDataTypeEnum PosType, string DbNumber, string Pos, string Value)
+    {
+        IoTClient.Result _result = new IoTClient.Result();
+
+        int setCount = 0;//鍐欏叆娆℃暟
+        while (setCount < 5)
+        {
+            string address;
+            if (DbNumber.StartsWith("DB"))
+                address = DbNumber + "." + Pos;
+            else
+                address = DbNumber + Pos;
+            _result = this.SetPlcDBValue(PosType, address, Value);//鍐欏叆鍊�
+
+            //绱鍐欏叆娆℃暟
+            setCount++;
+
+            if (_result.IsSucceed)
+            {
+                //璇诲彇鍐欏叆鐨勫��
+                var (res, val) = GetPlcDBValue(PosType, DbNumber, Pos);
+                if (val.ToString() == Value)
+                {
+                    //璇诲彇鐨勫�煎拰鍐欏叆鐨勫�间竴鑷达紝鐩存帴璺冲嚭寰幆
+                    break;
+                }
+            }
+        }
+        //鍐欏叆鏃ュ織
+        Log.Information($"66666666鍐欏叆PLC锛孌bNumber锛歿DbNumber}锛孭os:{Pos},Value:{Value},setCount:{setCount}");
+
+        return _result;
+    }
+     
+
 }

--
Gitblit v1.8.0