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