From ad29055eb221eca64ed73b09f807aebe547df133 Mon Sep 17 00:00:00 2001 From: yangjingzhao123 Date: Thu, 23 Nov 2017 22:45:19 +0800 Subject: [PATCH] =?UTF-8?q?modbusRTU=20=E5=A2=9E=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=B3=A8=E9=87=8A=E3=80=81=E6=A0=B9=E6=8D=AE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=88=86=E7=B1=BB=E8=B0=83=E6=95=B4=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SCADA/Program/.vs/DataExchange/v15/.suo | Bin 218112 -> 218112 bytes .../.vs/DataExchange/v15/sqlite3/storage.ide | Bin 2555904 -> 2637824 bytes SCADA/Program/ModbusDriver/ModbusRTUDriver.cs | 14 +++++++------- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SCADA/Program/.vs/DataExchange/v15/.suo b/SCADA/Program/.vs/DataExchange/v15/.suo index 28303030dfa53404856534a781027e19f2dd7450..1e2ae86fd0bb765052e1a9b3350b5bb7310467f8 100644 GIT binary patch delta 3052 zcmd5;X>3$g6u#%ZH|-SObV|$Kg|&pVx-E_qSmcYrhrAE2pEEh zWiE0Pz>P>-46;=_1dEJP)PM>qxDkv3{xC5{lM+xO<9BA})u9lgCMMp=H|O1R?()5J z&OP_lG&pJ+9JTrBb|HiYTn>do5P|?3kO_2Z9Bb5*Un`~r_3C?+>A1Awq4KiNDGRn> zo~(|mrVaAE<}v$0kqTgqkfct1q)+$AL-E5B_VChZ4oODJus_(2WUP6N#8TgdOC&%6n@v*<6ElN~AR=gsmb7Me*>JKH$av_w`V zPPMat+Emr@e4@wH+mC!gRyij*#0}6}@#7V2%b~E#-+C>Hdl*j#bXlD_QMPEVjXTIt z7h9;<gg|UHzbVgXL*<9(-`vqVq0jocGdhzg=Q`$!~qsH<=anQlhY?VMq9EA9d2VI4D9GYUt*{~NtRzc$n&mSW+;#A`!Vr@(7hgXR`dBHonmW-n4tdh{_Jre5gVyy4&-t2P_TJy~}r zMOG5xO!t#_^hkNERMpm#%f0RJ=|66(<2^V;+!i5CrsGh2h0-?%ax~)iBLXwdA;d#S znEjoEa6`YK3+kM)H`~z2iQ>08@JchyB4lnQ>P`|S9q1#(NG#l?FOEMd;vC31=wE;= zgZwEE3xL&(fsuucA+SL|W~dOCAghN7aSn3#aMU`C3ynbeLO=gzlz#MA-6F*8=qHU5 zA{qTT`6$iH@NjT6?ghv`x1vBoKH?T47xL8Dh%73I$mT*J?!*E!uu3Wl#-_W3I02#& zKZHUr;02g)|0v;JQNrs6L?Xm|OM@8I_A2WPA!@P0-_4#lyxD5Z`3F88*5>4M*!V26gR^3AG%NmvkNwGo zrVUGVkG@BYBa68>sn)&lVPOloq%Xy5ni!VZZm7EW78N;&zfLTtS*xhUP4tn;-w3gR zQoaD{E{8QeW+_`SI=EZ96`4*v-56t1z91%ahNge4wlzo|u8OjzM}dQoprUt-Ih+m` zdlbn-af76FCaT<1bX3^X@W}XVSgMDTyp%q{%)&E&Ffe%@ z8Ss5b9+HQ&LDHoe4leB6*jyjEcURijk2pI7M5>1d1`F?`SpXHLMGLyruXgYvTin|(Bwn(n6o-5h*3A>d)GQJ+-NqHYyp z9*STYuBCEZQG7j>uvr~{oI0!d3u(Hu1S9wYdl3J#VcA(lsp`Ik)LXf;^q~4~qMo5L zChA-37E|ZC*GW@TR#Sc;e=W5*>h_UVw~36VCMu+GAlW~bKRA$UmG&ZyQ{!Hur6%9| zSEWGstAHbl+8HzRFe1u{cSW3A57Tkkk`@X(B@mpbr)#+!DyxmsgkT498lwD$Tj_#( z?>UB2i>BtkOhZ&=v2IhrNqRr^Z9R3z@psqVsZ(8$G-uh|2WD42>YM3%Y#zJ0(V6q> zh-VCK<0QQ%;P&V>Br7ir3=E9Zca7_`ExaWEbq)sbpA-1GSWnjFnJpu&Ybft}*U(iZ Qt=6mma=q$PH$~U}1XEzI3;+NC delta 2729 zcmcJRd2Ab18o>R{*p2Iq6Q?OnxT7|rp{{GYaVB;tB4bbNxQXKeMWOj2iD zM+TIXq6LWxsGq74cPpTjLm+BYb1NvNpaMN86n5Dy*Pbk}%aQdLcDW(aE$Z@7Z zYrpr*6X6r^ClY6x$)v#w_mFAE&#~C!as&sNA;(RXL}vYZs6x$xJgxpFY`Cc}mX8Uj zOLq=0hVwhS%0QRiQ@IIt4tLV23do*i75XF5;>U2RMbz0ul1viPbS`qxV1cJeoZZg2 zS#qY}Dr+G+(B=OQYxSI5jCB#hAqB{95gl?4{hlM%_k|Yvyygv01Xc!4)XIb|UY5w>Z`%)AWW0{KR>Sc$nI zq?}Z>TR|yWk~YYkorHH_cKvime*gT~p zNy9qsY802`xsoY^U!Uzr$IJ}?uabC43wft%W#J&I=|_l#eDR8d)Gez_Z(O<$(i-Pk zATusbZL1Y(wik<;Vi5*-GV$q3rSopEDbH;KL+0yoSON!b1yfnZbTwPb=uTls=}fFj zx#18TIIxsGcuo1OVwc?25{Yf?3r9BQ$;zFFz*W+X#*sN=Uo6tqt(bR#iPL#QC`V$e z!XrUt{B5|dEU)Lr`9|FZqf)mEu5iBv;u;J7Zm~P~n)+(H!^GQo-ehxDTTD*TR&BCZ zyBrpW#b)EHYj68sRtQIwxC!Z#l0@xwm#PD ziAH*E4sMZ*zP9zr-blnVWL)p8tq*PKGWYb1c-kdLwGfts0e^?pZ4HmM1f1)94ZTAV z(QP;OMBTx*_O{+GcYo`s+~y88jU$Pq(4FLcPO07}7mk3lR zd53?{%tt!ew+^(#gHe|&`)%bt%2j|L96fqwi)~^B3RfcHvAIo~@f?Dau;kJ?53D9= zl2}N6=IuHo7)WS&AKAS8k-bj?W60(T{LXVVF>nGY{xPFg7sgKzad{Ee@DJSzD2%6 z{(<}x`5yTf@&huZQdw2gDEx^0g#3)0M$RB-k$)rSkn>3HhL9@4la;Z;9hiHX_1Qba zMG0s-CLp{XpvUdAIftII^i-t(f~Ew`Hf&(dxz;~FQ)Kf^dTIp+`!92WKAX@l%j-$x zvK=Yjm2ph~0Cx>qmgZR%`Ayid_Z47L<=GVyxjc|fne=r1W%6H@&B)`GyVJWXJ7Iqn zt|yzu=&ZTH=z8`Z#tDB}6HTJ|Ya((j-i2r;zACRDG?D3IKM`vz5G8SgpQ8u%yrdD} z=s(X-nuuoGlr)r28=&{En~7+d&d`A42hOQT`sJ}*1G IH^egk0bOC+WdHyG diff --git a/SCADA/Program/.vs/DataExchange/v15/sqlite3/storage.ide b/SCADA/Program/.vs/DataExchange/v15/sqlite3/storage.ide index d89ef11caf0636d6d70fee033aa4ef6e0160ecf6..ff217fd75990784f0b3f7144742df27072a2e68b 100644 GIT binary patch delta 84659 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 ImC5~o0GX1T!vFvP delta 8792 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 XH}5!a;{B~o5{U`LUua4E+8Oab(YyrE diff --git a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs index 7c3cab3..20ada9a 100644 --- a/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs +++ b/SCADA/Program/ModbusDriver/ModbusRTUDriver.cs @@ -157,7 +157,7 @@ namespace ModbusDriver get { return 0x100; } } - public DeviceAddress GetDeviceAddress(string address) + public DeviceAddress GetDeviceAddress(string address)//PLC地址一般为5位 如40001,也有可能为40001.1 首位代表地址类型 { DeviceAddress dv = DeviceAddress.Empty; if (string.IsNullOrEmpty(address)) @@ -166,7 +166,7 @@ namespace ModbusDriver { case '0': { - dv.Area = Modbus.fctReadCoil;//读线圈或离散量输出状态 00001 - 09999:数字量输出( 线圈) + dv.Area = Modbus.fctReadCoil;//功能码:01 读线圈或离散量输出状态 00001 - 09999:数字量输出( 线圈) int st; int.TryParse(address, out st); dv.Bit = (byte)(st % 16); @@ -176,7 +176,7 @@ namespace ModbusDriver break; case '1': { - dv.Area = Modbus.fctReadDiscreteInputs;//读离散量输入 10001 - 19999:数字量输入(触点) + dv.Area = Modbus.fctReadDiscreteInputs;//功能码:02 读离散量输入 10001 - 19999:数字量输入(触点) int st; int.TryParse(address.Substring(1), out st); dv.Bit = (byte)(st % 16); @@ -188,7 +188,7 @@ namespace ModbusDriver case '4': { int index = address.IndexOf('.'); - dv.Area = Modbus.fctReadHoldingRegister;//读取保持寄存器 40001 - 49999:数据保持寄存器 + dv.Area = Modbus.fctReadHoldingRegister;//功能码:03 读取保持寄存器 40001 - 49999:数据保持寄存器 if (index > 0) { dv.Start = int.Parse(address.Substring(1, index - 1)); @@ -196,13 +196,13 @@ namespace ModbusDriver } else dv.Start = int.Parse(address.Substring(1)); - dv.Start--; + dv.Start--; //PLC的寄存器地址比modbus协议的通讯地址大1 如:40002 对应寻 址地址 0x0001 } break; case '3': { int index = address.IndexOf('.'); - dv.Area = Modbus.fctReadInputRegister;//读输入寄存器 30001 - 39999:输入数据寄存器(通常为模拟量输入) + dv.Area = Modbus.fctReadInputRegister;//功能码:04读输入寄存器 30001 - 39999:输入数据寄存器(通常为模拟量输入) if (index > 0) { dv.Start = int.Parse(address.Substring(1, index - 1)); @@ -210,7 +210,7 @@ namespace ModbusDriver } else dv.Start = int.Parse(address.Substring(1)); - dv.Start--; + dv.Start--; //PLC的寄存器地址比modbus协议的通讯地址大1 如:40002 对应寻 址地址 0x0001 } break; }