From 10f7da17512d9da1131b00549962e1e68e03c816 Mon Sep 17 00:00:00 2001 From: Gavin Date: Sun, 10 Dec 2017 22:25:06 +0800 Subject: [PATCH 1/7] fix bugs --- SCADA/Program/DataService/CacheReader.cs | 2 +- SCADA/Program/ModbusDriver/ModbusTCPDriver.cs | 2 +- .../Program/OmronPlcDriver/OmronUdpReader.cs | 27 +++++++++++++----- SCADA/dll/DataService.dll | Bin 81920 -> 82432 bytes SCADA/dll/ModbusDriver.dll | Bin 29184 -> 29184 bytes SCADA/dll/OmronPlcDriver.dll | Bin 17920 -> 18432 bytes 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/SCADA/Program/DataService/CacheReader.cs b/SCADA/Program/DataService/CacheReader.cs index 45819d9..ac64220 100644 --- a/SCADA/Program/DataService/CacheReader.cs +++ b/SCADA/Program/DataService/CacheReader.cs @@ -503,7 +503,7 @@ namespace DataService public unsafe ItemData ReadBit(DeviceAddress address) { - return new ItemData((_cache[address.CacheIndex] & (1 << address.Bit)) != 0, 0, QUALITIES.QUALITY_GOOD); + return new ItemData((_cache[address.CacheIndex] & (1 << address.Bit.BitSwap())) != 0, 0, QUALITIES.QUALITY_GOOD); } public ItemData ReadInt16(DeviceAddress address) diff --git a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs index febbb3e..c540f75 100644 --- a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs @@ -597,7 +597,7 @@ namespace ModbusDriver { while (addr.Start == next.Start) { - if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); + if ((tmp & (1 << next.Bit.BitSwap())) > 0) _changedList.Add(index); if (++index < count) next = _items[index].Address; else diff --git a/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs b/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs index 7d9a507..e8a5e15 100644 --- a/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs +++ b/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs @@ -23,7 +23,7 @@ namespace OmronPlcDriver //更新原因:根据现场进行参数调整以提高采集响应速度或者减小网络压力 /***************************************/ /// - /// PDU的值 + /// PDU的值,包大小上限 /// int _pdu; /// @@ -120,6 +120,7 @@ namespace OmronPlcDriver private int _timeout;//超时数据 private Socket udpSynCl; + //接受字符串 private byte[] udpSynClBuffer = new byte[1024]; short _id;//驱动id @@ -215,6 +216,7 @@ namespace OmronPlcDriver public OmronCsCjUDPReader(IDataServer server, short id, string name, string servername, int timeOut = 500, string spare1 = null, string spare2 = null) { + _id = id; _name = name; _server = server; @@ -229,6 +231,7 @@ namespace OmronPlcDriver _timeout = timeOut; byte.TryParse(spare1, out _plcNodeId); byte.TryParse(spare2, out _pcNodeId); + Console.WriteLine("id->" + _id.ToString() + " name->" + _name + " _server->" + _server + " _ip->" + _ip + " _port->" + _port + " _pdu->" + _pdu + " _timeout->" + _timeout + " plcNodeId->" + _plcNodeId + " pcNodeId->" + PcNodeId); } /// @@ -239,6 +242,8 @@ namespace OmronPlcDriver { try { + Console.WriteLine("开始连接"); + if (udpSynCl != null) udpSynCl.Close(); //IPAddress ip = IPAddress.Parse(_ip); @@ -267,7 +272,7 @@ namespace OmronPlcDriver /// /// 电脑节点号,设置和PLC节点不一致即可 /// 读取的起始地址 - /// 读取长度 + /// 读取长度,2个字节为一个单位 /// /// PLC节点号,可为0 /// @@ -373,7 +378,7 @@ namespace OmronPlcDriver // Read response data else if (function == 0x1) { - data = new byte[(write_data[16] * 256 + write_data[17])]; + data = new byte[(write_data[16] * 256 + write_data[17]) * 2]; Array.Copy(udpSynClBuffer, 14, data, 0, data.Length); } else @@ -492,18 +497,20 @@ namespace OmronPlcDriver internal void CallException(int id, byte function, byte exception) { if (udpSynCl == null) return; + Console.WriteLine("OmronReader错误->" + GetErrorString(exception)); if (exception == OmronCSCJ.excExceptionConnectionLost && IsClosed == false) { if (OnClose != null) OnClose(this, new ShutdownRequestEventArgs(GetErrorString(exception))); } + } /// /// 读取字节数组 /// /// 标签变量地址结构 - /// 长度 + /// 长度, /// public byte[] ReadBytes(DeviceAddress address, ushort size) { @@ -512,7 +519,7 @@ namespace OmronPlcDriver { len++; } - return WriteSyncData(CreateReadHeader(PcNodeId, address.Start, (ushort)(len / 2), (byte)address.DBNumber, (byte)address.Area)); + return WriteSyncData(CreateReadHeader(PcNodeId, address.Start, (ushort)(len), (byte)address.DBNumber, (byte)address.Area)); } /// /// 读取32位整数 @@ -704,18 +711,22 @@ namespace OmronPlcDriver protected override unsafe void Poll() { + //Console.WriteLine("开始遍历》》"); short[] cache = (short[])_cacheReader.Cache; int offset = 0; foreach (PDUArea area in _rangeList) { + //Console.WriteLine(">>读取:" + area.Start.DBNumber.ToString() + "@" + DateTime.Now.ToString()); byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 if (rcvBytes == null || rcvBytes.Length == 0) { + //Console.WriteLine(">>结果:" + area.Start.DBNumber.ToString() + "->失败"); continue; } else { - int len = rcvBytes.Length / 2; + //Console.WriteLine(">>结果:" + area.Start.DBNumber.ToString() + "->" + BitConverter.ToString(rcvBytes) + " at" + DateTime.Now.ToString()); + int len = area.Len;// rcvBytes.Length / 2; fixed (byte* p1 = rcvBytes) { short* prcv = (short*)p1; @@ -734,7 +745,8 @@ namespace OmronPlcDriver { while (addr.Start == next.Start) { - if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); + if ((tmp & 1 << next.Bit.BitSwap()) > 0) + _changedList.Add(index); if (++index < count) next = _items[index].Address; else @@ -753,6 +765,7 @@ namespace OmronPlcDriver { if (addr.DataSize <= 2) { + if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); } else diff --git a/SCADA/dll/DataService.dll b/SCADA/dll/DataService.dll index 9c34813784aadcca1a308bf2cd3f499cd13912f4..d9162941764aabe8f55ea9a97b5725c9a7a6cc31 100644 GIT binary patch delta 23161 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 HHqQSC4Xe3C diff --git a/SCADA/dll/ModbusDriver.dll b/SCADA/dll/ModbusDriver.dll index bd926e11cede6daac8006996b1154c8edc3a3367..a2c13111519f83efcadd653b63b247a2c35d381e 100644 GIT binary patch delta 329 zcmZp8!r1VHaY6_4DJR{D-Li~b6IX^aT1;kSRA*&qXJC+-tjMG@Ig(MGal+(A#(Ke= z4hAsr0Fq1$tPDMy1(~`H7&lFxYoy7P$29p4zxw3&M#79nlbMa3SynJIFiaLS5t$rk zEYEmta-Fe~U=f3M7=xgIxS(LQIRgWiM#tne#&L{OCUcv-W%Qi<)5OWK?eG8p_xOdF z{)zE0Fi7VI0#z~G(PCh5Gyz%3z>p2ZvOq=$5VL|E0})pQvKxV7i#FGqPS+AhT+;Z_ z`f9jWPr=f3+g}${ delta 315 zcmZp8!r1VHaY6_4St-ql-Li~r6IX^anoMS7RA>Fu#=symS&>O+awMZVW6$J9#(Kew z4hAsr0Fq1$tPCBS1(~`H7}rjoYoy7P$u#*6zxw3&M#7A`lbMa3Sr;<`l}&zVEIc{R zSf26XNhYrv~ zQ7{cMK!-@Q192t;Lr}0w@RAumo7WmIcU!!zai8+8O9q<_GC3H9VxXP_=_&)U6(%Z* eF=lK|%v#Gh(ST($U(PRPrVfkEf(7q^e0Bf{2~yzz diff --git a/SCADA/dll/OmronPlcDriver.dll b/SCADA/dll/OmronPlcDriver.dll index 8de55984237fb7e7a9ab00773abd7027656c88ed..40ee38611fa00ad12652e2ebde5153216bf0cbcb 100644 GIT binary patch delta 5748 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 Hv&i;;Ub`-B delta 5271 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 ep(Q<|OFw3!l!bacoV)gbNoM^s>)UX From c0706e7f03912972239f4612a8479ddfb044b810 Mon Sep 17 00:00:00 2001 From: Gavin Date: Mon, 11 Dec 2017 15:14:15 +0800 Subject: [PATCH 2/7] update cacheReader --- SCADA/Program/DataService/Alarm.cs | 63 --- SCADA/Program/DataService/CacheReader.cs | 4 +- SCADA/Program/DataService/DataService.csproj | 1 + SCADA/Program/DataService/DeviceAddress.cs | 4 +- SCADA/Program/DataService/Enums.cs | 99 ++++ SCADA/Program/DataService/ITag.cs | 20 - SCADA/Program/DataService/PLCGroup.cs | 275 +++++++++++ .../Program/ModbusDriver/ModbusDriver.csproj | 1 - SCADA/Program/ModbusDriver/ModbusRTUDriver.cs | 28 +- SCADA/Program/ModbusDriver/ModbusRTU_TCP.cs | 462 ------------------ SCADA/Program/ModbusDriver/ModbusTCPDriver.cs | 112 +---- .../Program/OmronPlcDriver/OmronUdpReader.cs | 103 +--- .../PanasonicDriver/PanasonicSerialReader.cs | 97 +--- .../SiemensPLCDriver/SiemensPLCDriver.cs | 81 --- SCADA/dll/DataService.dll | Bin 82432 -> 85504 bytes SCADA/dll/ModbusDriver.dll | Bin 29184 -> 23040 bytes SCADA/dll/OmronPlcDriver.dll | Bin 18432 -> 16896 bytes SCADA/dll/PanasonicDriver.dll | Bin 17408 -> 15872 bytes SCADA/dll/SiemensPLCDriver.dll | Bin 22528 -> 21504 bytes 19 files changed, 407 insertions(+), 943 deletions(-) create mode 100644 SCADA/Program/DataService/Enums.cs delete mode 100644 SCADA/Program/ModbusDriver/ModbusRTU_TCP.cs diff --git a/SCADA/Program/DataService/Alarm.cs b/SCADA/Program/DataService/Alarm.cs index 523fadc..a3feac5 100644 --- a/SCADA/Program/DataService/Alarm.cs +++ b/SCADA/Program/DataService/Alarm.cs @@ -157,67 +157,4 @@ namespace DataService } - [Flags] - public enum AlarmType - { - None = 0, - Level = 1, - Dev = 2, - Dsc = 4, - ROC = 8, - Quality = 16, - Complex = 32, - WordDsc = 64 - } - - [Flags] - public enum SubAlarmType - { - None = 0, - LoLo = 1, - Low = 2, - High = 4, - HiHi = 8, - MajDev = 16, - MinDev = 32, - Dsc = 64, - - BadPV = 128, - MajROC = 256, - MinROC = 512 - } - - public enum Severity - { - Error = 7, - High = 6, - MediumHigh = 5, - Medium = 4, - MediumLow = 3, - Low = 2, - Information = 1, - Normal = 0 - } - - [Flags] - public enum ConditionState : byte - { - Acked = 4, - Actived = 2, - Enabled = 1 - } - - public enum EventType : byte - { - Simple = 1, - TraceEvent = 2, - ConditionEvent = 4, - } - - public enum ConditionType : byte - { - Absolute = 0, - Percent = 1 - } - } diff --git a/SCADA/Program/DataService/CacheReader.cs b/SCADA/Program/DataService/CacheReader.cs index ac64220..e8eb183 100644 --- a/SCADA/Program/DataService/CacheReader.cs +++ b/SCADA/Program/DataService/CacheReader.cs @@ -503,7 +503,7 @@ namespace DataService public unsafe ItemData ReadBit(DeviceAddress address) { - return new ItemData((_cache[address.CacheIndex] & (1 << address.Bit.BitSwap())) != 0, 0, QUALITIES.QUALITY_GOOD); + return new ItemData((_cache[address.CacheIndex] & (1 << address.Bit)) != 0, 0, QUALITIES.QUALITY_GOOD); } public ItemData ReadInt16(DeviceAddress address) @@ -551,7 +551,7 @@ namespace DataService public int WriteBit(DeviceAddress address, bool bit) { - _cache[address.CacheIndex] |= (short)(1 << address.Bit.BitSwap()); + _cache[address.CacheIndex] |= (short)(1 << address.Bit); return 0; } diff --git a/SCADA/Program/DataService/DataService.csproj b/SCADA/Program/DataService/DataService.csproj index b811665..d77019b 100644 --- a/SCADA/Program/DataService/DataService.csproj +++ b/SCADA/Program/DataService/DataService.csproj @@ -158,6 +158,7 @@ + diff --git a/SCADA/Program/DataService/DeviceAddress.cs b/SCADA/Program/DataService/DeviceAddress.cs index 927ec42..16a2648 100644 --- a/SCADA/Program/DataService/DeviceAddress.cs +++ b/SCADA/Program/DataService/DeviceAddress.cs @@ -13,8 +13,9 @@ namespace DataService public ushort CacheIndex; public byte Bit; public DataType VarType; + public ByteOrder ByteOrder; - public DeviceAddress(int area, ushort dbnumber, ushort cIndex, int start, ushort size, byte bit, DataType type) + public DeviceAddress(int area, ushort dbnumber, ushort cIndex, int start, ushort size, byte bit, DataType type, ByteOrder order = ByteOrder.None) { Area = area; DBNumber = dbnumber; @@ -23,6 +24,7 @@ namespace DataService DataSize = size; Bit = bit; VarType = type; + ByteOrder = order; } public static readonly DeviceAddress Empty = new DeviceAddress(0, 0, 0, 0, 0, 0, DataType.NONE); diff --git a/SCADA/Program/DataService/Enums.cs b/SCADA/Program/DataService/Enums.cs new file mode 100644 index 0000000..ce7b7c1 --- /dev/null +++ b/SCADA/Program/DataService/Enums.cs @@ -0,0 +1,99 @@ +using System; + +namespace DataService +{ + + public enum DataSource + { + Cache = 1, + Device = 2 + } + + public enum DataType : byte + { + NONE = 0, + BOOL = 1, + BYTE = 3, + SHORT = 4, + WORD = 5, + TIME = 6, + INT = 7, + FLOAT = 8, + SYS = 9, + STR = 11 + } + + [Flags] + public enum ByteOrder : byte + { + None = 0, + BigEndian = 1, + LittleEndian = 2, + Network = 4, + Host = 8 + } + + + [Flags] + public enum AlarmType + { + None = 0, + Level = 1, + Dev = 2, + Dsc = 4, + ROC = 8, + Quality = 16, + Complex = 32, + WordDsc = 64 + } + + [Flags] + public enum SubAlarmType + { + None = 0, + LoLo = 1, + Low = 2, + High = 4, + HiHi = 8, + MajDev = 16, + MinDev = 32, + Dsc = 64, + + BadPV = 128, + MajROC = 256, + MinROC = 512 + } + + public enum Severity + { + Error = 7, + High = 6, + MediumHigh = 5, + Medium = 4, + MediumLow = 3, + Low = 2, + Information = 1, + Normal = 0 + } + + [Flags] + public enum ConditionState : byte + { + Acked = 4, + Actived = 2, + Enabled = 1 + } + + public enum EventType : byte + { + Simple = 1, + TraceEvent = 2, + ConditionEvent = 4, + } + + public enum ConditionType : byte + { + Absolute = 0, + Percent = 1 + } +} diff --git a/SCADA/Program/DataService/ITag.cs b/SCADA/Program/DataService/ITag.cs index a08c8df..f9f314d 100644 --- a/SCADA/Program/DataService/ITag.cs +++ b/SCADA/Program/DataService/ITag.cs @@ -579,26 +579,6 @@ namespace DataService } } - public enum DataSource - { - Cache = 1, - Device = 2 - } - - public enum DataType : byte - { - NONE = 0, - BOOL = 1, - BYTE = 3, - SHORT = 4, - WORD = 5, - TIME = 6, - INT = 7, - FLOAT = 8, - SYS = 9, - STR = 11 - } - public delegate void ValueChangingEventHandler(object sender, ValueChangingEventArgs e); public delegate void ValueChangedEventHandler(object sender, ValueChangedEventArgs e); diff --git a/SCADA/Program/DataService/PLCGroup.cs b/SCADA/Program/DataService/PLCGroup.cs index 0040a54..a125ae2 100644 --- a/SCADA/Program/DataService/PLCGroup.cs +++ b/SCADA/Program/DataService/PLCGroup.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Net; using System.Timers; namespace DataService @@ -683,4 +684,278 @@ namespace DataService Count = count; } } + + public sealed class NetBytePLCGroup : PLCGroup + { + public NetBytePLCGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) + { + this._id = id; + this._name = name; + this._updateRate = updateRate; + this._isActive = active; + this._plcReader = plcReader; + this._server = _plcReader.Parent; + this._timer = new Timer(); + this._changedList = new List(); + this._cacheReader = new NetByteCacheReader(); + } + + protected override void Poll() + { + if (_items == null || _items.Count == 0) return; + byte[] cache = (byte[])_cacheReader.Cache; + int offset = 0; + foreach (PDUArea area in _rangeList) + { + byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 + if (rcvBytes == null) + { + //_plcReader.Connect(); + continue; + } + else + { + int index = area.StartIndex;//index指向_items中的Tag元数据 + int count = index + area.Count; + while (index < count) + { + DeviceAddress addr = _items[index].Address; + int iByte = addr.CacheIndex; + int iByte1 = iByte - offset; + if (addr.VarType == DataType.BOOL) + { + int tmp = rcvBytes[iByte1] ^ cache[iByte]; + DeviceAddress next = addr; + if (tmp != 0) + { + while (addr.Start == next.Start) + { + if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); + if (++index < count) + next = _items[index].Address; + else + break; + } + } + else + { + while (addr.Start == next.Start && ++index < count) + { + next = _items[index].Address; + } + } + } + else + { + ushort size = addr.DataSize; + for (int i = 0; i < size; i++) + { + if (iByte1 + i < rcvBytes.Length && rcvBytes[iByte1 + i] != cache[iByte + i]) + { + _changedList.Add(index); + break; + } + } + index++; + } + } + for (int j = 0; j < rcvBytes.Length; j++) + cache[j + offset] = rcvBytes[j];//将PLC读取的数据写入到CacheReader中 + } + offset += rcvBytes.Length; + } + } + } + + public sealed class NetShortGroup : PLCGroup + { + public NetShortGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) + { + this._id = id; + this._name = name; + this._updateRate = updateRate; + this._isActive = active; + this._plcReader = plcReader; + this._server = _plcReader.Parent; + this._timer = new Timer(); + this._changedList = new List(); + this._cacheReader = new NetShortCacheReader(); + } + + protected override unsafe void Poll() + { + short[] cache = (short[])_cacheReader.Cache; + int offset = 0; + foreach (PDUArea area in _rangeList) + { + byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 + if (rcvBytes == null || rcvBytes.Length == 0) + { + offset += (area.Len + 1) / 2; + //_plcReader.Connect(); + continue; + } + else + { + int len = rcvBytes.Length / 2; + fixed (byte* p1 = rcvBytes) + { + short* prcv = (short*)p1; + int index = area.StartIndex;//index指向_items中的Tag元数据 + int count = index + area.Count; + while (index < count) + { + DeviceAddress addr = _items[index].Address; + int iShort = addr.CacheIndex; + int iShort1 = iShort - offset; + if (addr.VarType == DataType.BOOL) + { + if (addr.ByteOrder.HasFlag(ByteOrder.Network)) prcv[iShort1] = IPAddress.HostToNetworkOrder(prcv[iShort1]); + int tmp = prcv[iShort1] ^ cache[iShort]; + DeviceAddress next = addr; + if (tmp != 0) + { + while (addr.Start == next.Start) + { + if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); + if (++index < count) + next = _items[index].Address; + else + break; + } + } + else + { + while (addr.Start == next.Start && ++index < count) + { + next = _items[index].Address; + } + } + } + else + { + if (addr.DataSize <= 2) + { + if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); + } + else + { + int size = addr.DataSize / 2; + for (int i = 0; i < size; i++) + { + if (prcv[iShort1 + i] != cache[iShort + i]) + { + _changedList.Add(index); + break; + } + } + } + index++; + } + } + for (int j = 0; j < len; j++) + { + cache[j + offset] = prcv[j]; + }//将PLC读取的数据写入到CacheReader中 + } + offset += len; + } + } + } + } + + public sealed class ShortGroup : PLCGroup + { + public ShortGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) + { + this._id = id; + this._name = name; + this._updateRate = updateRate; + this._isActive = active; + this._plcReader = plcReader; + this._server = _plcReader.Parent; + this._timer = new Timer(); + this._changedList = new List(); + this._cacheReader = new ShortCacheReader(); + } + + protected override unsafe void Poll() + { + short[] cache = (short[])_cacheReader.Cache; + int k = 0; + foreach (PDUArea area in _rangeList) + { + byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 + if (rcvBytes == null) + { + continue; + } + else + { + int len = rcvBytes.Length / 2; + fixed (byte* p1 = rcvBytes) + { + short* prcv = (short*)p1; + int index = area.StartIndex;//index指向_items中的Tag元数据 + int count = index + area.Count; + while (index < count) + { + DeviceAddress addr = _items[index].Address; + int iShort = addr.CacheIndex; + int iShort1 = iShort - k; + if (addr.VarType == DataType.BOOL) + { + int tmp = prcv[iShort1] ^ cache[iShort]; + DeviceAddress next = addr; + if (tmp != 0) + { + while (addr.Start == next.Start) + { + if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); + if (++index < count) + next = _items[index].Address; + else + break; + } + } + else + { + while (addr.Start == next.Start && ++index < count) + { + next = _items[index].Address; + } + } + } + else + { + if (addr.DataSize <= 2) + { + if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); + } + else + { + int size = addr.DataSize / 2; + for (int i = 0; i < size; i++) + { + if (prcv[iShort1 + i] != cache[iShort + i]) + { + _changedList.Add(index); + break; + } + } + } + index++; + } + } + for (int j = 0; j < len; j++) + { + cache[j + k] = prcv[j]; + }//将PLC读取的数据写入到CacheReader中 + } + k += len; + } + } + } + + } } diff --git a/SCADA/Program/ModbusDriver/ModbusDriver.csproj b/SCADA/Program/ModbusDriver/ModbusDriver.csproj index d57f61d..afea990 100644 --- a/SCADA/Program/ModbusDriver/ModbusDriver.csproj +++ b/SCADA/Program/ModbusDriver/ModbusDriver.csproj @@ -104,7 +104,6 @@ - diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index dc6a133..03295a6 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -151,8 +151,8 @@ namespace ModbusDriver data[0] = _slaveId; // Slave id high byte data[1] = Modbus.fctWriteSingleCoil; // Function code byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address - data[3] = _adr[1]; // Start address + data[2] = _adr[1]; // Start address + data[3] = _adr[0]; // Start address if (OnOff) data[4] = 0xFF; byte[] arr = Utility.CalculateCrc(data, 6); data[6] = arr[0]; @@ -169,11 +169,11 @@ namespace ModbusDriver data[0] = _slaveId; // Slave id high byte 从站地址高八位 data[1] = Modbus.fctWriteMultipleCoils; // Function code 功能码 byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address 开始地址高八位 - data[3] = _adr[1]; // Start address 开始地址低八位 + data[2] = _adr[1]; // Start address 开始地址高八位 + data[3] = _adr[0]; // Start address 开始地址低八位 byte[] _length = BitConverter.GetBytes((short)numBits); - data[4] = _length[0]; // Number of data to read 寄存器数量高八位 - data[5] = _length[1]; // Number of data to read 寄存器数量低八位 + data[4] = _length[1]; // Number of data to read 寄存器数量高八位 + data[5] = _length[0]; // Number of data to read 寄存器数量低八位 data[6] = (byte)len; //字节数量 Array.Copy(values, 0, data, 7, len); //在data中加入变更数据 byte[] arr = Utility.CalculateCrc(data, len + 7); @@ -190,10 +190,10 @@ namespace ModbusDriver data[0] = _slaveId; // Slave id high byte 从站地址高八位 data[1] = Modbus.fctWriteSingleRegister; // Function code 功能码 byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address 开始地址高八位 - data[3] = _adr[1]; // Start address 开始地址高八位 - data[4] = values[0]; //变更数据的高位 - data[5] = values[1]; //变更数据的低位 + data[2] = _adr[1]; // Start address 开始地址高八位 + data[3] = _adr[0]; // Start address 开始地址高八位 + data[4] = values[1]; //变更数据的高位 + data[5] = values[0]; //变更数据的低位 byte[] arr = Utility.CalculateCrc(data, 6); data[6] = arr[0]; //CRC校验码低八位 data[7] = arr[1]; //CRC校验码高八位 @@ -210,11 +210,11 @@ namespace ModbusDriver data[0] = _slaveId; // Slave id high byte 从站地址 data[1] = Modbus.fctWriteMultipleRegister; // Function code 功能码 byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address 开始地址高八位 - data[3] = _adr[1]; // Start address 开始地址低八位 + data[2] = _adr[1]; // Start address 开始地址高八位 + data[3] = _adr[0]; // Start address 开始地址低八位 byte[] _length = BitConverter.GetBytes((short)(len >> 1)); - data[4] = _length[0]; // Number of data to read 寄存器数量高八位 - data[5] = _length[1]; // Number of data to read 寄存器数量低八位 + data[4] = _length[1]; // Number of data to read 寄存器数量高八位 + data[5] = _length[0]; // Number of data to read 寄存器数量低八位 data[6] = (byte)len; //字节数 Array.Copy(values, 0, data, 7, len); //把变更数据加入data中 byte[] arr = Utility.CalculateCrc(data, len + 7); diff --git a/SCADA/Program/ModbusDriver/ModbusRTU_TCP.cs b/SCADA/Program/ModbusDriver/ModbusRTU_TCP.cs deleted file mode 100644 index e8243f0..0000000 --- a/SCADA/Program/ModbusDriver/ModbusRTU_TCP.cs +++ /dev/null @@ -1,462 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Net.Sockets; -using System.Text; -using DataService; - -namespace ModbusDriver -{ - [Description("Modbus RTU_TCP协议")] - public sealed class ModbusRTU_TCPReader : IPLCDriver, IMultiReadWrite - { - private int _timeout; - - private Socket tcpSynCl; - private byte[] tcpSynClBuffer = new byte[0xFF]; - - short _id; - public short ID - { - get - { - return _id; - } - } - - string _name; - public string Name - { - get - { - return _name; - } - } - - int _slave = 1; - string _ip; - public string ServerName - { - get { return _ip; } - set { _ip = value; } - } - - public bool IsClosed - { - get - { - return tcpSynCl == null || tcpSynCl.Connected == false; - } - } - - public int TimeOut - { - get { return _timeout; } - set { _timeout = value; } - } - - List _grps = new List(20); - public IEnumerable Groups - { - get { return _grps; } - } - - IDataServer _server; - public IDataServer Parent - { - get { return _server; } - } - - public ModbusRTU_TCPReader(IDataServer server, short id, string name, string ip, int timeOut = 500, string spare1 = "1", string spare2 = null) - { - _id = id;//id - _name = name; - _server = server; - _ip = ip; - _timeout = timeOut; - if (!string.IsNullOrEmpty(spare1)) - _slave = int.Parse(spare1); - } - - public bool Connect() - { - int port = 7000; - try - { - if (tcpSynCl != null) - tcpSynCl.Close(); - //IPAddress ip = IPAddress.Parse(_ip); - // ---------------------------------------------------------------- - // Connect synchronous client - tcpSynCl = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - tcpSynCl.SendTimeout = _timeout; - tcpSynCl.ReceiveTimeout = _timeout; - tcpSynCl.NoDelay = true; - tcpSynCl.Connect(_ip, port); - return true; - } - catch (SocketException error) - { - if (OnClose != null) - OnClose(this, new ShutdownRequestEventArgs(error.Message)); - return false; - } - } - - private byte[] CreateReadHeader(int startAddress, ushort length, byte function) - { - byte[] data = new byte[8]; - data[0] = (byte)_slave; // Slave id high byte - data[1] = function; // Message size - byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address - data[3] = _adr[1]; // Start address - byte[] _length = BitConverter.GetBytes((short)length); - data[4] = _length[0]; // Number of data to read - data[5] = _length[1]; // Number of data to read - byte[] arr = Utility.CalculateCrc(data, 6); - data[6] = arr[0]; - data[7] = arr[1]; - return data; - } - - public byte[] WriteSingleCoils(int startAddress, bool OnOff) - { - byte[] data = new byte[8]; - data[0] = (byte)_slave; // Slave id high byte - data[1] = Modbus.fctWriteSingleCoil; // Function code - byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address - data[3] = _adr[1]; // Start address - if (OnOff) data[4] = 0xFF; - byte[] arr = Utility.CalculateCrc(data, 6); - data[6] = arr[0]; - data[7] = arr[1]; - return data; - } - - public byte[] WriteMultipleCoils(int startAddress, ushort numBits, byte[] values) - { - int len = values.Length; - byte[] data = new byte[len + 9]; - data[0] = (byte)_slave; // Slave id high byte - data[1] = Modbus.fctWriteMultipleCoils; // Function code - byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address - data[3] = _adr[1]; // Start address - byte[] _length = BitConverter.GetBytes((short)numBits); - data[4] = _length[0]; // Number of data to read - data[5] = _length[1]; // Number of data to read - data[6] = (byte)len; - Array.Copy(values, 0, data, 7, len); - byte[] arr = Utility.CalculateCrc(data, len + 7); - data[len + 7] = arr[0]; - data[len + 8] = arr[1]; - return data; - } - - public byte[] WriteSingleRegister(int startAddress, byte[] values) - { - byte[] data = new byte[8]; - data[0] = (byte)_slave; // Slave id high byte - data[1] = Modbus.fctWriteSingleRegister; // Function code - byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address - data[3] = _adr[1]; // Start address - data[4] = values[0]; - data[5] = values[1]; - byte[] arr = Utility.CalculateCrc(data, 6); - data[6] = arr[0]; - data[7] = arr[1]; - return data; - } - - public byte[] WriteMultipleRegister(int startAddress, byte[] values) - { - int len = values.Length; - if (len % 2 > 0) len++; - byte[] data = new byte[len + 9]; - data[0] = (byte)_slave; // Slave id high byte - data[1] = Modbus.fctWriteMultipleRegister; // Function code - byte[] _adr = BitConverter.GetBytes((short)startAddress); - data[2] = _adr[0]; // Start address - data[3] = _adr[1]; // Start address - byte[] _length = BitConverter.GetBytes((short)(len >> 1)); - data[4] = _length[0]; // Number of data to read - data[5] = _length[1]; // Number of data to read - data[6] = (byte)len; - Array.Copy(values, 0, data, 7, len); - byte[] arr = Utility.CalculateCrc(data, len + 7); - data[len + 7] = arr[0]; - data[len + 8] = arr[1]; - return data; - } - - public int PDU - { - get { return 252; } - //get { return 256; } - } - - public DeviceAddress GetDeviceAddress(string address) - { - DeviceAddress dv = DeviceAddress.Empty; - if (string.IsNullOrEmpty(address)) - return dv; - switch (address[0]) - { - case '0': - { - dv.Area = Modbus.fctReadCoil; - int st; - int.TryParse(address, out st); - //dv.Start = (st / 16) * 16;//??????????????????? - dv.Bit = (byte)(st % 16); - st /= 16; - dv.Start = st; - } - break; - case '1': - { - dv.Area = Modbus.fctReadDiscreteInputs; - int st; - int.TryParse(address.Substring(1), out st); - //dv.Start = (st / 16) * 16;//??????????????????? - dv.Bit = (byte)(st % 16); - st /= 16; - dv.Start = st; - } - break; - case '4': - { - int index = address.IndexOf('.'); - dv.Area = Modbus.fctReadHoldingRegister; - 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--; - } - break; - case '3': - { - int index = address.IndexOf('.'); - dv.Area = Modbus.fctReadInputRegister; - 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--; - } - break; - } - return dv; - } - - public string GetAddress(DeviceAddress address) - { - return string.Empty; - } - - - public IGroup AddGroup(string name, short id, int updateRate, float deadBand = 0f, bool active = false) - { - ModbusTcpGroup grp = new ModbusTcpGroup(id, name, updateRate, active, this); - _grps.Add(grp); - return grp; - } - - public bool RemoveGroup(IGroup grp) - { - grp.IsActive = false; - return _grps.Remove(grp); - } - - public void Dispose() - { - if (tcpSynCl != null) - { - if (tcpSynCl.Connected) - { - try { tcpSynCl.Shutdown(SocketShutdown.Both); } - catch { } - tcpSynCl.Close(); - } - tcpSynCl = null; - } - foreach (IGroup grp in _grps) - { - grp.Dispose(); - } - _grps.Clear(); - } - - public byte[] ReadBytes(DeviceAddress address, ushort size) - { - int area = address.Area; - try - { - if (!tcpSynCl.Connected) return null; - byte[] header = area == Modbus.fctReadCoil ? CreateReadHeader(address.Start * 16, (ushort)(16 * size), (byte)area) : - CreateReadHeader(address.Start, size, (byte)area); - tcpSynCl.Send(header, 0, header.Length, SocketFlags.None);//是否存在lock的问题? - byte[] frameBytes = new byte[size * 2 + 3]; - int result = tcpSynCl.Receive(frameBytes, 0, frameBytes.Length, SocketFlags.None); - byte[] data = new byte[size * 2]; - if (frameBytes[0] == (byte)_slave) - { - Array.Copy(frameBytes, 3, data, 0, data.Length); - return data; - } - else return new byte[0]; - } - catch (Exception e) - { - if (OnClose != null) - OnClose(this, new ShutdownRequestEventArgs(e.Message)); - return null; - } - } - - public ItemData ReadInt32(DeviceAddress address) - { - byte[] bit = ReadBytes(address, 2); - return bit == null ? new ItemData(0, 0, QUALITIES.QUALITY_BAD) : - new ItemData(BitConverter.ToInt32(bit, 0), 0, QUALITIES.QUALITY_GOOD); - } - - public ItemData ReadInt16(DeviceAddress address) - { - byte[] bit = ReadBytes(address, 1); - return bit == null ? new ItemData(0, 0, QUALITIES.QUALITY_BAD) : - new ItemData(BitConverter.ToInt16(bit, 0), 0, QUALITIES.QUALITY_GOOD); - } - - public ItemData ReadByte(DeviceAddress address) - { - byte[] bit = ReadBytes(address, 1); - return bit == null ? new ItemData(0, 0, QUALITIES.QUALITY_BAD) : - new ItemData(bit[0], 0, QUALITIES.QUALITY_GOOD); - } - - public ItemData ReadString(DeviceAddress address, ushort size) - { - byte[] bit = ReadBytes(address, size); - return bit == null ? new ItemData(string.Empty, 0, QUALITIES.QUALITY_BAD) : - new ItemData(Encoding.ASCII.GetString(bit), 0, QUALITIES.QUALITY_GOOD); - } - - public unsafe ItemData ReadFloat(DeviceAddress address) - { - byte[] bit = ReadBytes(address, 2); - return bit == null ? new ItemData(0f, 0, QUALITIES.QUALITY_BAD) : - new ItemData(BitConverter.ToSingle(bit, 0), 0, QUALITIES.QUALITY_GOOD); - //int value = BitConverter.ToInt32(bit, 0); - //return new ItemData(*(((float*)&value)), 0, QUALITIES.QUALITY_GOOD); - } - - public ItemData ReadBit(DeviceAddress address) - { - byte[] bit = ReadBytes(address, 1); - return bit == null ? new ItemData(false, 0, QUALITIES.QUALITY_BAD) : - new ItemData((bit[0] & (1 << (address.Bit))) > 0, 0, QUALITIES.QUALITY_GOOD); - } - - public ItemData ReadValue(DeviceAddress address) - { - return this.ReadValueEx(address); - } - - public int WriteBytes(DeviceAddress address, byte[] bit) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteMultipleRegister(address.Start, bit); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteBit(DeviceAddress address, bool bit) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteSingleCoils(address.Start + address.Bit, bit); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteBits(DeviceAddress address, byte bits) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteSingleRegister(address.Start, new byte[] { bits }); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteInt16(DeviceAddress address, short value) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteSingleRegister(address.Start, BitConverter.GetBytes(value)); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteInt32(DeviceAddress address, int value) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteMultipleRegister(address.Start, BitConverter.GetBytes(value)); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteFloat(DeviceAddress address, float value) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteMultipleRegister(address.Start, BitConverter.GetBytes(value)); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteString(DeviceAddress address, string str) - { - if (!tcpSynCl.Connected) return -1; - var data = WriteMultipleRegister(address.Start, Encoding.ASCII.GetBytes(str)); - tcpSynCl.Send(data, 0, data.Length, SocketFlags.None);//是否存在lock的问题? - int result = tcpSynCl.Receive(tcpSynClBuffer, 0, 0xFF, SocketFlags.None); - return (tcpSynClBuffer[1] & 0x80) > 0 ? -1 : 0; - } - - public int WriteValue(DeviceAddress address, object value) - { - return this.WriteValueEx(address, value); - } - - public event ShutdownRequestEventHandler OnClose; - - public int Limit - { - get { return 60; } - } - - public ItemData[] ReadMultiple(DeviceAddress[] addrsArr) - { - return this.PLCReadMultiple(new NetShortCacheReader(), addrsArr); - } - - public int WriteMultiple(DeviceAddress[] addrArr, object[] buffer) - { - return this.PLCWriteMultiple(new NetShortCacheReader(), addrArr, buffer, Limit); - } - } -} - diff --git a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs index c540f75..db25d08 100644 --- a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs @@ -44,6 +44,7 @@ namespace ModbusDriver dv.Bit = (byte)(st % 16); st /= 16; dv.Start = st; + dv.Bit--; } break; case '1': @@ -55,6 +56,7 @@ namespace ModbusDriver dv.Bit = (byte)(st % 16); st /= 16; dv.Start = st; + dv.Bit--; } break; case '4': @@ -69,6 +71,8 @@ namespace ModbusDriver else dv.Start = int.Parse(address.Substring(1)); dv.Start--; + dv.Bit--; + dv.ByteOrder = ByteOrder.Network; } break; case '3': @@ -83,6 +87,8 @@ namespace ModbusDriver else dv.Start = int.Parse(address.Substring(1)); dv.Start--; + dv.Bit--; + dv.ByteOrder = ByteOrder.Network; } break; } @@ -328,7 +334,7 @@ namespace ModbusDriver public IGroup AddGroup(string name, short id, int updateRate, float deadBand = 0f, bool active = false) { - ModbusTcpGroup grp = new ModbusTcpGroup(id, name, updateRate, active, this); + NetShortGroup grp = new NetShortGroup(id, name, updateRate, active, this); _grps.Add(grp); return grp; } @@ -393,11 +399,8 @@ namespace ModbusDriver internal void CallException(int id, byte function, byte exception) { if (tcpSynCl == null) return; - if (exception == Modbus.excExceptionConnectionLost && IsClosed == false) - { - if (OnClose != null) - OnClose(this, new ShutdownRequestEventArgs(GetErrorString(exception))); - } + if (OnClose != null) + OnClose(this, new ShutdownRequestEventArgs(GetErrorString(exception))); } public byte[] ReadBytes(DeviceAddress address, ushort size) @@ -547,101 +550,4 @@ namespace ModbusDriver return this.PLCWriteMultiple(new NetShortCacheReader(), addrArr, buffer, Limit); } } - - public sealed class ModbusTcpGroup : PLCGroup - { - public ModbusTcpGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) - { - this._id = id; - this._name = name; - this._updateRate = updateRate; - this._isActive = active; - this._plcReader = plcReader; - this._server = _plcReader.Parent; - this._timer = new Timer(); - this._changedList = new List(); - this._cacheReader = new NetShortCacheReader(); - } - - protected override unsafe void Poll() - { - short[] cache = (short[])_cacheReader.Cache; - int offset = 0; - foreach (PDUArea area in _rangeList) - { - byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 - if (rcvBytes == null || rcvBytes.Length == 0) - { - //offset += area.Len / 2; - //_plcReader.Connect(); - continue; - } - else - { - int len = rcvBytes.Length / 2; - fixed (byte* p1 = rcvBytes) - { - short* prcv = (short*)p1; - int index = area.StartIndex;//index指向_items中的Tag元数据 - int count = index + area.Count; - while (index < count) - { - DeviceAddress addr = _items[index].Address; - int iShort = addr.CacheIndex; - int iShort1 = iShort - offset; - if (addr.VarType == DataType.BOOL) - { - int tmp = prcv[iShort1] ^ cache[iShort]; - DeviceAddress next = addr; - if (tmp != 0) - { - while (addr.Start == next.Start) - { - if ((tmp & (1 << next.Bit.BitSwap())) > 0) _changedList.Add(index); - if (++index < count) - next = _items[index].Address; - else - break; - } - } - else - { - while (addr.Start == next.Start && ++index < count) - { - next = _items[index].Address; - } - } - } - else - { - if (addr.DataSize <= 2) - { - if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); - } - else - { - int size = addr.DataSize / 2; - for (int i = 0; i < size; i++) - { - if (prcv[iShort1 + i] != cache[iShort + i]) - { - _changedList.Add(index); - break; - } - } - } - index++; - } - } - for (int j = 0; j < len; j++) - { - cache[j + offset] = prcv[j]; - }//将PLC读取的数据写入到CacheReader中 - } - offset += len; - } - } - } - - } } diff --git a/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs b/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs index e8a5e15..8562a82 100644 --- a/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs +++ b/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs @@ -108,6 +108,7 @@ namespace OmronPlcDriver } break; } + dv.ByteOrder = ByteOrder.Network; return dv; } @@ -434,7 +435,7 @@ namespace OmronPlcDriver public IGroup AddGroup(string name, short id, int updateRate, float deadBand = 0f, bool active = false) { - OmronCsCjUDPGroup grp = new OmronCsCjUDPGroup(id, name, updateRate, active, this); + NetShortGroup grp = new NetShortGroup(id, name, updateRate, active, this); _grps.Add(grp); return grp; } @@ -694,106 +695,6 @@ namespace OmronPlcDriver } } - public sealed class OmronCsCjUDPGroup : PLCGroup - { - public OmronCsCjUDPGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) - { - this._id = id; - this._name = name; - this._updateRate = updateRate; - this._isActive = active; - this._plcReader = plcReader; - this._server = _plcReader.Parent; - this._timer = new Timer(); - this._changedList = new List(); - this._cacheReader = new NetShortCacheReader(); - } - - protected override unsafe void Poll() - { - //Console.WriteLine("开始遍历》》"); - short[] cache = (short[])_cacheReader.Cache; - int offset = 0; - foreach (PDUArea area in _rangeList) - { - //Console.WriteLine(">>读取:" + area.Start.DBNumber.ToString() + "@" + DateTime.Now.ToString()); - byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 - if (rcvBytes == null || rcvBytes.Length == 0) - { - //Console.WriteLine(">>结果:" + area.Start.DBNumber.ToString() + "->失败"); - continue; - } - else - { - //Console.WriteLine(">>结果:" + area.Start.DBNumber.ToString() + "->" + BitConverter.ToString(rcvBytes) + " at" + DateTime.Now.ToString()); - int len = area.Len;// rcvBytes.Length / 2; - fixed (byte* p1 = rcvBytes) - { - short* prcv = (short*)p1; - int index = area.StartIndex;//index指向_items中的Tag元数据 - int count = index + area.Count; - while (index < count) - { - DeviceAddress addr = _items[index].Address; - int iShort = addr.CacheIndex; - int iShort1 = iShort - offset; - if (addr.VarType == DataType.BOOL) - { - int tmp = prcv[iShort1] ^ cache[iShort]; - DeviceAddress next = addr; - if (tmp != 0) - { - while (addr.Start == next.Start) - { - if ((tmp & 1 << next.Bit.BitSwap()) > 0) - _changedList.Add(index); - if (++index < count) - next = _items[index].Address; - else - break; - } - } - else - { - while (addr.Start == next.Start && ++index < count) - { - next = _items[index].Address; - } - } - } - else - { - if (addr.DataSize <= 2) - { - - if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); - } - else - { - int size = addr.DataSize / 2; - for (int i = 0; i < size; i++) - { - if (prcv[iShort1 + i] != cache[iShort + i]) - { - _changedList.Add(index); - break; - } - } - } - index++; - } - } - for (int j = 0; j < len; j++) - { - cache[j + offset] = prcv[j]; - }//将PLC读取的数据写入到CacheReader中 - } - offset += len; - } - } - } - } - /// /// 欧姆龙Omron CS/CJ系列PLC数据区功能号和错误代码常数定义类 /// diff --git a/SCADA/Program/PanasonicDriver/PanasonicSerialReader.cs b/SCADA/Program/PanasonicDriver/PanasonicSerialReader.cs index 802ac82..8ec1488 100644 --- a/SCADA/Program/PanasonicDriver/PanasonicSerialReader.cs +++ b/SCADA/Program/PanasonicDriver/PanasonicSerialReader.cs @@ -94,7 +94,7 @@ namespace PanasonicPLCriver public IGroup AddGroup(string name, short id, int updateRate, float deadBand = 0, bool active = false) { - PanasonicGroup grp = new PanasonicGroup(id, name, updateRate, active, this); + NetShortGroup grp = new NetShortGroup(id, name, updateRate, active, this); _grps.Add(grp); return grp; } @@ -211,6 +211,7 @@ namespace PanasonicPLCriver break; } } + dv.ByteOrder = ByteOrder.Network; return dv; } #region 实现了四个命令 其余没有做 @@ -554,100 +555,6 @@ namespace PanasonicPLCriver } #endregion } - public sealed class PanasonicGroup : PLCGroup - { - public PanasonicGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) - { - this._id = id; - this._name = name; - this._updateRate = updateRate; - this._isActive = active; - this._plcReader = plcReader; - this._server = _plcReader.Parent; - this._timer = new System.Timers.Timer(); - this._changedList = new List(); - this._cacheReader = new NetShortCacheReader(); - } - - protected override void Poll() - { - short[] cache = (short[])_cacheReader.Cache; - int offset = 0; - foreach (PDUArea area in _rangeList) - { - byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 - if (rcvBytes == null || rcvBytes.Length == 0) - { - continue; - } - else - { - int len = rcvBytes.Length / 2; - short[] prcv = new short[rcvBytes.Length / 2]; - for (int i = 0; i < prcv.Length; i++) - prcv[i] = IPAddress.HostToNetworkOrder(BitConverter.ToInt16(rcvBytes, i * 2)); - int index = area.StartIndex;//index指向_items中的Tag元数据 - int count = index + area.Count; - while (index < count) - { - DeviceAddress addr = _items[index].Address; - int iShort = addr.CacheIndex; - int iShort1 = iShort - offset; - if (addr.VarType == DataType.BOOL) - { - short tt = prcv[iShort1]; - short tmp = IPAddress.HostToNetworkOrder((short)(tt ^ cache[iShort])); - DeviceAddress next = addr; - if (tmp != 0) - { - while (addr.Start == next.Start) - { - short ne = (short)(1 << next.Bit); - if ((tmp & (ne)) > 0) _changedList.Add(index); - if (++index < count) - next = _items[index].Address; - else - break; - } - } - else - { - while (addr.Start == next.Start && ++index < count) - { - next = _items[index].Address; - } - } - } - else - { - if (addr.DataSize <= 2) - { - if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); - } - else - { - int size = addr.DataSize / 2; - for (int i = 0; i < size; i++) - { - if (prcv[iShort1 + i] != cache[iShort + i]) - { - _changedList.Add(index); - break; - } - } - } - index++; - } - } - for (int j = 0; j < len; j++) - { - cache[j + offset] = prcv[j]; - }//将PLC读取的数据写入到CacheReader中 - offset += len; - } - } - } - } public struct Panasonic { diff --git a/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs b/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs index 8933f61..f09e4fe 100644 --- a/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs +++ b/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs @@ -719,85 +719,4 @@ namespace SiemensPLCDriver public event ShutdownRequestEventHandler OnClose; } - public sealed class NetBytePLCGroup : PLCGroup - { - public NetBytePLCGroup(short id, string name, int updateRate, bool active, IPLCDriver plcReader) - { - this._id = id; - this._name = name; - this._updateRate = updateRate; - this._isActive = active; - this._plcReader = plcReader; - this._server = _plcReader.Parent; - this._timer = new Timer(); - this._changedList = new List(); - this._cacheReader = new NetByteCacheReader(); - } - - protected override void Poll() - { - if (_items == null || _items.Count == 0) return; - byte[] cache = (byte[])_cacheReader.Cache; - int offset = 0; - foreach (PDUArea area in _rangeList) - { - byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 - if (rcvBytes == null) - { - //_plcReader.Connect(); - continue; - } - else - { - int index = area.StartIndex;//index指向_items中的Tag元数据 - int count = index + area.Count; - while (index < count) - { - DeviceAddress addr = _items[index].Address; - int iByte = addr.CacheIndex; - int iByte1 = iByte - offset; - if (addr.VarType == DataType.BOOL) - { - int tmp = rcvBytes[iByte1] ^ cache[iByte]; - DeviceAddress next = addr; - if (tmp != 0) - { - while (addr.Start == next.Start) - { - if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); - if (++index < count) - next = _items[index].Address; - else - break; - } - } - else - { - while (addr.Start == next.Start && ++index < count) - { - next = _items[index].Address; - } - } - } - else - { - ushort size = addr.DataSize; - for (int i = 0; i < size; i++) - { - if (iByte1 + i < rcvBytes.Length && rcvBytes[iByte1 + i] != cache[iByte + i]) - { - _changedList.Add(index); - break; - } - } - index++; - } - } - for (int j = 0; j < rcvBytes.Length; j++) - cache[j + offset] = rcvBytes[j];//将PLC读取的数据写入到CacheReader中 - } - offset += rcvBytes.Length; - } - } - } } diff --git a/SCADA/dll/DataService.dll b/SCADA/dll/DataService.dll index d9162941764aabe8f55ea9a97b5725c9a7a6cc31..63c7cfb33b083cc492906da5e2df6fc8025ac986 100644 GIT binary patch literal 85504 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 R%Z2z5UYhyezyEm>_&?qXSsefX literal 82432 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

uj}{#d_n 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 P|6iZ=|K|8VzX$#=e*hU* diff --git a/SCADA/dll/ModbusDriver.dll b/SCADA/dll/ModbusDriver.dll index a2c13111519f83efcadd653b63b247a2c35d381e..dcda474c863a9e15f0dd4c159a9b99a71ae3e87d 100644 GIT binary patch delta 7095 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 P_lUlfRi{~RmFK?!>U#86 delta 11642 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 K-;3S`>;C|P9gCj; diff --git a/SCADA/dll/OmronPlcDriver.dll b/SCADA/dll/OmronPlcDriver.dll index 40ee38611fa00ad12652e2ebde5153216bf0cbcb..7d62b05708c4c3bfc5e3b8a4d692b6621078e517 100644 GIT binary patch delta 5030 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 I;X3>O0qv)E!vFvP delta 6546 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 OePW+A`9rp^R{vjK;}muP diff --git a/SCADA/dll/SiemensPLCDriver.dll b/SCADA/dll/SiemensPLCDriver.dll index 632f7202037b64c0fd96f2c839f6788e8fadcdae..f4b07592801de9c6f526d826f8e310f307a444ff 100644 GIT binary patch delta 7751 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 Date: Mon, 11 Dec 2017 15:19:31 +0800 Subject: [PATCH 3/7] update example --- SCADA/Example/BatchCoreTest.exe | Bin 53248 -> 58880 bytes SCADA/Example/ClientDriver.dll | Bin 24064 -> 26624 bytes SCADA/Example/DataHelper.dll | Bin 40448 -> 44544 bytes SCADA/Example/DataService.dll | Bin 72192 -> 85504 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/SCADA/Example/BatchCoreTest.exe b/SCADA/Example/BatchCoreTest.exe index c9c9adf5e7022059d0965ed2b18e8868273405f8..40bc00b7797c81b7bd542f8303cad90dab75e9b3 100644 GIT binary patch literal 58880 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

=Ko7&=(I zr8uqw?@;3J%&VKz-1&Syee)ZRd~-_%&L`(gbU(f^MA?t;YZl!1csqB&aOhOarnMFa zwiur%-{k&vk2;UTs(j;BmA}tJ&uPA;(CHU?`5WNzlG0slojmC9-DC+j9koRF<F{twRl(!FM*%DFB*#dY=sQQ(Pc93G}Sd*a&a`Db4~QRUQO zYopfS{OQ>fJ8}2KFTFZ7J~e(OIf7ONMXP)E#CE6kO4lBA?>^g1f|qC4+s#*M-RA7w z(ReJceFp zyUX_p+-`qLdOm-`+R-;h`nPqkE#!f8IQRygdfd5wmq=d buOjT9_Vs^QAJDe?%1?{npWFRo=D`00fjD+_ literal 53248 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 DR|EjG literal 24064 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 Mbp6lI|92Mn@3zroq5uE@ diff --git a/SCADA/Example/DataHelper.dll b/SCADA/Example/DataHelper.dll index bba0fd8823b6e1c9acdeb20fff93af9727675945..6e01c14ba0c480eea986c76770497f1e78ef2c62 100644 GIT binary patch literal 44544 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 D-+AIA literal 40448 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 C_mlbn diff --git a/SCADA/Example/DataService.dll b/SCADA/Example/DataService.dll index ce190f3ad69e6e9a030fc732a08457cfcfa259db..89c63d2ddc25655bb84c013b1199da45705a3ce9 100644 GIT binary patch literal 85504 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

A|

-B;ouyBBf0!B-I{c(&#GNNClI_ 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 Date: Mon, 11 Dec 2017 16:58:04 +0800 Subject: [PATCH 4/7] update dll folder --- SCADA/Program/ModbusDriver/ModbusRTUDriver.cs | 233 +++--------------- SCADA/dll/FileDriver.dll | Bin 31232 -> 33280 bytes SCADA/dll/ModbusDriver.dll | Bin 23040 -> 21504 bytes SCADA/dll/OPCDriver.dll | Bin 23552 -> 23552 bytes 4 files changed, 33 insertions(+), 200 deletions(-) diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index 03295a6..be6ca2a 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -84,7 +84,7 @@ namespace ModbusDriver public IGroup AddGroup(string name, short id, int updateRate, float deadBand = 0f, bool active = false) { - ModbusRtuGroup grp = new ModbusRtuGroup(id, name, updateRate, active, this); + ShortGroup grp = new ShortGroup(id, name, updateRate, active, this); _grps.Add(grp); return grp; } @@ -247,43 +247,37 @@ namespace ModbusDriver set { _slaveId = value; } } - public DeviceAddress GetDeviceAddress(string address)//PLC地址一般为5位 如40001,也有可能为40001.1 首位代表地址类型 + public DeviceAddress GetDeviceAddress(string address) { DeviceAddress dv = DeviceAddress.Empty; if (string.IsNullOrEmpty(address)) return dv; switch (address[0]) { - case '0'://功能码:01 读线圈或离散量输出状态 00001 - 09999:数字量输出( 线圈) + case '0': { dv.Area = Modbus.fctReadCoil; int st; int.TryParse(address, out st); - //delete : if st<16, execute st /= 16, st will equal 0, in func ReadBytes() address.Start * 16 has no effect - //dv.Bit = (byte)(st % 16); - //st /= 16; + dv.Bit = (byte)(st % 16); + st /= 16; dv.Start = st; - //add : use PLC address(base 1) - dv.Start--; } break; - case '1'://功能码:02 读离散量输入 10001 - 19999:数字量输入(触点) + case '1': { dv.Area = Modbus.fctReadDiscreteInputs; int st; int.TryParse(address.Substring(1), out st); - //delete : if st<16, execute st /= 16, st will equal 0, in func ReadBytes() address.Start * 16 has no effect - //dv.Bit = (byte)(st % 16); - //st /= 16; + dv.Bit = (byte)(st % 16); + st /= 16; dv.Start = st; - //add : use PLC address(base 1) - dv.Start--; } - break; + break; case '4': { int index = address.IndexOf('.'); - dv.Area = Modbus.fctReadHoldingRegister;//功能码:03 读取保持寄存器 40001 - 49999:数据保持寄存器 + dv.Area = Modbus.fctReadHoldingRegister; if (index > 0) { dv.Start = int.Parse(address.Substring(1, index - 1)); @@ -291,13 +285,13 @@ namespace ModbusDriver } else dv.Start = int.Parse(address.Substring(1)); - dv.Start--; //PLC的寄存器地址比modbus协议的通讯地址大1 如:40002 对应寻 址地址 0x0001 + dv.Start--; } break; case '3': { int index = address.IndexOf('.'); - dv.Area = Modbus.fctReadInputRegister;//功能码:04读输入寄存器 30001 - 39999:输入数据寄存器(通常为模拟量输入) + dv.Area = Modbus.fctReadInputRegister; if (index > 0) { dv.Start = int.Parse(address.Substring(1, index - 1)); @@ -305,10 +299,11 @@ namespace ModbusDriver } else dv.Start = int.Parse(address.Substring(1)); - dv.Start--; //PLC的寄存器地址比modbus协议的通讯地址大1 如:40002 对应寻 址地址 0x0001 + dv.Start--; } break; } + dv.Bit--; return dv; } @@ -323,53 +318,31 @@ namespace ModbusDriver public byte[] ReadBytes(DeviceAddress address, ushort size) { int area = address.Area; - - //no need to multiply by 16 - //byte[] header = area == Modbus.fctReadCoil ? CreateReadHeader(address.Start * 16, (ushort)(16 * size), (byte)area) : - // CreateReadHeader(address.Start, size, (byte)area); - byte[] header = CreateReadHeader(address.Start, size, (byte)area); - lock (_async) + try { - try + byte[] header = area == Modbus.fctReadCoil ? CreateReadHeader(address.Start * 16, (ushort)(16 * size), (byte)area) : + CreateReadHeader(address.Start, size, (byte)area); + _serialPort.Write(header, 0, header.Length); + byte[] frameBytes = new byte[size * 2 + 5]; + byte[] data = new byte[size * 2]; + int numBytesRead = 0; + lock (_async) { - _serialPort.Write(header, 0, header.Length); - /* different function_code have different realy frameBytes - * function_code 1/2: one register variable use one bit - * function_code 3/4: one register variable use two bytes - */ - int modbus_rtu_replay_frameBytes_size = 0; - int modbus_rtu_replay_data_size = 0; - switch (area) + while (numBytesRead != size) + numBytesRead += _serialPort.Read(frameBytes, numBytesRead, size - numBytesRead); + if (frameBytes[0] == (byte)_id && Utility.CheckSumCRC(frameBytes)) { - case 1: - case 2: - modbus_rtu_replay_frameBytes_size = size / 8 + 1 + 5; - break; - case 3: - case 4: - modbus_rtu_replay_frameBytes_size = size * 2 + 5; - break; - } - modbus_rtu_replay_data_size = modbus_rtu_replay_frameBytes_size - 5; - - byte[] frameBytes = new byte[modbus_rtu_replay_frameBytes_size]; - byte[] data = new byte[modbus_rtu_replay_data_size]; - int numBytesRead = 0; - while (numBytesRead != modbus_rtu_replay_frameBytes_size) - numBytesRead += _serialPort.Read(frameBytes, numBytesRead, modbus_rtu_replay_frameBytes_size - numBytesRead); - if (frameBytes[0] == _slaveId && Utility.CheckSumCRC(frameBytes)) - { - Array.Copy(frameBytes, 3, data, 0, modbus_rtu_replay_data_size); + Array.Copy(frameBytes, 3, data, 0, size); return data; } - return null; - } - catch (Exception e) - { - if (OnClose != null) - OnClose(this, new ShutdownRequestEventArgs(e.Message)); - return null; } + return null; + } + catch (Exception e) + { + if (OnClose != null) + OnClose(this, new ShutdownRequestEventArgs(e.Message)); + return null; } } @@ -503,146 +476,6 @@ namespace ModbusDriver #endregion } - public sealed class ModbusRtuGroup : PLCGroup - { - public ModbusRtuGroup(short id, string name, int updateRate, bool active, ModbusRTUReader plcReader) - { - this._id = id; - this._name = name; - this._updateRate = updateRate; - this._isActive = active; - this._plcReader = plcReader; - this._server = _plcReader.Parent; - this._timer = new Timer(); - this._changedList = new List(); - this._cacheReader = new ShortCacheReader(); - } - - protected override unsafe void Poll() - { - short[] cache = (short[])_cacheReader.Cache; - int k = 0; - foreach (PDUArea area in _rangeList) - { - byte[] rcvBytes = _plcReader.ReadBytes(area.Start, (ushort)area.Len);//从PLC读取数据 - if (rcvBytes == null) - { - continue; - } - else - { - //function code = 01 or 02 - if ((area.Start.Area == 1) || (area.Start.Area == 2)) - { - fixed (byte* p1_coil = rcvBytes) - { - byte* prcv_coil = p1_coil; - int index = area.StartIndex;//index指向_items中的Tag元数据 - int count = index + area.Count; - int len = rcvBytes.Length; - for (int rcvBytes_index = 0; rcvBytes_index < len; rcvBytes_index++) //for index whitch byte - { - for (int rcvBytes_bit_index = 0; rcvBytes_bit_index < 8; rcvBytes_bit_index++) //for index whitch bit - { - short change_flag = 0; - if ((prcv_coil[rcvBytes_index] & (0x01 << rcvBytes_bit_index)) != 0) - { - change_flag = 1; - } - int tmp = change_flag ^ cache[index]; - if (tmp != 0) - { - _changedList.Add(index); - cache[index] = change_flag; - } - index++; - if (index >= count) - { - break; - } - } - } - } - } - else //function code = 03 or 04 - { - #region apply on small endian, if you are big endian, no need to do this - byte exchange_temp; - for (int index = 0; index < rcvBytes.Length; index = index + 2) - { - exchange_temp = rcvBytes[index + 1]; - rcvBytes[index + 1] = rcvBytes[index]; - rcvBytes[index] = exchange_temp; - } - #endregion - - int len = rcvBytes.Length / 2; - fixed (byte* p1 = rcvBytes) - { - short* prcv = (short*)p1; - int index = area.StartIndex;//index指向_items中的Tag元数据 - int count = index + area.Count; - while (index < count) - { - DeviceAddress addr = _items[index].Address; - int iShort = addr.CacheIndex; - int iShort1 = iShort - k; - if (addr.VarType == DataType.BOOL) - { - int tmp = prcv[iShort1] ^ cache[iShort]; - DeviceAddress next = addr; - if (tmp != 0) - { - while (addr.Start == next.Start) - { - if ((tmp & (1 << next.Bit)) > 0) _changedList.Add(index); - if (++index < count) - next = _items[index].Address; - else - break; - } - } - else - { - while (addr.Start == next.Start && ++index < count) - { - next = _items[index].Address; - } - } - } - else - { - if (addr.DataSize <= 2) - { - if (prcv[iShort1] != cache[iShort]) _changedList.Add(index); - } - else - { - int size = addr.DataSize / 2; - for (int i = 0; i < size; i++) - { - if (prcv[iShort1 + i] != cache[iShort + i]) - { - _changedList.Add(index); - break; - } - } - } - index++; - } - } - for (int j = 0; j < len; j++) - { - cache[j + k] = prcv[j]; - }//将PLC读取的数据写入到CacheReader中 - } - k += len; - } - } - } - } - } - public sealed class Modbus { diff --git a/SCADA/dll/FileDriver.dll b/SCADA/dll/FileDriver.dll index aba72bfb4b6f1c974da77ee98c86407f3af3ac5b..f2b4ccaad330e1952b6173fa1e7c4a749125231d 100644 GIT binary patch literal 33280 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 G2L3PE-f;T> literal 31232 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 literal 23040 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 a|6w1j`(X&17T?PL50m=;1^tOw;Qs>BLoFr% diff --git a/SCADA/dll/OPCDriver.dll b/SCADA/dll/OPCDriver.dll index 5d267f2150bd0f64a5d40225c2169a6cadadf7c0..4084950f7a7c4fc6e5cd36319387bb1aba47ee50 100644 GIT binary patch delta 4718 zcmb_gdstOf7GG)FWDo5#&2pN-M@mhWk0hriEg#>kz3;L5YUYo=Z|?Q}&ieh<+Iz3H z&pvw}tlEoJd-3sA(jSKPs;`T}4)xo|;UNn#UU|G6AkvCqN!ECb$7rh>eGxb3g81A^ z$UuS1SpeI50iYFBkmk>24=~9A+16j>%Xq)FUP%f47J0lQp$~u&b{j)HL7w#2tk0CY zdfpo;U%<7^ zc7=q8b-3fYOSpPeQg7kjJ7QWuEFiIcP^UX;|A3mr2Ua@|3F~ZzSqa+n?8jTyF|BK2 zCMCc>ov6Hz>35X@gcFaasUQ;!(z=t8>W|VV8#u{Y8hjHcTcg_zvzkLrSQR0it#ctm z{NJ_9abSsmP^Y8nz{qw0T^|KlMb{%9vh(N9o%!(ed3>0HSOA%>T?_N!ezLvX9#)u> zP1hO32Ut1X;&Fym-mNI8i&KTY8pmAq3)2Hx*4b{!qa@;4D#uUNmmDg*qrRZ4(A{0< zFd)X*EUAz!*E!tK)lnuH;3LI=IFsu~A%Ph%P3QJXvfYql6~#q_^AWZwUzjSC&^T^r z!gRL*x@oPA3(w%@mojhC>ZqgP7E(hM>NGyw8!q0t&N#j*ahyw?2g4zX*$?IWCjRsMF`&^)&hc#=8cE)_= zHSaR&Enj?8bfe1+S13;v##6N_q*5yto;5e>1}vbltUdA3zP%=Qm6^FN1FnlHSmEJQ zvl^cu{Up_(LPz9yTTEY@lh^r-NTZHzq-njTb8jv6V}L}}sxT3_@(m?JcMQ6ThXR3r zy%28PHZq0H*?6y@Uh!;rA;Gw9O-s1jXKD!JO%LHAJ%ljF6-nrF#1a;|;|bqadJyKa z-h{(h3SqFEMwnw>q0XC;W2lH9WM+_V8bb(=7oIf)_%C}YTefnDNl zG~tFQo*X>j8aeRE1R8A z)=@V1cHtw`z(9SIkLY5XKB8>ZG-wj+JjS`=6&;e|L^Al9vq^Kn5u5dP`85OXrze>T z!u`stnhB=`tAQ$P)?5Gy0pAC%_cS+@*lZpyJ)`-8K~DOR~Qic1R*?KhS z$pPO}Fh=hJxi$;KaeAx|*4dP~C+l%=&SvNJ>3Rah_6;7hJb}*@{Z5@@?9IY4~uarR~fv| z8YooW)*plo0|IQ0^Mw8oWcvmN224~=>!na>vwp;8!|nh>)#HVS;j-;}nr*@|&<6$D z-HYpqMcXXi(+p*IQgftukXWki}z~Y>_BE9GQ+s0FNBgT&T4c%{30l|8Go7< z!GbK{z|%IHs5HYPu-Rs_6eQMUvvg^m zwgg_X8Gp2wz`g*Z+oVDzyhV(vst<28nWOSo&Z8o9IhdgS%C{6w*}hb8T3`1}ju=kQ z8^T4}H)&fF_As5ldknYIdPVsb(?Q8~ub074#_hAheuuW2|EJAI{I?e9^A~m>O6b2j z{+Dh^y)&opprmD(O6QXTpS$@fl|k_uv`~>cJ z7eP_@U1~GDUOE*BscR|;p&WS^A6n&oX5m8XOrMU^EfXOK_(F;xG$4`C3&{f01!fA& z5tt`%yuhi1p)ga}A6xepJs zj~qpqjwhsIifMAGP|v2jr<2X=N`)onavT7S?k8~{@Q4368|&GG^}u(Rec<=GUc@}S zPGz*Pb@D5?9cFm;Q{&P4n|K&{yWYiGHs5iK?ET7T7zr1&Z^_FiqMax#n}$hdt!%6# zjkUsJmdo<+mfRc1W1BXK)v`~tV%CUFjzVa}liCbYoH&b=jx>FZ_zd`xpq4%1nM0CK zP9b}@SwTU!^+(xE{7|PiATiV9@oCR;(iyH|E$oE6hK)xw8rVK)P#Rea4g6;|QY18z zDn7{ysNyy@5gzkAi4)u!M<)giSKwwFo(jln*;@UBasP0Nx>xkSj7QlZQj z%6y^B7fPj2Duq%hlodi*A(RzDSuK>+LRl@8JS^0|lxmrwT$E^b4SFGD(QaAxRg3%7 zhzC8B7)nd!Zt@mB;ill51v(?}emkl&&hO$j8 zlkE`ZiBxKVzZGp0leSX~){1YKc}ff$=9#MO6pL}ESZ*yi$62A&vQqa-C7F`;!eJaJ zZ%`WGsPkoIH}(9ka)5f4r6Z#51ES9cVK;zpiK(b3#N9eA?$&Y4FuJOz#XUPALN8!6 z9XJ1^B$C+%xaulWH;Cag**G>s&15e3T=h7ehzr#Q@pRORb#4ehR_Z5xQCP{h0=%;z1eM~jY)+qsB1brPkJvpu$`Z z4wpI+9+0~bKH-id%rcV*hq{sppJ6}8r+IjMAaai#&m*f{89(WPo`>kX)zAIwbPpN* z`IQ9BYD+tww*=Q<0z1ymvm30xG*POM)=95OA4zqxCAU*XD6c6WDW{arl_0f)TByoZ z{2=?~=QbT}{4e%9pDk8UdPd|HwT?#R=RTvACDDdHoOQ+;xidbc_#aANWT;sc^QVoO z>pwFzUkL^nErrHrZ7v&HzqK zgp-A>)HNwMkAF>I!PT{afBrqAx+6APt)pLw*oeViBN|y~aP>wEp?3`yR2>r;RK3Oj z;+PMloRs&7bikYbmVzksyYKr^Vv#BSpa~GK7ZgpD#_(Xq zU_QR`OUg0xjwO@RfcDbQ$LMFJnI)6YsW6L~q8w+|-uLvF*B>+ATs*(Ce!so;+H38z z&))Z1bpWdl;8Sa*9;f@%ua8Dn-#iKTnuv)?c_~1Y>18QqAts`3R--TC(h?A#96|;P zTpI@PR4M?P-hu)C@oX}abhyX-wfs3wFn^`=>-Gh5e_K)-fDv{ZL)<~`%-766DtGt( zhV;I46b9sx;|q7;lvZEdNRQvEuM^2zgK_Az-eZ6@GY}3G{#&Unryxma)y-0LwfoTgx1<{ zhJRSk6Y7xgP=L6{0cz;p>LxqCY{|SubC&X9M#KZibdQ^u4>@FexIJ>>s1bDk1@VFA zm|lrE$9$yMw4iW@3I{ZfyP$B)&$HWl7d_vk9by4Kqa@EY4B z6-LPGZ7ztjl}H9WLW%)VcCMd*Bxb-Yo!hI)cEM0{dO}1xAK`iBJVl&I zTf`bmek#<6p0{wDnV9qIDSlBW?IISuF#^YECP&rcn0B>h8; zw?-nzPBDj<&7h?2BYo7%fG!8GXsQ_cOG<_w67&*FAA$dQAl&FQvW3lAp-RsjegmHEU;k&wraHuna&}s7$j&{Wp9#xVE$Fmf|`&k-cu$)0S)ZRg{+mK^7 z;h$k2NV?q^LU_m+Mwlcbx4K4>eW#p4o`aQKviGphcwf20LAS@9c_b}yPBw=o$3;A> zg^@N}Q{fGA8XwEcx?+pao6Hr-k+|91oSYoJSd-wa)pDOyMhv_Gzcq4^c_BH%SL0f) zDKOYlgX}(H1r`f-)(|TetQsyTza)0eVrP_1G;+=zJlYxKDoy7HQ4hqHpMfhv4MbHXjF?XdGr%>_kC z0nerEnC6BQdi8m~DD^`v7--rAtAndrD70G4fq$Wis<<=I_P(a*;gCkVBJbDX^o8m@ zpwprYY;k%N?BW|AHJ;b+(tE;Oz6z+qmmS%9EXe7Bwx=OizXNhD7KR0SJTzGBTjx|g z0Y0+W6@8|j1hIDo`W3i}_1-YoVi%lcK0O8Y3c3bb92I&hbXtug6qQzBD{ZVae0Z&W zwVnpKVw<~y9=Tp005!CS0#pMM%Z4v$kEFD17o~0bXh_Noup7j3VOoIU=Ssak=12Cu zvQzg>`jOhzm-T5-BwYD``}K$5nAI`S)r7O*(jXpm4NO$p^x5#t-~gNLIHk{rtRaB` zla+INF_c@ZKe2_dH^A_g%L9wxn$@nOQisq`;ju1qsLIj}!$%GzA7nmt9Ti_^x zc>)UsPABXJ^MqY0aJj(iger6q_JC1Hb`-SG%>#&)3LS_zP3lLOrB5V0ZC0m8hn#e^ zK`3=Vh!PkNwdO17-L(o=3V89jc``lP$9>|V-2Dw4fhgx+p_ElK1G{j6?8aL5pdOCR z(C&)Cde&jYkx~b}F&nc7a$n4&95S$x)!MUhhrnimuLx`rIFEd?F%&AzVhivMS9jXPIox3TC4l3ysdq&t0BTPwq$di}q#Yb6a1*=HVZ7`nrU*bPSh_+waiei zN;JKOO0|Z$P_7n_sS#V;Q&<9fkVmoIu1@(nMkt_c z5wq1Ga0|_uraUiJNi#Uy5lSsB=Xg^1ob48awc~#KSjEeRxF1w@i^aGbe0;f`!`Y5y zN-cZXwNgo@tUYi9hscde1H9?jqx^`vs!P=d@p{yXbAcrZ@pXE}jDEhQ05iJ=oXRW5b=ZrYV4t#Y zS%0ZeS|)9h_DLtDwenMPkdmYPRynDhRW2$nwYxe&m8(abf9C#R#8UrDqa7@)TGyoDJpN|~7F@kL@XvpIOmDJxv$B0GNEx5W7L+D6mLDk-Lrw~P@G?dbn4=^ErME*DH ziWiJMx?;@UYd5d_{?^pn{?>dQgU>GE{(;X|+>WjHhT$du&4Oq&voPH6df+>W$^HC6 KlW$;sn)Y|%h{Hnw From 124c761c74176428bcae49a23d4801dac279432c Mon Sep 17 00:00:00 2001 From: Gavin Date: Mon, 11 Dec 2017 19:11:55 +0800 Subject: [PATCH 5/7] fix modbusRTU --- SCADA/Program/ModbusDriver/ModbusRTUDriver.cs | 8 ++++---- SCADA/dll/ModbusDriver.dll | Bin 21504 -> 21504 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index be6ca2a..4c856ba 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -328,11 +328,11 @@ namespace ModbusDriver int numBytesRead = 0; lock (_async) { - while (numBytesRead != size) - numBytesRead += _serialPort.Read(frameBytes, numBytesRead, size - numBytesRead); - if (frameBytes[0] == (byte)_id && Utility.CheckSumCRC(frameBytes)) + while (numBytesRead != frameBytes.Length) + numBytesRead += _serialPort.Read(frameBytes, numBytesRead, frameBytes.Length - numBytesRead); + if (frameBytes[0] == _slaveId && Utility.CheckSumCRC(frameBytes)) { - Array.Copy(frameBytes, 3, data, 0, size); + Array.Copy(frameBytes, 3, data, 0, data.Length); return data; } } diff --git a/SCADA/dll/ModbusDriver.dll b/SCADA/dll/ModbusDriver.dll index 4aa518750822bf47bbaa56104153953d180570fb..0841e632c3bd79aee3212f0ec34befe6849476ae 100644 GIT binary patch delta 1224 zcmXZbeMl5(90&04^EA)AMX}??w#F8{SZ=$+b9cQ4`>M2=>NrtN> zwuFS+1`+f}M1ewtG5%3uoc(iuMAunRc}GQmbW4B471t|wAoo1;JOeYsXMVqDelx>& z2FA$17#U5`{v+vg%ScXod_S4a5R%VQ2_TeNL5ng?B%cH`gCyyEZiBZ~^CJaAhwIP= zgZMLttiD*TqtQMS&`d`&&$l^R)6uPf-RRdm&ym0!@f(g&{K5>RX`jVA%Sj>>Kxj{WUjvB`mIFNf-&X3bRW4(9QC& zXsxV0)CSmU#FU!Z2wQ_ur55`#3u8vu1oaaxJi;-tLI1FMcz;^2Czr&c4|ie4$}EIw&f7*)!pb*RFa(n?R$ zN~P4tYmbzwNd(*QU8!PzoNj}!#G7F4nooEwR01)7*vui-Y&*)m;;^}l#JHlW^_ulf zi=t8Kl}%U_U9ywEQ;6%MtdXQ0!EQ{JiV=hOqR+A22t}lH!_fC)O6e{fy%x3Q5c7x8 zWCis)jBpBdTFdn~9x44|6zGk>23h;W^#gwNlqI)yo&AKA(mmbBS}>s`K7K1YHi~s; z(8J2~R@82iYSB0Ahj39S$)l%R%`AbBUQq_I9krW9YnF&0{)`EwhdhWKFt^B>2x2F? zltd7Z;-!)ZVi%?>WTyz?F}zd~K|GFNK@iAZ8MdOc=|2x1Q=ltd7F@m5I$@g#!$ zXB3Ynf_MrsB@x7a3@M2q4&bVkb&3YqY0N66xX!@Ge^-8&fc3zR(;?(ZlK;qdeF!_< z#o_TKzBji%{6799FPeE)xY7M15_D&F+%by!kE}Z&)>6KQ2yi{Y_dP&;!_J28rGxuY zH8VA-sdHVw^%(!SlY2~(^R7+w%Z;}4^YZkH0Qv0xwRbgj7uNhck1ncko%#DsrVn<|6IQ!h%^!FW3tiZPhRd zsm7p;`Vdx7Frv79urQ)8Q4$d)Aw|Sj>6R!||GvvV%o%YJ*FbDr(;Ke3x6c9Wd% z*3MNW&P*d&iCY`VK$4IG8jk?pT_~VExLA_WHy(Y2rhK=3_`{13Ks|xaZ2+pdO>M z5mIWVJ#-Fwlv=Dy)Q9IvDeDHEi=0Ba?yY{879ybJHXqU=bSvGnp3q`^iYiXBUeNgn z70HFoctcCjs}#fsT8dGnb}LO6Vx3=h?xtVqV%$+0(SOmUc&>C&V<<;OvFPl|J!}Yt zGD@2%gtc;PFOJG>9-H;F99!l~y)qkV1v;e6)A*rRqDLuDt4AfSE6vPkK&eD?^V(CT z5DB6Rqe^At!&((41TquMRpSY-#5T6+{j0l!y^0@RNl19`msk*5a5hN&b>$ERJets_)hmw{se| zU*`9%P7WSC`zPo<;tVbCclpm%&D$i_YW(){!+$lx?=`^shLsK1PNoBSpSP~K7B66z wtA`Ie{c8-8HPR~ji_@% From 4f73a6adb30839d9c9aa61f436fad325c30b33c9 Mon Sep 17 00:00:00 2001 From: Gavin Date: Mon, 11 Dec 2017 22:11:01 +0800 Subject: [PATCH 6/7] fix modbustcp bugs --- SCADA/Program/ModbusDriver/ModbusTCPDriver.cs | 4 ++-- SCADA/dll/ModbusDriver.dll | Bin 21504 -> 21504 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs index db25d08..a40c1d7 100644 --- a/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusTCPDriver.cs @@ -506,13 +506,13 @@ namespace ModbusDriver public int WriteInt16(DeviceAddress address, short value) { - var data = WriteSingleRegister(address.Area, address.Start, BitConverter.GetBytes(value)); + var data = WriteSingleRegister(address.Area, address.Start, BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); return data == null ? -1 : 0; } public int WriteInt32(DeviceAddress address, int value) { - var data = WriteMultipleRegister(address.Area, address.Start, BitConverter.GetBytes(value)); + var data = WriteMultipleRegister(address.Area, address.Start, BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); return data == null ? -1 : 0; } diff --git a/SCADA/dll/ModbusDriver.dll b/SCADA/dll/ModbusDriver.dll index 0841e632c3bd79aee3212f0ec34befe6849476ae..6cc26ab33458087204ff3fcd02ffcbd95b0fcae5 100644 GIT binary patch delta 376 zcmZoz!Pu~ZaY6@^)5M8ga*R?FSB5j5n9Rti&N?B3fk9@nB9qSKNJe!=g~^SK^@4vg z8Nk2;NHQ_7GL&opkM>x<#Ih^tzig(^0HXp zvDPv4KzUDCzOgnitbp)1Yna4Xn;0HIc^yDrGlPUJ*c8r#Tp>&?3_1`V<8MZLwiX5- zD36=TpRJXFVY8;jY$*ZLLbp3pE${d=D?j+AAv^Eu<||G+*mayH>P3MJVgh0rMh1p8 zz%W_k#lR30>=L{#dg+CbXHK5$zOTGg@3Cs#<{e%fjJzM9Aq3LJHTkT!G~=JmFTG`% VHuL%YVrG)D+AJ9Ko^hf9I{-JIYyz0E5jKNOlD+MXYI&fV33)t$fPqll2M&eVsay6z2KKj z1~Bjdl1vP&3^|(xnHEb=R*{pKd{I_>@_JcT5S!6wvaOutW+k}^ob^wvK^mSh8Zq2s ztzwX{f$(y9>UgE{T5ESeZTq4^T+TnM>uVYVF!PzqQPn!>TaWD$K rfO;RSD+@>}OjHzO{IdC@w=B~{1CGsne!rNRM65Oo2EAvTXuu8t!f{;p From 3b8805419368e82b4337885c7c4a9b1e4a245dc0 Mon Sep 17 00:00:00 2001 From: Gavin Date: Mon, 11 Dec 2017 22:20:46 +0800 Subject: [PATCH 7/7] fix omron bugs --- .../Program/OmronPlcDriver/OmronUdpReader.cs | 9 ++++----- SCADA/dll/OmronPlcDriver.dll | Bin 16896 -> 16384 bytes 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs b/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs index 8562a82..e77745b 100644 --- a/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs +++ b/SCADA/Program/OmronPlcDriver/OmronUdpReader.cs @@ -5,7 +5,6 @@ using System.ComponentModel; using System.Net; using System.Net.Sockets; using System.Text; -using System.Timers; namespace OmronPlcDriver { @@ -232,7 +231,7 @@ namespace OmronPlcDriver _timeout = timeOut; byte.TryParse(spare1, out _plcNodeId); byte.TryParse(spare2, out _pcNodeId); - Console.WriteLine("id->" + _id.ToString() + " name->" + _name + " _server->" + _server + " _ip->" + _ip + " _port->" + _port + " _pdu->" + _pdu + " _timeout->" + _timeout + " plcNodeId->" + _plcNodeId + " pcNodeId->" + PcNodeId); + //Console.WriteLine("id->" + _id.ToString() + " name->" + _name + " _server->" + _server + " _ip->" + _ip + " _port->" + _port + " _pdu->" + _pdu + " _timeout->" + _timeout + " plcNodeId->" + _plcNodeId + " pcNodeId->" + PcNodeId); } ///

@@ -498,7 +497,7 @@ namespace OmronPlcDriver internal void CallException(int id, byte function, byte exception) { if (udpSynCl == null) return; - Console.WriteLine("OmronReader错误->" + GetErrorString(exception)); + //Console.WriteLine("OmronReader错误->" + GetErrorString(exception)); if (exception == OmronCSCJ.excExceptionConnectionLost && IsClosed == false) { if (OnClose != null) @@ -650,13 +649,13 @@ namespace OmronPlcDriver public int WriteInt16(DeviceAddress address, short value) { - var data = WriteSingleRegister(PcNodeId, address.Start, (byte)address.DBNumber, BitConverter.GetBytes(value), (byte)address.Area); + var data = WriteSingleRegister(PcNodeId, address.Start, (byte)address.DBNumber, BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value)), (byte)address.Area); return data == null ? -1 : 0; } public int WriteInt32(DeviceAddress address, int value) { - var data = WriteMultipleRegister(PcNodeId, address.Start, (byte)address.DBNumber, BitConverter.GetBytes(value), (byte)address.Area); + var data = WriteMultipleRegister(PcNodeId, address.Start, (byte)address.DBNumber, BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value)), (byte)address.Area); return data == null ? -1 : 0; } diff --git a/SCADA/dll/OmronPlcDriver.dll b/SCADA/dll/OmronPlcDriver.dll index 7d62b05708c4c3bfc5e3b8a4d692b6621078e517..6f6b1c52229677a51dfc94909a0c7b137a6952ab 100644 GIT binary patch delta 4126 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 Y`tp^m%QNnKjqfY#@=p4abrie)4PUYUEC2ui delta 4647 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 Hje-9GBq~Pq