From 2e889843b4c171f2d6ad8e0d53084040703d11f6 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 13:18:21 +0800
Subject: [PATCH] docs: CAN 总线级应答器 + 硬件调试页多标签多会话 设计规格

---
 S7Driver/PLCS7Driver.cs |  166 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 128 insertions(+), 38 deletions(-)

diff --git a/S7Driver/PLCS7Driver.cs b/S7Driver/PLCS7Driver.cs
index 6b666e3..aa3d531 100644
--- a/S7Driver/PLCS7Driver.cs
+++ b/S7Driver/PLCS7Driver.cs
@@ -61,60 +61,150 @@
             client?.Dispose();
         }
 
-        public bool Simens_S7_ReadBool(int DB, int StartAdd, int Pos)
+        public bool Simens_S7_ReadBool(int DB, int StartAdd, int Pos, out bool value, out string msg)
         {
-            var or = client.ReadBool($"DB{DB}.DBX{StartAdd}.{Pos}");
-            return or.Content;
+            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 void Simens_S7_WriteBool(int DB, int StartAdd, int Pos, bool Val)
+        public bool Simens_S7_WriteBool(int DB, int StartAdd, int Pos, bool Val, out string msg)
         {
-            var or = client.Write($"DB{DB}.DBX{StartAdd}.{Pos}", Val);
-            return;
+            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 int Simens_S7_ReadInt(int DB, int StartAdd, int Length)
-        {
-            var or = client.ReadInt16($"DB{DB}.DBW{StartAdd}");
-            return or.Content;
-        }
-
-        public void Simens_S7_WriteInt(int DB, int StartAdd, short Val)
-        {
-            client.Write($"DB{DB}.DBW{StartAdd}", Val);
-        }
-
-        public float Simens_S7_ReadReal(int DB, int StartAdd, int Length)
-        {
-            var or = client.ReadFloat($"DB{DB}.DBW{StartAdd}");
-            return or.Content;
-        }
-
-        public void Simens_S7_WriteReal(int DB, int StartAdd, float Val)
-        {
-            client.Write($"DB{DB}.DBW{StartAdd}", Val);
-        }
-
-        public bool ReadShort(string address, out short value, out string errMsg)
+        public bool Simens_S7_ReadInt(int DB, int StartAdd, out int value, out string msg)
         {
             value = 0;
-            errMsg = null;
+            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)
+                if (!or.IsSuccess)
                 {
-                    value = or.Content;
+                    msg = $"{or.ErrorCode} {or.Message}";
+                    return false;
                 }
-                else
-                {
-                    errMsg = or.Message;
-                }
-                return or.IsSuccess;
+                value = or.Content;
+                return true;
             }
             catch (Exception e)
             {
-                errMsg = e.Message;
+                msg = e.Message;
                 return false;
             }
         }

--
Gitblit v1.9.1