From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点
---
S7Driver/PLCS7Driver.cs | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 212 insertions(+), 0 deletions(-)
diff --git a/S7Driver/PLCS7Driver.cs b/S7Driver/PLCS7Driver.cs
new file mode 100644
index 0000000..aa3d531
--- /dev/null
+++ b/S7Driver/PLCS7Driver.cs
@@ -0,0 +1,212 @@
+锘縰sing HslCommunication.Core.Pipe;
+using HslCommunication.Profinet.Siemens;
+using System;
+
+namespace S7Driver
+{
+ public class PLCS7Driver : IDisposable
+ {
+ private SiemensS7Net client;
+ private string Ip;
+ private int Port;
+
+ public PLCS7Driver(string ip, int port)
+ {
+ this.Ip = ip;
+ this.Port = port;
+ }
+
+ public bool Connect(out string errMsg)
+ {
+ try
+ {
+ client = new SiemensS7Net(SiemensPLCS.S1500);
+ PipeTcpNet pipeTcpNet = new PipeTcpNet(Ip, Port);
+ pipeTcpNet.ConnectTimeOut = 5000;
+ pipeTcpNet.ReceiveTimeOut = 10000;
+ client.CommunicationPipe = pipeTcpNet;
+ var or = client.ConnectServer();
+ errMsg = or.Message;
+ return or.IsSuccess;
+ }
+ catch (Exception ex)
+ {
+ errMsg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool DisConnect(out string errMsg)
+ {
+ try
+ {
+ if (client == null)
+ {
+ errMsg = "鏈繛鎺�";
+ return false;
+ }
+ var or = client.ConnectClose();
+ errMsg = or.Message;
+ return or.IsSuccess;
+ }
+ catch (Exception ex)
+ {
+ errMsg = ex.Message;
+ return false;
+ }
+ }
+
+ public void Dispose()
+ {
+ client?.Dispose();
+ }
+
+ public bool Simens_S7_ReadBool(int DB, int StartAdd, int Pos, out bool value, out string msg)
+ {
+ value = false;
+ msg = null;
+ try
+ {
+ var or = client.ReadBool($"DB{DB}.DBX{StartAdd}.{Pos}");
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ value = or.Content;
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool Simens_S7_WriteBool(int DB, int StartAdd, int Pos, bool Val, out string msg)
+ {
+ msg = null;
+ try
+ {
+ var or = client.Write($"DB{DB}.DBX{StartAdd}.{Pos}", Val);
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool Simens_S7_ReadInt(int DB, int StartAdd, out int value, out string msg)
+ {
+ value = 0;
+ msg = null;
+ try
+ {
+ var or = client.ReadInt16($"DB{DB}.DBW{StartAdd}");
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ value = or.Content;
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool Simens_S7_WriteInt(int DB, int StartAdd, short Val, out string msg)
+ {
+ msg = null;
+ try
+ {
+ var or = client.Write($"DB{DB}.DBW{StartAdd}", Val);
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool Simens_S7_ReadReal(int DB, int StartAdd, out float value, out string msg)
+ {
+ value = 0;
+ msg = null;
+ try
+ {
+ var or = client.ReadFloat($"DB{DB}.DBW{StartAdd}");
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ value = or.Content;
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool Simens_S7_WriteReal(int DB, int StartAdd, float Val, out string msg)
+ {
+ msg = null;
+ try
+ {
+ var or = client.Write($"DB{DB}.DBW{StartAdd}", Val);
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ return true;
+ }
+ catch (Exception ex)
+ {
+ msg = ex.Message;
+ return false;
+ }
+ }
+
+ public bool ReadShort(string address, out short value, out string msg)
+ {
+ value = 0;
+ msg = null;
+ try
+ {
+ var or = client.ReadInt16(address);
+ if (!or.IsSuccess)
+ {
+ msg = $"{or.ErrorCode} {or.Message}";
+ return false;
+ }
+ value = or.Content;
+ return true;
+ }
+ catch (Exception e)
+ {
+ msg = e.Message;
+ return false;
+ }
+ }
+ }
+}
--
Gitblit v1.9.1