From 76eef0389848065963a295c66163a630697054fa Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期日, 07 七月 2024 09:47:01 +0800
Subject: [PATCH] PDA
---
代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs | 26 +++++++++++++++++++++-----
1 files changed, 21 insertions(+), 5 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 23f524d..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
{
@@ -51,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;
@@ -133,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
@@ -150,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}");
@@ -192,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", "")?.Replace("\n","")?.Replace("?", "")?.Trim();
+ str = str.Replace("\0", "")?.Replace("\\", "")?.Replace("\u0014", "")?.Replace("?\u0006", "")?.Replace("\n", "")?.Replace("?", "")?.Trim();
return (DataType)(str as object);
}
else
@@ -256,6 +270,7 @@
if (!result.IsSuccess)
{
+ IsConnected = false;
WriteLog.Write_Log(PLCName, $"{PLCName}_Write", $"{dbAddress}鍐欏叆澶辫触," + result.Message);
throw new Exception($"{dbAddress}鍐欏叆澶辫触," + result.Message);
}
@@ -325,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