From 9779597d3b080f008b25923ca84b600cd1dd8b9f Mon Sep 17 00:00:00 2001 From: blankboy <308416350@163.com> Date: Sat, 13 Apr 2019 22:02:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E5=AD=97=E8=8A=82=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SCADA/Program/DataService/CacheReader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SCADA/Program/DataService/CacheReader.cs b/SCADA/Program/DataService/CacheReader.cs index 84e88346..131af79d 100644 --- a/SCADA/Program/DataService/CacheReader.cs +++ b/SCADA/Program/DataService/CacheReader.cs @@ -389,7 +389,7 @@ public ItemData ReadInt32(DeviceAddress address) } else { - result = (_cache[startIndex + 1] << 16) | ((ushort)_cache[startIndex]); + result = (_cache[startIndex] << 16) | ((ushort)_cache[startIndex + 1]); } return new ItemData(result, 0, QUALITIES.QUALITY_GOOD); } From cca238e0439deff93e77bfd896e5d5fdccb6c4a8 Mon Sep 17 00:00:00 2001 From: blankboy <308416350@163.com> Date: Sat, 13 Apr 2019 22:07:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4ModbusRTU=20=E5=86=99?= =?UTF-8?q?=E5=8D=95=E4=B8=AA=E7=BA=BF=E5=9C=88=E5=92=8C=E5=86=99=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E5=AF=84=E5=AD=98=E5=99=A8=E7=9A=84=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SCADA/Program/ModbusDriver/ModbusRTUDriver.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index 86f807eb..52ac7d72 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -414,6 +414,17 @@ public DeviceAddress GetDeviceAddress(string address) dv.Bit--; } break; + case '5': + { + dv.DBNumber = Modbus.fctWriteSingleCoil; + int st; + int.TryParse(address.Substring(1), out st); + dv.Bit = (byte)(st % 16); + st /= 16; + dv.Start = st; + dv.Bit--; + } + break; case '1': { dv.DBNumber = Modbus.fctReadDiscreteInputs; @@ -457,6 +468,22 @@ public DeviceAddress GetDeviceAddress(string address) dv.ByteOrder = ByteOrder.BigEndian; } break; + case 'F': + { + int index = address.IndexOf('.'); + dv.DBNumber = Modbus.fctWriteMultipleRegister; + if (index > 0) + { + dv.Start = int.Parse(address.Substring(1, index - 1)); + dv.Bit = byte.Parse(address.Substring(index + 1)); + } + else + dv.Start = int.Parse(address.Substring(1)); + dv.Start--; + dv.Bit--; + dv.ByteOrder = ByteOrder.BigEndian; + } + break; } return dv; }