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