From bb929bd0809eefc1108dd779846ff07d997f7ef0 Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期五, 19 七月 2024 09:25:14 +0800
Subject: [PATCH] 反馈MES工单完成

---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs |   33 ++++++++++++++++++++++++++-------
 1 files changed, 26 insertions(+), 7 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
index 8922db1..0dfc40e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
@@ -3,6 +3,7 @@
 using System.Net.NetworkInformation;
 using WIDESEA_Comm.DataHandle;
 using WIDESEA_Comm.LogInfo;
+using static FreeSql.Internal.GlobalFilter;
 
 namespace WIDESEA_WCS.WCSClient
 {
@@ -14,9 +15,12 @@
         private readonly object _lockWrite = new object();
         public SiemensS7Net siemensPLCClient { get; set; }
 
-        public SiemensPLCClient()
+        public SiemensPLCClient(string model)
         {
-            siemensPLCClient = new SiemensS7Net(SiemensPLCS.S1200);
+            if (model == "S300")
+                siemensPLCClient = new SiemensS7Net(SiemensPLCS.S300);
+            else
+                siemensPLCClient = new SiemensS7Net(SiemensPLCS.S1500);
             base.siemensPLCClient = this.siemensPLCClient;
         }
 
@@ -48,6 +52,7 @@
             siemensPLCClient.Port = Port;
             siemensPLCClient.Slot = (byte)Slot;
             siemensPLCClient.ConnectTimeOut = 1000 * 3;//瓒呮椂鏃堕棿
+            siemensPLCClient.ReceiveTimeOut = 1000 * 3;
             siemensPLCClient.ConnectClose();
             var coonRes = siemensPLCClient.ConnectServer();
             IsConnected = coonRes.IsSuccess;
@@ -130,8 +135,11 @@
             }
             else if (typeof(DataType) == typeof(string))//瀛楃涓�
             {
-                var bytes = (byte[])GetContent(siemensPLCClient.Read(dbAddress, (ushort)len), dbAddress);
-                string str = DataParse.GetStr(bytes, 0);
+                //var bytes = (byte[])GetContent(siemensPLCClient.Read(dbAddress, (ushort)len), dbAddress);
+                //string str = DataParse.GetStr(bytes, 0);
+                //return (DataType)(str as object);
+                var str = GetContent(siemensPLCClient.ReadString(dbAddress, (ushort)len), dbAddress).ToString();
+                str = str.Replace("\0", "")?.Replace("\\", "")?.Replace("\u0014", "")?.Replace("?\u0006", "")?.Replace("\u000e\u000e", "")?.Replace("\n", "")?.Replace("?", "")?.Trim();
                 return (DataType)(str as object);
             }
             else
@@ -147,8 +155,17 @@
         /// <returns></returns>
         public override DataType ReadByOrder<DataType>(string orderName, string Method = null)
         {
-            var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
-            if (Method != null) { item = itemGroups.Where(t => t.name.Equals(orderName) && t.Methods.Equals(Method)).FirstOrDefault(); }
+            DBItemGroup item = null;
+            //var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
+            //if (Method != null) { item = itemGroups.Where(t => t.name.Equals(orderName) && t.Methods.Equals(Method)).FirstOrDefault(); }
+            var items = itemGroups.Where(t => t.name.Contains(orderName)).ToList();
+            if (items.Count > 0)
+            {
+                if (Method != null)
+                    item = items.Where(t => t.Methods.Contains(Method)).FirstOrDefault();
+                else
+                    item = items.Where(t => t.name.Contains(orderName)).FirstOrDefault();
+            }
             if (item == null)
             {
                 throw new Exception($"PLC{PLCName},鏈畾涔夋寚浠orderName}");
@@ -189,7 +206,7 @@
             else if (typeof(DataType) == typeof(string))//瀛楃涓�
             {
                 var str = GetContent(siemensPLCClient.ReadString(item.dbAddress, (ushort)item.dataLen), item).ToString();
-                str = str.Replace("\0", "")?.Replace("\\", "")?.Replace("\u0014", "")?.Replace("?\u0006", "");
+                str = str.Replace("\0", "")?.Replace("\\", "")?.Replace("\u0014", "")?.Replace("?\u0006", "")?.Replace("\n", "")?.Replace("?", "")?.Trim();
                 return (DataType)(str as object);
             }
             else
@@ -253,6 +270,7 @@
 
                 if (!result.IsSuccess)
                 {
+                    IsConnected = false;
                     WriteLog.Write_Log(PLCName, $"{PLCName}_Write", $"{dbAddress}鍐欏叆澶辫触," + result.Message);
                     throw new Exception($"{dbAddress}鍐欏叆澶辫触," + result.Message);
                 }
@@ -322,6 +340,7 @@
 
                 if (!result.IsSuccess)
                 {
+                    IsConnected = false;
                     WriteLog.Write_Log(PLCName, $"{PLCName}_Write", $"{orderName}鍐欏叆澶辫触," + result.Message, item);
                     throw new Exception($"{PLCName},{orderName}鍐欏叆澶辫触," + result.Message);
                 }

--
Gitblit v1.9.3