From 3ec3e0c1913bc902dbbcaeae2959897df6212ec2 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期四, 28 十一月 2024 15:41:23 +0800
Subject: [PATCH] 更新
---
WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs | 44 +++++++++++++++++++++++++++++++++++---------
1 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
index e504bdc..7ffe969 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
@@ -27,6 +27,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Net;
+using System.Net.NetworkInformation;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
@@ -38,7 +39,7 @@
/// 瑗块棬瀛怱7閫氳绫�
/// </summary>
[Description("瑗块棬瀛怱7")]
- public class SiemensS7 : BaseCommunicator, IDisposable
+ public class SiemensS7 : BaseCommunicator
{
#region Private Member
/// <summary>
@@ -67,6 +68,8 @@
private string _name;
private ILogNet _logNet;
+
+ private bool _isPing = true;
#endregion Private Member
#region Public Member
@@ -89,10 +92,11 @@
/// </summary>
/// <param name="ipAddress">璁惧鐨処P鍦板潃</param>
/// <param name="port">杩炴帴浣跨敤鐨勭鍙e彿</param>
+ /// <param name="name">璁惧鍚嶇О</param>
public SiemensS7(string ipAddress, int port, string name)
{
string path = AppDomain.CurrentDomain.BaseDirectory + $"Log_PLCReadWrite\\{name}";
- _logNet = new LogNetFileSize(path, 3 * 1024 * 1024, 100);
+ _logNet = new LogNetFileSize(path, 10 * 1024 * 1024, 100);
bool ipCheck = IPAddress.TryParse(ipAddress, out IPAddress? address);
if (!ipCheck)
@@ -157,7 +161,7 @@
for (int i = 0; i < 5; i++)
{
T readValue = Read<T>(address);
- stringBuilder.AppendLine(string.Format(CommunicationInfoMessage.WriteAfterRead, readValue, value));
+ stringBuilder.AppendLine(string.Format(CommunicationInfoMessage.WriteAfterRead, address, value));
obj = readValue;
if (readValue.Equals(value))
{
@@ -182,7 +186,6 @@
{
LogNet.WriteInfo(Name, stringBuilder.ToString());
}
-
}
/// <summary>
@@ -272,6 +275,29 @@
throw new CommunicationException($"璇诲彇鏁版嵁寮傚父,閿欒淇℃伅:{ex.Message}", CommunicationErrorType.ReadException, innerException: ex);
}
}
+
+ private void Ping()
+ {
+ Task.Run(() =>
+ {
+ while (_isPing)
+ {
+ try
+ {
+ IPStatus status = plc.IpAddressPing();
+ if (status == IPStatus.Success)
+ _connected = true;
+ else
+ _connected = false;
+ }
+ finally
+ {
+ Thread.Sleep(100);
+ }
+ }
+ });
+
+ }
#endregion
#region Public Method
@@ -297,7 +323,7 @@
LogNet.WriteInfo(Name, string.Format(CommunicationInfoMessage.ConnectSuccess, _ipAddress, _port));
else
LogNet.WriteError(Name, string.Format(CommunicationExceptionMessage.ConnectFaild, _ipAddress, _port, operateResult.Message));
-
+ Ping();
return operateResult.IsSuccess;
}
catch (Exception ex)
@@ -399,7 +425,7 @@
catch (Exception ex)
{
//鍐欏叆寮傚父鏃舵姏鍑鸿嚜瀹氫箟閫氳寮傚父绫�
- throw new CommunicationException($"鍐欏叆鏁版嵁寮傚父,鍦板潃:銆恵address}銆�,閿欒淇℃伅: {ex.Message}", CommunicationErrorType.ReadFailed, innerException: ex);
+ throw new CommunicationException($"鍐欏叆鏁版嵁寮傚父,鍦板潃:銆恵address}銆�,閿欒淇℃伅: {ex.Message}", CommunicationErrorType.WriteFailed, innerException: ex);
}
}
@@ -564,7 +590,6 @@
LogNet.WriteException(Name, $"銆恵Name}銆慞LC璇诲彇寮傚父锛屽湴鍧�锛氥�恵address}銆戯紝閿欒淇℃伅锛氥�恵ex.Message}銆�", ex);
throw new CommunicationException(ex.Message, CommunicationErrorType.ReadException, innerException: ex);
}
-
}
#endregion
@@ -620,14 +645,15 @@
{
LogNet.WriteInfo(Name, stringBuilder.ToString());
}
-
}
#endregion
// 鏄惧紡瀹炵幇IDisposable鎺ュ彛浠ユ彁渚涘瀮鍦惧洖鏀舵椂鐨勬竻鐞�
- public void Dispose()
+ public override void Dispose()
{
+ _isPing = false;
Disconnect();
+ plc.Dispose();
GC.SuppressFinalize(this);
}
--
Gitblit v1.9.3