From 063a9827ff7ce0a5477f4b40bf58ed0ab23ef5c5 Mon Sep 17 00:00:00 2001 From: Gavin Date: Mon, 11 Dec 2017 16:58:04 +0800 Subject: [PATCH] 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