From ce6a232b55646e8d39cb0b4861ee363608b6f9aa Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期五, 06 九月 2024 10:48:26 +0800
Subject: [PATCH] 服务状态读数据库;报警复位功能

---
 Admin.NET/WCS.Application/PLC/PLCUtil.cs |   63 +++++++++++++++++++++----------
 1 files changed, 42 insertions(+), 21 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCUtil.cs b/Admin.NET/WCS.Application/PLC/PLCUtil.cs
index 27e6c55..0caf17a 100644
--- a/Admin.NET/WCS.Application/PLC/PLCUtil.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCUtil.cs
@@ -53,41 +53,55 @@
                 address = DbNumber + "." + Pos;
             else
                 address = DbNumber + Pos;
+            return this.GetPlcDBValue(PosType, address, Length);
+        }
+    }
+    /// <summary>
+    /// 璇诲彇PLC鍊�
+    /// </summary>
+    /// <param name="PosType">瀛楃绫诲瀷</param>
+    /// <param name="Pos">鍋忕Щ閲�/鍦板潃</param>
+    /// <param name="Length">闀垮害锛堝瓧绗︿覆锛�</param>
+    /// <returns></returns>
+    public (IoTClient.Result, dynamic value) GetPlcDBValue(PLCDataTypeEnum PosType, string Pos, int? Length = 0)
+    {
+        lock (OLock)
+        {
             dynamic result = null;
             switch (PosType)
             {
                 case PLCDataTypeEnum.Bit:
-                    result = _client.ReadBoolean(address);
+                    result = _client.ReadBoolean(Pos);
                     break;
                 case PLCDataTypeEnum.Byte:
-                    result = _client.ReadByte(address);
+                    result = _client.ReadByte(Pos);
                     break;
                 case PLCDataTypeEnum.Short:
-                    result = _client.ReadInt16(address);
+                    result = _client.ReadInt16(Pos);
                     break;
                 case PLCDataTypeEnum.UShort:
-                    result = _client.ReadUInt16(address);
+                    result = _client.ReadUInt16(Pos);
                     break;
                 case PLCDataTypeEnum.Int:
-                    result = _client.ReadInt32(address);
+                    result = _client.ReadInt32(Pos);
                     break;
                 case PLCDataTypeEnum.UInt:
-                    result = _client.ReadUInt32(address);
+                    result = _client.ReadUInt32(Pos);
                     break;
                 case PLCDataTypeEnum.Long:
-                    result = _client.ReadInt64(address);
+                    result = _client.ReadInt64(Pos);
                     break;
                 case PLCDataTypeEnum.ULong:
-                    result = _client.ReadUInt64(address);
+                    result = _client.ReadUInt64(Pos);
                     break;
                 case PLCDataTypeEnum.Float:
-                    result = _client.ReadFloat(address);
+                    result = _client.ReadFloat(Pos);
                     break;
                 case PLCDataTypeEnum.Double:
-                    result = _client.ReadDouble(address);
+                    result = _client.ReadDouble(Pos);
                     break;
                 case PLCDataTypeEnum.String:
-                    result = _client.ReadString(address, Convert.ToUInt16(Length));
+                    result = _client.ReadString(Pos, Convert.ToUInt16(Length));
                     break;
                 default:
                     result = new IoTClient.Result<object>();
@@ -159,6 +173,13 @@
             address = DbNumber + "." + Pos;
         else
             address = DbNumber + Pos;
+        return this.SetPlcDBValue(PosType, address, Pos, Value);
+    }
+    /// <summary>
+    /// 鍐欏叆PLC鍊�
+    /// </summary>
+    public IoTClient.Result SetPlcDBValue(PLCDataTypeEnum PosType, string Pos, string Value)
+    {
         switch (PosType)
         {
             case PLCDataTypeEnum.Bit:
@@ -173,25 +194,25 @@
                         throw new Exception("鍐欏叆鍊奸敊璇�");
                     }
                 }
-                return _client.Write(address, bit);
+                return _client.Write(Pos, bit);
             case PLCDataTypeEnum.Byte:
-                return _client.Write(address, byte.Parse(Value));
+                return _client.Write(Pos, byte.Parse(Value));
             case PLCDataTypeEnum.Short:
-                return _client.Write(address, short.Parse(Value));
+                return _client.Write(Pos, short.Parse(Value));
             case PLCDataTypeEnum.UShort:
-                return _client.Write(address, ushort.Parse(Value));
+                return _client.Write(Pos, ushort.Parse(Value));
             case PLCDataTypeEnum.Int:
-                return _client.Write(address, int.Parse(Value));
+                return _client.Write(Pos, int.Parse(Value));
             case PLCDataTypeEnum.UInt:
-                return _client.Write(address, uint.Parse(Value));
+                return _client.Write(Pos, uint.Parse(Value));
             case PLCDataTypeEnum.Long:
-                return _client.Write(address, long.Parse(Value));
+                return _client.Write(Pos, long.Parse(Value));
             case PLCDataTypeEnum.ULong:
-                return _client.Write(address, ulong.Parse(Value));
+                return _client.Write(Pos, ulong.Parse(Value));
             case PLCDataTypeEnum.Float:
-                return _client.Write(address, float.Parse(Value));
+                return _client.Write(Pos, float.Parse(Value));
             case PLCDataTypeEnum.Double:
-                return _client.Write(address, float.Parse(Value));
+                return _client.Write(Pos, float.Parse(Value));
             default:
                 return new IoTClient.Result();
         }

--
Gitblit v1.8.0