From 10f7da17512d9da1131b00549962e1e68e03c816 Mon Sep 17 00:00:00 2001 From: Gavin Date: Sun, 10 Dec 2017 22:25:06 +0800 Subject: [PATCH] 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 zcmcJX4V+EY`p2KO_IZDE_IaBb^LFN?&>%t~YDAb&zo<)>Q?u2|I?@6S>Lsu^{lm?{p_{(IcFaw zCDxKsYsJjWH?C@OBdEWFkQsH0W&mvkfX%Ed>o;e0KVQp!0x%zNutK|+0Jbd# z5DS*K5|?f0DVKRgi^}8mQmhTTNU&87)#`6(=wIs*!zw>Wxn2yfY?K-m`IXnC_7o#3 zA5Lu}MpnL`+Dwe9w52r>1(hvPM{gLGR;h`h8-C0Pxbel=q&y8kqOB)~NQI>>1^0a%Kb3b1(`jjgR)RqnVc)9|+b0jCriCa@x)0!Ctf; z9T%M>2Tt8NO(%1g?y?UEx)F^aasqnw=$0+fW6Yw2M-$@IV*#H-QUa9` zv+?D~oCE`K5 zh9bdmP6yE4dbq!CePHy(5n3d|9GjuL==H3KoW&H11S5K+F&(P9i^&Os9!}^V4C`S% zgbPa06Pj$GL4$S-m$}G9J+W>1+24MP1e0=fo1SFHf%K#~OY|f(OVX2QSnOI~uixY| zuoLxn(@}4-8N=09V9!tL1+=q~3jmUf)=~%$Tm&6bD0=}~;r}))T)rV`&|)dZZP++u zL~8>pgUuvl;%f!x*PiHaSRR}!Lsi2}mlwBdW)Hv5o0o*Zyogsz)e;0m;v!}eNH zssNWuTKLrs(xw%)$D#Y%Z3E2GfFd_qc;FM)g>cs%Z1R3$ad>mUiM|Yhu_ZsLO)+ut z)Jkrq!ChE0mnuOPwLp76G)zMevgkqtmn|~Ko#4&!g5BnvGxS|II1~DNoi>gP=6aJa zCteLO-eXVqW2i9O8z;lW9sldS?58i;| zRu{YrWcffM^&RM=N$(C*`8~9^!9zUE#UUy$cav`AQCcQbxgGj9e2{5>F64tn^`8sb zK;VjP@C55m?C7QhGIgS<54t3~(rvH~2ev_&C)dJHtskX!36BCF#>ods^0@U=F5BP? z+Z+>Q^CHJ19b0YCmM6En9@ZP+=BlrKWHguE-OjVC3T()5`P^F#~=} zo{Wd-Yn-kRjzuZb(|H+#4L))+S-YT8DjuTE1_b?w=g-ecg^nI^`iV({L~d(RpW3W& zG1Em%cIeEM%;bcdnOsb6n1qMY4|k>)I{Jba?#Jx|Pnh{3aubFJxG^P#8dG2y(*i3| z8m1?8JQyHq2rHN#1fq-KDI5Y|il@*q3oe0`Ou^(r$85M1X*n*Yenz1Kkk-I-9Phyd z8t+or1k(+~l*B?uC+G&B@k|>t^?>h~CWH$eUEx~zndxywzcDRTWDyjnd5WA&_bBo+ z-K;1qXc6Dy@O{x|eVn!7hcynGO&>@>#L#en`#>6-PUO`OgRV@kFpY#frgcoWKu_+s z8L0=1gX;yYw+y`iQXg(xmRjg|A89hvMyBy_8%_-jcpZ<-Y`7I}CxnBFrZJsXWU$kL z7*asX8BD{RCRH+B>N9B}(}T+LVWv_=tC*H6TEmku-sIWb3hQ{l3$SrECdqm>eThvc z!A7P7iZ(OtR_Ig^2_C%RtZ#sFXA ze$fM5VyM*6G7ZzO2jDF<6JGt1d?KG|43l4sh_@Md-it9(%kaZDRx(Wxg))dv(KYmi zBvHgP5o=5maI5pAPeAv;Y1DJeXX@0~EknIpdy6XL=50Og!~K6&2EM>YNsf9p=olcq zHjDJes2erI>#KJuyqX=vZr6$g)cTpps9z;#qlS_ip{B7mVs)U}pmV4R>U$yb&_Zv9 zI@04q?ZW;yYb~(+B&)G2d?~_K)>oZ0mG$X04jYVflbWVeJZ;cMhRCuykyPjM$5^Jx zwa1!N{WXgX1}D9V+9&&Mi_Lbk)m^V&Nq6kqujKV4(rFo_|FqONEU?bmteyofGD7t7 zJ7fCzs3E<}*9i8zsA~ z)ZEKMdRHdt*Q`_6U6PY(nsNDV8mJxx9~cG1v5DUCX+Y)n#z=bOZt2Y_z2;#{?AcE+(UZhMrSa0WA|Y zV7bOmiSscYZ^2n@W^(MHboXq=1-us`b!3s|+DKbzq7bR@A7xUn!iP9KiFxflhE8b3bNm}SRf0} zl-T|;E}w>nDT#+jhS- zc~2v)&ovoblgygH>O@t$9z5-*eNgA!@H#wc@ofn!ovzK{N$0_OEyQ|p81;GiRXyDQ zwFEkY52t>MF8YbuazglfthqenG%7^FZ-cU+9d(%Sq55sqdN?)czZ5=^3H}IP2vht$ zqj-UX8s}(dL%)CmMg20$@rqiksCj^Bo+6`dz=~bhF_tA>kRtG{{)=(4B2}BFqJ6Z9 zUju&z;9rfX5Uu=H$W_!MdL>S(SkX+G=eNTeMfdu9`yH@PQDX3BzZ3kKrk6uTdV${! zxeAy2C;B}wP*LA#vEK{x6m3hN;jagq6)lzb`E{^lnQj(~IsPE@RCF|bp+5{u6m|vmeEi}6ho4M9P?1rnQ?ZYYRjp->S8u?V&)q99IyQ;H~vw?e47*^gp48M-Q> z7~T#uP2w0%g=LB;hEri95{_Tvq##a(YSlb2DWVuII46b+VI8-bF%d0XmO2FpTU_+N%2MB>V<>) zYj8r*Pw9#JE@;_H^^10}y$+u1O_~^d+4BapQ#2`%s=oRRR~*2?7%kgaHjW`!T18B>jurhNj8t_o@1C!mian%hYz zR76ud2~!l&ntp@|MYN_L;}d<%Gh6=&LN`za?yETMpP(UAnd2XxN~Byx-+2}xbvG2Q zc9-aQBQ)W%)C<{S4KL+<`KreTr5mEYp91 zV@#!v?FmmJowQbmtumCLiRMA6DDE1ZRu{mtv2laAVNuuV0-6ZPY_X4Q)BcNF0V z;fEE?OnX5GafYcBQ+6AYny7Vg!dtpMPWzDXts?*Juuj+C)17g;P5)H)h&}_%>mQy@ zHM&xo4C8j6nZX(Yes$yDW_IO$>vQ<)<_ za9YdJGO<|kO52<1WQx(t- zfnVhD-wx}@uq}`#PMK{EO1-G?45G#=pjbpjR1w7@L$qY7;YDPMLMFppMV44$n(`{L z#V#h=6M}(kfwxBZXHK+{*f_)_nrLHDK9r~oW+bEpnuzzA%!xJ?M@-_WH5F%68%?dL zXf}-cRT)5YyI2&M$fnIiF_SrbGl6$l__qUSy{$w+K6m65UM7wxA}_7Qlo8y4EpxIm{3Kf!@j$)fh?5300%S3Ln1D!;)fI6CPx{8HNX1K2r z)r!bVH(?pgL$H_bB9Y1T(p{7?p%?uAFVIsIj4@|Jleu1OR77ri3(GC$fRrVDM71Ic z{taSDVeJt8#d;=li2ee`n*Ath14SW|InhC4g`#~4##{PeanMAb=@4;(iQEJOL&U&w zwQfd;!Xh4!gFi}aQA86h5TWtZM*SKGMvHb#<|SvG=+9ImI(gd!#)& zPo_T*C>DuRO-l6558NplGnGPz0><#P&d$*rjNud^<2xoKkeJ|Kq@YqTvkF@=*Gb zK)L9z$QC{sctFfllo*u33b8{G-9OG1153?*bZt7YT?w+8VW@Xq<)zGLWTMQkCCdC4$dubC^J|GR zzm_PwH^nU}yK9Ngip}x1XYs5s3CFMUQs%!HZ=~$5CCdCbSt*}uiSqfSSU)S}^WWk` zDa+4B(X_3U&M(K?C=p*V$-qX+#J|TIDG_(Xi4w6YPLznd;zWt~Mw}=StK&q8_;#Eq z5qHOl67gL{MwOK^ac{hl67hpLQ6lb(6D8tDG4fLC9f%X9-ao`!@l3cO_=)%;PQ!x- z*)n#Y{kftl18=kogI~l@%yv!+;zKt0r{OtDH`-sH(~+KZG25u$w{fC=$Kpi&PMp*4 zWV~&z^X}kJaWZB*?+c!eBX#_hiH;h*k2@PDdTYwhLE!|dtn_A7NSX{0y&08pqBo;j zoaha`HBR)FmL8%q`z<%{y{SEp^j6UkCknnRP857koah+(;zY;SA16AXfjH3t4aJGx zs77MsZ5}YnWnvuZU3)Fj`}?GL8-1i4Co6px94GIjXt_*|Sz0H$76xmn()DC8CD!Jp zlQ}I;cv2do7Sr5Cb*PCOzsrrAPPZSnrN`;MO#JvYPV+PI6sLD_+liBPf9TU-jv+1gQ7X{p>4(N_8aqjvD55u`HNlJHG~4-Yuz8#)Wm_>( zA_~u$;H7oQ6}l`={;Z@>n>y4ebh+gHpE|k|+lH=)H~x~)Hk2Eut=M)|oZe0AVCxj8 zRcTj+u8z~Dw7gK~7{>JuBn`i%C1rEi=d z^#x16IIT_I5xOBx1G3%>^^eoYte}2loGuB!7rH4;(*y zVa^2eqB=}wGnrTFVRFj-6h-qwJzOqiq6_tr&~Uj~(FCLs@&HqrW4&jYK1!ZYwB7S0 z5|opdG6%igEs%*wIDVO9UiSB)0-3EEJ)RPMv}~uSzNZYStD-)(aydp0QIv19!WdZ? zvrIT0xbn717()DKg~&@?zja zF?K&pmE9TXBa;q+J7m71K6qnthb&e!7;jAOkSi4BW@m+`$t{W&_!}YZRn#G=M4u*) zD(aVhF}7JArGK9C zX`s`2va3RJ`jFhnWICNM52`kDy5JnA3#8?tTBnQUDMd8Vhh?+*W*hljB9}0kJ|B_0 zRNIX~qewh@j?+iwQPoH@T`mtUP%}lRkIBS^wN4+GrA(&N6>`05qlrFoj?X9LUe!iE zSIS+B;y#V=DhZ2govxOJOs3PPUJx0~4=yVu((pXcFeN3=Vu zQP!dG$Fl2VCS98KUHBjJl%nTsr^5&3_{Yt*&OTe@kUXI1N^3CkxjgfP**4gf6{(S( zR+?nEE{l96OIMrJJKQDmtz2U$>=Nw~IVN{2TI&AQ{k=S)$nWhD`9ZFD+Uz(y*e`NI z9#Hgc>cGg4GIxz~8qANJlEsQX%^DLqEw?CYlQcf^vpk^a7suqtFLLEt-2W+vFJ>8$ zU**haVstP5prZRalN|co2x!L?Epjf2NUdVM+4hTnMZ}`bd@e@ML~PnhMc=uekJz=N zaoQ4bXweO(<>S^J5tml5fv-4d=%O}Kr5Ybj5;ri!8H`kAl zsO?gXy@TII>T97*rs-VyV-%-GwsT$k+QDK2{MAVto74Y`S^w@t>rU=Z zP1@kF{MA{T(W+g2-GdT~glSVJ)aRYF@vmY3Q?vfxP1;Zi_19+ozne5(fBq<|X|VrA zsLwlTgHNY(GrxAQSXBQ1^27L}1Uc`l|J0=Kuu|X8lj!4`E?M{kINn9997}xA6?4cA zR~lYAv+t-+`h7B~mQbtx@WU4g^nNy0pTs+XX|pCw^*_7*NMq5RfS*Ie%AG^x`MnV4 zzkn(`!6X~abdsB9N+*vMuEfdNaK3(gn(cDkk5936%<|*YYuORM-vzHbsjoS8(*xOS z;6c|G_#lxyBw*PFpJ6#>NrzIx7>>&A*?9fIC%Q2d5*qR5dOb!$LQmdwYs(t6XQyN- z;ITTVpP3o|z2fg*{&Qz@Ws+C69j9o4130`D=Hk({frd49*nme@Kzm+gt(u|Mc&)Kf z%xIa)Zu>8(2R+N=Ytaf&G0Kbm`iTmb3sG_>YGCcYDtN-y49A z<@sXp?<@YJfyvJ<73p&#MEU=F!(Zv8`MzhT^*xqN-E=1fb}F8(f}ih{u%C~2-Q!xf zY)+I;X^b&O8lMryGs_C!;OQqID-G}e1Qe#mK*0NE0~$$gK6i3-nDBbR`^5X4^I2&$ zMXI4ouo>RJR5tk7|7+)1*v;#@c?kY`*<4KBc$l|wmI%dTI&aBFKHk~IcECGuN7Hye zu&A>(6}O#pLrss>#=>5A@1tQfsL3RIv%aon-AU9fXBl`5&OHQlgkr%rSMdK3_IT8d zy2tE)6ZX36Td0xGft+Dxxg0NG8nngh3vc`eHviR~|G&FloWB?5f9>gazRS#iy48%O zWbF-$SyNYIw=kxkL44_|b8C9O`yVrarcvGUzu%ggt##j=T*dbXZBZrM%6AoY4+rf8 zk}vnPAJC3sn0qxPoq)&r?62E_CJ|eWS$_wg>re5u?))MBqlg~jl;6ymamdX7x+|zH zYxqka8vZ4`!;yS5@}J8BUSro}Z=TZl#XPQ9z-$kBpgScEim)6z;U~Fq|JV4&3x6zu z=dKm%;f9JojmB8IVEZpf^7?Vu%f!h!ATysy0hiQoT> zjzp)Rtqty77&?xqpmd zOEZ(qfz5LP&jQMSx(^X>C3ncf+iDHWUCe_Si*HN#qWteQw8!Dk53!dO?&58gF248` z4_=`0*J51$B}nDVc^T$;zX#tlNuWCb0iE#l#`nMUrK3=v$(Zj32eCUdD&`#km1A)- zS75gOaoOyJ|85RW%iMZnH4@J(eEx}FpcP*t=kna&w9-Y{oMYYc)c7eX`R>I`+w+zC zrILpSGw9CI^kYtR0ACkIp=xkFs(|1SetC=LqTUHDsl4u!bq0MXrvv?ZCka(R1}gp= z8K{0}!`gv0kF^);0M?VV(=h7Nkx{rycR#yEa!5D92O0U zMslgFkGfbyMUw21+C(ge3$t6`FRBOBzlQZX(LrWl4f!!fi#&O4xJb-H7x;5yk>Ywu zd?nHyuZr#PT=aEp{af~a@fqCU`UJ~;l8eL=v^*)+uuhjdvj)jLIW9U%?qCl)V2f>% ztmbl_Je4*bTPI|fp&kpCV|{mg+MpV0f@E`ZsKSs_C4B`^4U>{8{az-xgEx2jMetCqwR3BXR`K{n22^9yoXw5}t z)^_b#>2SSYA#+oc#3=QxR){L-zseJ}NXZ?ott+2kipr!7Sfr!PjNA|_XAod&b zQTZ|iGuhwkL!~E~$VJGq9e)p;V>vG054U6Oz}lI$n`IF{7f-GG#c|A` z;g()pMrlu?(g7NPHft&ILg1AJPHF1{L$o5{xRiI z9{4EGk16wTunx9a;)zgan~p9{ido_TdpE3^l_6l3Sj^=qm@6kZOU|&);*-iED0?WK zt&pKjNPgVr5tKt2T50q-+dSxyj=ze8N6=45xKoThwiIE_sF01c)tQHFFY=?u^KeZR zDAN&jKEXko2OEP4_A{KMXSnqQxKn!C8?%QqY|~hfpEF$FlIxpmlT#kDx8(XZ8a=AG z9EaazZ%2`!fAQk8&~AGtK|ieTBJI=AUqYpY7?HDMu>61k;X(W~{IcUHM#%0o z4g-D5SI8Mq$Qe+`2Z9o6fb%q_&mdIF+hVpUW}9MVQ{gXhI??7HRI-`GHj~(9lCoJV zpK`WAn>DCplg~E!Y?E&&qm|-qXD>8*50#9{*{Gb2%GqWB*OzjADc6^BeLhDkU(gS7 z^9B7NH(yW=PUAn&nF;-gi} zVK3#Ha;}+YCX}FKzXSuj09J788uRFidG6QUv>*KBZZ7V{FZA*xK2hu;y$JQ&tjj&8 z@nqXCbli;ldPr|#9qQRAq6Q{cbM3K=#U2Xa%bpGzX&#?8y;zUS3jcoY@PlUn)(FUx z*9SV-lH{!DN3a49Uxi%5x{-AYs~sA_^*%eM+VwswR6|F6f^s)pjk*`Qczv)B@~B1_ zL#Rp&L)|CxQ4ffbs0T#>>R~Yk^@u1$Ju0X({u@WAC&W0^Q)0ZAZkZ;cTIB7h4q1%q zk<(HAvJ5pO??+9P6{solA=Ic`jG8T%qBfK(418%USD`kO&!D!H8&F%z&8Y3(xLVkxjPkxWO zP@Y6xB2Re@8!VH*AgqvQQCCWV|75@#X+d2t?Wh~23w5*fqHd9X)NNe9Lk6+DOGZ$u zWfJOcnS#1krlanYnWzWk1*ivQLmx&(qd56Bic?6VI3;QrAp=r03P@C=Rc32BXxdO~ zhT4ofwB!!0xkEeZ0J&`6iS4_xeRsC+skOpheYCcy{k1Fcp~0KAj%Ytbd&uj7q3kVR ztHAOIE*EHYXpGSeh3tB~Mn`TE4>pAdF2+_Xlxm$YiDqha?8`OEgL$kAxn>EsuE4>p zuoCO>H{jg&0Q$ik;`$?Oe^l#?evYyI35|2e(7IyP8SNTWuyjYYSgu8NSbF+A@Ro&w zwg=S%r@8zqY5>Ak(j-&|q;k0xYa6a<&pH;>1GBk2hs&$DycX35&+?ZR&s&YFy%NGU znsus;j?D$EO;}s8wr9N>Rf5+}mSHSjVzXKy85E7vJt}ieK-N z2I1F)rjQJ_#HNr17og@qQ`8o4CFnzsctV5mmW6e-!CHymSxRVB6&Na)q=5a2+%KAC0<|6wn){X|hWO%45 z!$U4I61kj62a^$U3Acl}lLjFMb%yJ6Q9ZQTbp??$wGk|1zps z!J6Hg$|da$YFO5uG}_sXn#($bwS;vU>o(RMo!Kdup$pktx=>A&%O$MKShukrWQDF| z8D-679l~1D6+f53;TcwRB}d!1e2^9Ls2k*Mpw3**WgWs=!n%xg8|y(^o5`Hl0W(~AGNXS%Dc>pIsI*Hf z?n~Tb-SgaUxh)>AC&`oPY39lG^ze-GjPuO!EcHC)S>xH{dDZi_=Tpy-fakOayiRYx zo8V3LW_d62wyJFOO>%l8`&t0}cYH`&JLy3-Q)hWMQ+?&|Z>Ab!ogw@l@y3iK)Gh(i z|G%0*W-9tGvNu4@WBr@KFAKACu&R}}IqH}CWvK5(+oNvQXhLR(zt!os%hLhtP5U1_ zU9kMJn|kf$zNUwI0jk-V&;!--Jq8>Su~6}09H>6oHQ11ry%3WP^sS*!lr5U+3cMoA8qs7DKFeidXE@#pm|0 zcn-(d@Z`yP(tiDj+eS>hb;O32r(UdQ&l{INV#;+RHyyQ$*23Cz^tj;#3sRlpWn2HE zi5&|@Y})4(r|iii#^vKbUJ64C3+ZJ_(L{Q=b<)s@lX`D@OBX2?*QgPb26q}Ua_Hp3 zO<#sZGh0~ekCR>S#_Uxu&TY}*@uK6Q(s}(iZ)%t#vhDVU_T*HnLvHGmCBC;ttai(DBwEE$QQ8Dn4cB) z77OrF#sC3nWm&RC*-&wTr?MkfjAL%+vin7IadFvm;sVjF?4Za_nTQ_fuNVF=!47H9 z1JpbUAQsKpetoDkLW$&k5FY?P;rpLvovTM`(iP2?` zr*{!!%J!$X5d~$QjFw_-S!dLnHrp+ zw9#mfA7k)iPvK0g7j^_4k<%jV3_4r5AnN<@LmD8O6rf4i6?9>8EGCD9-JQo$k(_oT z`EV6(MAwDbj3ev`dZq=*JRz9i92)kT$YJCp^y>@yy6nJe5Of5+^Buv2`J=-ApeLLd z^v6yc;Xp9ZViGj(4?%xYFmYN4Yh`AR96d62T84wcU<<#THe5Bg1)GDQD{07i*emyG zTR0R9wTPXgH;K(n**pob4}Pkd$RF5~a4_8RQE1)`n#ayHh{RviXzy#(SaT5zM}m=- z)d0=MkYNB_hoiA@ta%RzdV{ecLB~TATE}RR!I(LO28x;UPm9=TTtTsLQZT6n%~#{W zG!H{CmNXb1*SvI~_X@AhmEkh44U5lf`FWz)L+v7O7hE=i*!Biu$pEBq`i8?|JHNH6v=ENAIu zBC~7^YP{^prPpHqw@W*To69a-*0Eb055$~%0ZQ<5ZZ4(=6x}}I)^T^B6Ns1qM{yP9 z3>pA+#Q+#a$muz#cOHIvX8`O=E_-ZQJKrtXn@j^^joITJm4i*4y0?`=}`~76Z<0F0hfvzJ2sq5 z&Fu0~{^=;?FF{K`?0_1(2i^tBDM+Te*ZHZ_E2EUIMtcYJh?Dvwq~!^uFL5iLR7!V6 z|E3?J&bbjk6gHU~almn3TXeA)$L)Z(*-_ghGIgV=AJS7_#Sv`4h8+;)&Yd5i(go@1 z(Q#0d3gCwnS!4f*(+;R(n`44()^R*CvD5)AxpS{2V!jCpoORGoMzh&nU+&#Ap^@1R z$V#L9&XJqb{CF6DoaulkB;{P*gfu@)x`rFL!b9oLIet%Z{66RWl_`|JJA-2LDwkGb zsRy>RnjQHg&J{-ZDAez<(XFbO^AB<)N;#PCCP$JyP{#Q^vdHy%F3odRg#2(>I>qvV zCKM-(0*=*{R)H(vz0{VNvje;9hh=e!^b8(G2a{)R1Zz4fEyeff2m(R>i2&?Q8R_b4 z(c4T0By*Y3gv#vDnhBVka23-xZ0Uv@nGP`}KoL%506JujbPWO@JOHM^17>1`+(h9a zF8nr?3e%v1>3%y=1};yk_*RIhDXd_67>HWKpRfslTf8G(^PnB9V)`6A^B{CYT8@LM zj*r9*s3WX{8Q9*~Bx^;~kD(0BInX4M`vAdJpMNrio0G;V$eNnD96U>JIol zAv~vP8q+RKCOd7169aGu%w!tmR#e8+%&%xM(^ze}l<9YxRx|xx(>m^qIg@*H2W;R5 zf8qvXUST&+8#MYN_$zza=cAQi!d|93d0jk;6vP1@!)OnJ zKk70tF>LeTN!ZVB!Z=TT;dvr7eUU4^3STo-GQFiKFPG~5T~iYr{X96NsVO&Kqv;6O zJBmb0?`mAYec>Nm7J$1$=1A8mI1WP65*m+%L{6p!ntV(TXbLmkrzwSLvZhQVfN~t+ zJU9UtFb(DAPiguRkC+F+5UOl&laVH4b4g1tN6<1cL~EvIJTWfOM$W*ljZC9{yG2{3 z<~Vwy>m_asa1i&4zTgofq=A+hxcvG8UL!KKXYz|tOgA$H#AvI`#N%F!lSWnm4%w+< zl9(XF=oDSUAV?7tnQq4%MFMVeAM^{jEOZ$4?DVIN@*Af=Z_2!*+ISnXN?i2|y#Y^d8(eW+g~hft5Ro?$(R>VWei zG1S!&@^F4I1=B;l-(&h>_P^Fh!<L z$?}P0(qo){2Gi8J^D!q7e8c8|4k>S;Lhd^@hohhUxPNf*WmtD`@#86^7i5usX#31% zgD2c6i8gSX5&HNP`)Gqo=V8AME=xIOw}HoZA?944(Hix*_afAn5-9(@AZcQV^rd(g z%zw{Lmb2`cs3)AHBXY>kAL7)^CKnCk#$Y$>B1A67Xr(!OqRrA!A5NP+v0${5LR9I! z5H&BiKk8O=gy(OpOye7j6>?I4hq_32G!4_6eALWM7$+N?;f5nkMq>V}DFvucWKBSQ zKi!5(lVyVqS(CBJfMW`3bN4j#-yy5c#DM=TN@35&UOT|Ut3idG!-#<`CR2GQC(KK&`?{3GLY)LWB3a}6&3ql2bnR2Jy~*4t3c!NncjlvSHa zx`2(cJd_^I+M0DHD$VF&%>UH40B5mdkhEunbgzr_Bi66ul-`g{x+8(KG|Hu%Udriq zS(LNaiE0+VW+%w=l3vKw7O~#K?!0cw&*Ai)4obJ@^ej%F%AuT$j0K7Hohu11!kjBZ zqz`2-!g#EY(&Ww#(6R7@q?Nx$P_(Y_(Bd@(8d728s{_baT*_(iaz?fY)&` z3P|;yvJ3DeEyMKw04e)}N9|cVv^U43i#VUCueHSlc@&zdIgm7$<}DJk)weyHfjO&dM-p1?#*hrK_?@ zcd*vPDBV4R$Cut4x;a;xn6=Tl614!ezM$N*7IWT?lkP*U&%Z5j5$24G(|%Ctq=QiH z9Fg32Y&MADky5{ZoS#{T2j`TOjX2*ggq}rx*|81d*E9`}7rl`4-BpRW{`S3+Je7)t2aAUEmyr)J=d<`>)XL1yQEv+$Lme%?M>QN&x-7j8 z*YF+*ff$|$?SX!AJi);c_i%SGAYi;EnN@;k)ajaXLqz48%$6ZLR^7ljC;6vTf%mV^ zTZE4}V5c$_Co*FJ0|Hrqe@8^A$Ozb>yC!?QX}|%~HO-an0!~<`>Fz++fD86%GQw8{ z+z`lCUY3}d{R0WmU1ND*SilRzHTmLW13oC%G$nIlAQ37xEs%Evf?&(hZp7VzF!a;3 zB6CI{3d=OL3(pNC!Cp-p0}lsM;FzWzY39N}D#Y=Yn#Qy@?Xf^QIP6uH9K$R~#zzM_hGrlKdTFE}=E5vZ6vXpjvnC4S z`EW=R1@QvF40f{wW7rJ3YoZul2*Wi|44Xr_CW>K8sMJI;G+Tq~0__Ha*cOIpq9C@1 zb($!M9iT=N1+f$0Z4fuVBW+=z3$)QhF}wsOE8-Yl3Uf743@?Rcnka^sny^_T1@Y3e zg4hjqahVEYH>gpT9K_3@X*1P4EyNx$R};nXa;VZoF}wnfX`&eBK^i@$!O5l=UJ2%S zjTFS5uu~HSu@@ZGL_zEgae8!u6)A|<;Q;8W ziDEbihL{>Dh&MoqCJN$E*r|wvI1FkuQ4oj0DNPi_VStlLU2{_mhn*F};n1ARR1Akh zcV)>jyb)%##D_=0j6@Mup?0AdZ3|nka~)p+pk}aSXUxD@%&uSSZp& zF}w*%HBk)5!A?yS!wGP#HQppq6BNW-AcD`Ai71GZV7w*@Vj*nRL_xd_j%%VI-T}C3 zxgN#vPRP?lG5kHuQp7Qw3d=N645z|IBy9hPn}RqMw(CL);?%Q(csG2)Wh#hw!zpFS zL7WC%+o|ShA>ISyHBk)jg%z48h9>ORL@_LeIwBLtOF^6gz35hjMvp<92~#vt5NAQT zCJN$g*sh6!_y?%fL@}HPfs3>kjNt=tktT}agD^`I#qeR+%48l96vX+kPZv@U%fQ<~ zxuGCF0(}&55Ens#CJN#rn4*bdxClx$Q4ANI6~o1_mdjKO7sJcS(&QjM3bu}_K?>qh zXrqaOxC|z0q9Fbe7Hgs)J_c2qD29&%?Mn4ATn=3|Q4F7eA(|+LPeQpSlY;mZRBEIk z{s|6fqJ_9xJTza&NL_u5+!!=P1H^3B46vJm=ohFLmCisGhM!z!fEaY}k zUS2YjHwCuBHpcnMBJKIWOR$$|j_ZZ2myl`|VZ}F)=3Yz{=fGW&cLINb?V3g-ZG*0t zsIt+Ky@8jZs4LMzxF)t=yb5!f=EGx=gMrr|?^0EkA2UA*RKbeNR7EqTHt;&AuXE-= zV(es~8Up=P*{6}Zz#DK((}qkD+zxH}tFl4y9*#G`b-kh+!`r+&ptGitAxH2nILb5w zhR40Zx8a_F%JR_^VZtsbVLT#c`2^D2su0H;4(@_O7NrFDK-WQ3@rZaSxmoZ7$Y-jC zE5n8208C+`0JjbvfK`^|#lgd{lS#$*6ZqP)Tmq&Jji@kQD82*NV5&ODRcMsR?;x(}F2fGrK?|lMZtC`N zF!MB0zmG#dP1Ls&FkTaN?F1BQqA{I>5=}IwlU7F`@!l2u9`HEc+4mYAQ~e7yJoonP#~bB|VIE>IRPg5jTaq4w8pZzvsA4xe7%cCGoG?cYlDW zvo5>cz7Q?@X_{tVf;3#y2hN4TpP@+8QRfn*Vog`)l*rStSku59JDi3UL)7`tO|y0e zw(7!Z@c^8G?V9ez&VV?ise8ubK@g{yX5o@ujiftjpPcku&}q@rNO-Hre^vIP;MSnq zq6xw6L9ggHRGt6uaM~60iE>0bxK^dV7xaslnX37qOcV!HnR}n(gJ7bF;MY(zzqLpK z(TAzpMR5v>BBnX6>q3WvK|x>Ra4M_<>RXza zjNgc&DQt2CAYD{2RRir18P+JeM!ybbh~uivMN2O(TqCGnHBc<#B25#;B1^PkI>Lj< z7UP*rHHsWjp-g!cxuS}R_Jq1%uJDc|r>djP#KwF@)X^4V?kJ);Ff_>?YANtl&0sdc<95To}4dOxN^?uSDJ^$~CR<+2J-(p=qh7 zP~0vm>&rX=xLs6fq7CW}aX=GoQ05)tsK%A?R-qyRxAQ1m3$iXkN@hCZ-jLoEsg0(k zsXdW;G11X1ph%2Y^^p2vS*@}Z&!-OwO%;(lc@QEkeN54l+brm)>bg|lEJ zKIxh+_DxZyBQk#IObbRcpt^pGgkWQ6|_Diu5HE%Ewsfhd@zywJ5}xv0}bSCb1xxj9=E z(&gl05uc-ou2GkWN=~Uc9Tk;U*$O-=6k+?-K3e(DTZOc`8;DlEMRr=x4Mgkt zh5CASTF)<9L`!z7MYNp%Vi7IGZHi2&w$n;{)heWgSY;6{#A=IZA#S&b7UB+zXd&*j zh!)~I7SWB&Zi{FkzN^Wsw$n=7YZcN${F_Cz5cgR`3-SGW^3l>eU=c0755;@dO6VRw zD896)Pxug9)?a6TqN&=%3++MSPwP<>yKfACW)WRz|KqHRwN@F``^qA!cg!NHcl@k+ z_)-=A8F<{!cHa{I-XgQueMk5Q3#sDIOt>!WbRT!xBDyu@mwRX-+UaIgNODR1)b zx*0Vrq8oa$CE^5uri5}9lv-L*Fm-QTBJW%NkdB0D_`w#e5aULsTLE$w4HGr|ot$MbMFt-j1h z2Xlr+cu<<60fPyJjVPXg-{o4SMa~*WrbQjI@$sugmuKVSSBsv?SR9U9v@+f^WRZP; zW{snP#-uzMHXCqa%G2TVtcnwS&xX&p=uV^yEV|HMBAeEeyk-Yy?#gCJ6BHgUQJxJXxDof6ZTyD|*89f|%7LCei z9=Xz@!i;v2tLn-3QP!oAo)(?S>eYyX*-WbaYTwDo^^FQoMutXuSrvyy@*}-1YLYd! z5zWY&(1> z8*I_c)b)`YEVAcpjtsFVlv5Y@okgzb*2pl6y7*s@+-MP<0Y*x^4y5*J?gfmN>AVuu zNp-Yr!KBXAqh;{}yeII9dW@`Kq7(I=$Qb#urgWsSvW97n>q+mt;5b>QX|wlXBv%Qq zH5c9Pj+b#HY=4fcd+rC3@v?<3JcGC56J(wypSKXHpQfIU5_z*6ujvMd9d4FInvTT| zM{bcNntqNQMOvZh#lYCeM7dSdj=f zL~dnLP8Z6fx{RDII?L%I>3u}GA*V|uKJ3Il)zPK0vnKMnOs-&3KL03p>#{4uW}$fO zET@mj zT}v9Au8~Dd%IR8Jq07kWI$6au$Mt21=zykEp#ZEqtHJg1sIEs1Zj^hMS`9{@k!i~s z+B5$wCo`%BH_2tXkQ&^~3#$HfR8Mp|N^w7@%c}8`?UrbzMRYpadRD!ctg_ked!pMc zDt6C~zM@t)U6)bC*X2vxJS{|*yIR&-v_1Hi#JA?~Zy`(%mqmBV;hIi(mPFr{!yi*+ zGn1c)?vgbYJso{lj(=R0Z4XsO_sSKTu8&qm|0c~-8ed6zIl52QRw&cIWxo~uK=yk= z(c$cU(GMlQrH6kD;VH-A=pi{pQy2f&(ZjMvQ#*TI^b=`YsVuMecwVX)=5rW8cYjYgNT-!Ez_b_`r!^Bc9AvK_C+ z5{*93D$A(j%~;Ubs;PysCl)r2Yx<+y0uiIvbIS55aX-Y2jYv5Dh0x7&5|WMGy0BaL z@3AIE$`&$JC*yRZGgBF?4Sy6%HyS;^fefRF%Vy&5S8j-AoK=?j3tDVh;^nKckI2Ml z3?>jJS5kvB@!e0NA(}3iM2#EFG)i^Z5PbBTX*i#!da9$pv1JtI7oUIq%BZ2S`UZa4 z>;GJ*&Hq!c|8t!-t)QtX_%DX~oSils=1_^(&>zZL3pM%q+!!^h%p>h&Z$b>jIHdYJNEHvVLbw-GxJ z!@>K36WaM`g8DTf-JVLiKh~gw@rjBAx=F=+lMB9XWOQGY3cmFGE3MyHn&H!h`t*4b za=jW=!1GQ@k8@B*$0bllX{dJYoCCWXz*p2-1kW;aqb>7Sjh(B3dpV>Hp*y=fcpcI zs1Y=p8_S4B-*|iv7!>dbFEN$Q!)sXszRe)Z-?;Oujo-uyYUlr7Rr@zbMxs)XKrSTk@5X0i!Wpf5fYukuJP!a4jCXc6bqY1qZao zI60vwUVgcNzD*!My#6V4^{$8DZYW?2R;b^tC@px4t=~RrbH(2raLm+kOlbpVuw~=z z<=4AQ7%E0xXe%7^H0Dm|^Ctr15IJ+{rmhgLyP~%;ab~JMLKh;$Y|H=~Ie`j}%d;L#L z|0|Z}ubWq0`R$$fza1~SmdT@UI3MFLbgYYIzCc#nB+jDRCF$Z?!k=&*7~sR{u)*y( z$96cM*T3qzy3k(6=X*L9)J=%wLk^!bvZW8(#mf*cuYWpJ)PW@64Nj|rtsz}sEsHy+ zHjwUYsg{yzSRD&9_$W~4z$n{y#j9%k$vSUhXZZeU9G{diht_}NEZXC2yvNz0Bi|9w z$yY*WcB<0v^ZC0Kk3${zf5LOWx&jc8$G2DXO`_0`WYm_dHfa?Vb%;_L*T2eABlxXp zRZH;Can#mZpYsB5R!YC*5qIOR|HV$%QFM_api%m2m}niNlCNIWA$P8{pD)WU$)Za~ zy8!K81}fYk$_EtfN>bphn>~PETc> zhuQ?cE+KDjK{^3750-O!KWYHJ;k1xHnOOWNn+D}7e8^aU=|wP+H7G0aA!HG!r?aNW zn{DsozZh|2_z=DTMV3L?1D{2fa5_siiAO{;xj;5ST_WNlMcUI_iskTbPJ8?zbn7Np zvtB29$hR?v{FoC&Z^-^Md$Xgj}zQS71c^O)MRkyI*_^S9=a(`oh#g zu?#Iwh;^(p8E9)PMS$e-MAVCkK?yD`U)gP{iA$DASd&y0^@ zWzHGQk7IsYK||dmk49~_J+c?Ry|CYu?|MA8{qpZQq_zZ)?PGb3&yPwkAd!oR?G^kP zZ*$u>a&5FLYY*0|Sg)}?%CECi>3;DIuAwou{_rMlp=h(t)}*aXim&4431WC{W4~RX)x^D~GahlCzE%X&sjyhmTYHJ6o`a zI<{#c$WI;TU&Q%sjh1N(ofmO_7lYm~T#n6GI=fON=pU-s64~R-6ZCudJVC#Q&%?XX zcWixl9DT5l16>2r(ao;mVna@;94_t;6k`rG(?!yIcx{DJSMD}fTRaN3xmI%|9)&dD zokoAQ=`9O$Kf}^b1E+8jpN(#F)nbHPZnFmH%ejfX0w(ebn8*`B3+i|7A8`4MM5T2* zoo%MG&2()uGcd#LMw>aPWK+a8MQl@~Z7Sp{cNer-k4iQLY*WBC1$a8evC_KT-&iIbFR!;K8?Iw}I@-HgoHTK9wKcBI zTI!_$Zu9mqNPF{P)1UPlIWzD+S2*q+ia7#S;FOihb*!6Nx3W5+8C>Fb;_|x0Z-<@G z0$+CA4Xsf3LK~kS_Thyv=7`>uBd$T+C(OS1aX?&$dPwv~tq}uIkBUL4wSp=i6KznB ziyKf+iJ^QUGz`@y^HE)LEUH)Dj2e)Is1aF&nk=WHrpbFz<8mfyuAGb7R6dB>LM}jU zBNv(Yagkhx+F33~?J8HIc9&~W^W;XRETbhZ zqPYgmeThNqpqzCv=PcvW71)>^R$)H=T$}42KtH&KIR7Zy*BY(S&oQ2!xlb90`9v?Xf?)=OEhM3vxkl4;aQHtDSAv9@IG zzEP;q>dA z?%}1;_hy~MdK>Bm_$6?@uN8i2OB#mvl3GD397N55pHZ8GBe@l{ha}WXSg(L|Okacf zW-Ax~EfI!s!5G$C;5y8?1BNH(IG%*Jk`3otbe+RGhIN$t0n8cYE`wK-$GEBC<(#ve zbDre%YpkEJ8XmIGVZDMi%S$;~rk7k~B{L*bI-W-9?yQH>DGeEjU3@9!SFpyfG7}KGUqzbFTFhF(`Z80;Ij)|Xiiu|hAhjI(xU&1WrUtzcczYpIDwFEbosh2B&RdT*l2obJw= z&sxk{!TK`mAy&AW8)Kby4RtQJ59@H!6|63N_|eTzH;Vur@SY0q5^?IwhJ5*gImWrv zdE7bM^^j|s>rbxdU2nSHaee6e#Px;inCqnLCzo)a=kDO{on zs$o?tmm8kKQM@XfN>^u$PQuH{HF0XPtDUmm^ic0U$(n?kmOTYE%9MYi9zmU*^(g9Jvz|o#Bx5~lrMDsAK`%|gFb8=SNtKv>CqT9C$);8~(yeqK4|1R& z_b*rw2v(tXNTJH(Gk2h_iSI(q4@Wnh`DT#Kyw*9)`LMIvS?j#omG8RCmF$_|xy@7R zS?sCsZ1Xfp=$9}uVY;_;ApXNXq7=UjPY||ZdMeWRkNz<`IB&%kV+y zFZ0sN{(AC)^P95uL!dqv;OATLy%81p_It$3&KaV{85Nsco3g(zmz!SuVN>Fkd)=aw zSoDfVY}qm+L7Z@IDG!Sj+m`2(L@P%SwxswUE$g(a`valJLJ8l!FlkF&y2y39nmN04xTlj&fwxc5ML*%oI) z&&OtVT-~L6+WT8tbP_HR%EyS*|J_aL`24JxoH%gHh|Xf2vBlq2{AkFMi?#&2i?7A} 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