From 949e8ea8050bdaaf8436c16b46d9f0f86f9860e5 Mon Sep 17 00:00:00 2001 From: iioter <535915157@qq.com> Date: Mon, 25 Dec 2023 16:33:34 +0800 Subject: [PATCH] =?UTF-8?q?modbus=20=E5=A4=A7=E5=B0=8F=E7=AB=AF=E5=86=99?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PLC.ModBusMaster/DeviceModBusMaster.cs | 64 +++++++++++++++--- drivers/net6.0/PLC.ModBusMaster.dll | Bin 109568 -> 111616 bytes drivers/net6.0/PLC.ModBusMaster.pdb | Bin 54960 -> 55380 bytes drivers/net6.0/System.IO.Ports.dll | Bin 36968 -> 34680 bytes 4 files changed, 56 insertions(+), 8 deletions(-) diff --git a/Plugins/Drivers/PLC.ModBusMaster/DeviceModBusMaster.cs b/Plugins/Drivers/PLC.ModBusMaster/DeviceModBusMaster.cs index 8d36c1d..0ec7fa6 100644 --- a/Plugins/Drivers/PLC.ModBusMaster/DeviceModBusMaster.cs +++ b/Plugins/Drivers/PLC.ModBusMaster/DeviceModBusMaster.cs @@ -622,25 +622,73 @@ namespace PLC.ModBusMaster if (method == nameof(HoldingRegisters)) { ushort[] shortArray = new ushort[count]; - + ushort[] toWriteArray = null; switch (ioArg.ValueType) { case DataTypeEnum.AsciiString: ModBusDataConvert.SetString(shortArray, 0, ioArg.Value.ToString()); await _master.WriteMultipleRegistersAsync(slaveAddress, address, shortArray); - break; case DataTypeEnum.Float: - float f = 0; - float.TryParse(ioArg.Value.ToString(), out f); + var f = float.Parse(ioArg.Value.ToString()); ModBusDataConvert.SetReal(shortArray, 0, f); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, toWriteArray); + break; + case DataTypeEnum.Int16: + shortArray[0] = (ushort)short.Parse(ioArg.Value.ToString()); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, toWriteArray); + break; + case DataTypeEnum.Uint16: + shortArray[0] = ushort.Parse(ioArg.Value.ToString()); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, toWriteArray); + break; + case DataTypeEnum.Int32: + var int32Value = int.Parse(ioArg.Value.ToString()); + shortArray[1] = (ushort)(int32Value & 0xffff); + shortArray[0] = (ushort)(int32Value >> 16 & 0xffff); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, toWriteArray); + break; + case DataTypeEnum.Uint32: + var uInt32Value = uint.Parse(ioArg.Value.ToString()); + shortArray[1] = (ushort)(uInt32Value & 0xffff); + shortArray[0] = (ushort)(uInt32Value >> 16 & 0xffff); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, toWriteArray); + break; + case DataTypeEnum.Int64: + var int64Value = long.Parse(ioArg.Value.ToString()); + shortArray[3] = (ushort)(int64Value & 0xffff); + shortArray[2] = (ushort)(int64Value >> 16 & 0xffff); + shortArray[1] = (ushort)(int64Value >> 32 & 0xffff); + shortArray[0] = (ushort)(int64Value >> 48 & 0xffff); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); await _master.WriteMultipleRegistersAsync(slaveAddress, address, shortArray); - + break; + case DataTypeEnum.Uint64: + var uInt64Value = ulong.Parse(ioArg.Value.ToString()); + shortArray[3] = (ushort)(uInt64Value & 0xffff); + shortArray[2] = (ushort)(uInt64Value >> 16 & 0xffff); + shortArray[1] = (ushort)(uInt64Value >> 32 & 0xffff); + shortArray[0] = (ushort)(uInt64Value >> 48 & 0xffff); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, shortArray); + break; + case DataTypeEnum.Double: + double d = double.Parse(ioArg.Value.ToString()); + var ulongValue = BitConverter.DoubleToUInt64Bits(d); + shortArray[3] = (ushort)(ulongValue & 0xffff); + shortArray[2] = (ushort)(ulongValue >> 16 & 0xffff); + shortArray[1] = (ushort)(ulongValue >> 32 & 0xffff); + shortArray[0] = (ushort)(ulongValue >> 48 & 0xffff); + toWriteArray = ChangeBuffersOrder(shortArray, ioArg.EndianType); + await _master.WriteMultipleRegistersAsync(slaveAddress, address, toWriteArray.ToArray()); break; default: - await _master.WriteSingleRegisterAsync(slaveAddress, address, - ushort.Parse(ioArg.Value.ToString())); - break; + throw new ArgumentException("数据类型未实现写入"); } rpcResponse.IsSuccess = true; diff --git a/drivers/net6.0/PLC.ModBusMaster.dll b/drivers/net6.0/PLC.ModBusMaster.dll index 6e3ae3ed48f797a7bf9f57b91fa29878d4cc3273..d98ef7e700c09c345a00377eb0c90e8c7be47443 100644 GIT binary patch delta 26524 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 delta 24702 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≶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 diff --git a/drivers/net6.0/PLC.ModBusMaster.pdb b/drivers/net6.0/PLC.ModBusMaster.pdb index a9b55a4bb7bc0c6f8383a1829c628908517c5066..b9008006e1c56d96f4fe171a1be5633b79611ac5 100644 GIT binary patch delta 1433 zcmb7EZA@EL7=F%ax$P}D3IwDnu;#92nVV1%m|1Xku<3;0Hj#*NgTnlb7nvE0BU{>g zZ(Ca0fs{g~*|IG$v1o##jelIkYBGb)McLdBw}deD&te4mVT{SleD574knqQoJkRr< z_q^vhANONw()81mY2=7&W*FGiAoq3yXp`=ir+O=P#iA28uDP!Snya?{nHVW`SQ*g6 zfn$UnRCkj4dr1pE`O1;|vO?Xj{S1E-`c#HXgaeuhpApPK6WR&=ge!#G1V_k(9>Pt+ zfv^eA0TaF)AiI_3#pZ|?m62@1f!at?HJ6zk7}tZ+fE~AtQ9Eug>(a9RV`u?bG&{Qp zmceYSYY8^R?&*Vu>hb*;Uy1d;1&O$>ddtN-D>1|QI77;6Bp5zU-_3h?Gk4~tt830# z*{|u@`hX?SdD6FAz(K!nw*?pd3dM{53&dO04DsjcJaL1DJpv{)7x5j1>7VSaW&#= zqUEE$CK1!bHk^rOD3c${P-bp0Lzy22m1Y5hF{N3=abg=@i_KHUAD^epW5hPN<4OxH zFs!tQuoByFeu%E7vDIC_^U=;ux%Y6FeAI&%yZXA2etJ*J?8^D}jr^k2zkhvD@Y|$V z-*#~+)pqqz_b=Bhqem875^w&VE^d17#Gz_d##E81g-m^msbQv7vfu&>dDy@MEN){% z+u7T%u+hiaxQmVVxk%-cUvW zrp=}oE_pd?Ojga*vS-pS&79!u=j5&L_Om~d)t6&DWKU0DZWT8M-3QeLWrB`l0YsYE zE;7_{YY~|M-AT{&7Xsy+21_|M7)1?e6zt__;n)H^2Z198+strc8%Ghm91`}e9;-K_ zVx4rY8RhGwAJLsEIf_xkQEC(f*80&zC#v*{+HA$zf|_NE65YbFij2Lj*>~NtSBdUL zAKD77F5PkOj2^v~91HaAt?&IjMPS`mVsM`gb%+xA`eSlV|BavP972 z_f5bz1WkV348#eVT$KatBWQAk0PG}a@_qDZ9wKP6#|rExXmYCv93^P-5WNzU`fDL8 zQGF$69xz2JQ%=`FHdw8Nw3Rs;6lo)iWSCWn`d?80|0-D-P0FQXQdC{WiWxr+uFh?h ow6oyBAs*_06n<8UY?PuONwMwHsl(Fnn3U*|#+s$m$BgO!0XRh}L;wH) delta 1010 zcmZ{jZAep59LAq>@AbM(lhv>sYK~=uB9f6NA+gk%S(8bKeZ}!*}`M zAyaN2u%g`A)&d}NrNL0$w4%cQE`K^0sUsr1iA!7>%pR_4ghd zQ}#7V>{_OX`D1es&exfCFOf~%#zM~solb30eluD z`x1c>X}*vwWC=zbj1?I!J;vg*dW_He(|Lat_r-W0_gDu5qW(mum@mc8?!V3l68SP5 zT&QDNGFp2Qb168yP&2gmFi4tsz~B%6PAyu+S(CzR)(&de!|=;8SF)?7(@`m+xXV$Q zj5A#l)e~JqL{5$nLvoauslX~iR!qbx#X>Zz4x&w!i09OycpV{rQ=`OnZd8f5<~9+H z9t&~G;~=VDi8$kxHi_8plQwCw-Q|<2MT`=)xZ`uw(C7V*8ZFKdbvWveQ1Y!iLdkui z4mZ1{Eh1V1(iSbY5p^gJL@BB7iBhtZsKc*-WD~*nNj5D;dL^3&|1{WoZJST;M#*1@8mV*Dk-8f&f!4htr=} zIA#d#oG51IaPLG1$8Lo*lXmtf)G!&~)M)tYGPmzJS~(-^1; zP!Ou0YP4nuNQ)gemZL({XT!!J52%MIAPK1gQc%bt3k4iqqkrdEoq*E$g-Q|M>@+|3rF4P3_d~3;9a& n#Iu#QXoLnPQx;2STsvK|PiEyJIJJ*+=fUjBF?+|%K5G95#Uk+( diff --git a/drivers/net6.0/System.IO.Ports.dll b/drivers/net6.0/System.IO.Ports.dll index e10e943a423e8232901a180fa4300f535cd4625f..e2af6d11ad03797a5ffb1c6a7e30f9dd1b9a0bcc 100644 GIT binary patch delta 11946 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 ve*aG1+Y?UrUOu$_!Q;*sdfrIMnQE&{DOsD<