hjwb.net
当前位置:首页 >> moDBus四字节浮点数 >>

moDBus四字节浮点数

#include int main( void ) { unsigned a = 0x4125851f; unsigned b = 0x410c3d71; void * pa = (void *)&a; void * pb = (void *)&b; float c = *(float*)pa; float d = *(float*)pb; printf( "c = %f\n", c ); printf( "d = %f\n", d ); } 这...

浮点数保存的字节格式如下: 地址 +0 +1 +2 +3 内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 这里 S 代表符号位,1是负,0是正 E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。 M 24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最...

需要知道该累积流量计的存储数据类型,即03.04中整数是怎么存储的,是不是能直接取来就用,即DINT类型还是其它的什么类型的,需要参看累积流量计说明书。小数部分也是同样道理。举个例子:整数就是0010代表就是10,小数部分存储为DINT,然后除以...

在Modbus现场总线系统中,浮点数的数据传输一般有两种办法,一种是将浮点数按照量程映射到一个寄存器中(2个字节),例如0到65535对应0到100%,还有一种就是采用两个寄存器四个字节传输浮点数。

这个我用PLC 验证了一下,从PLC里面可以直接查看寄存器里面的值,并且直接用浮点数表示出来了。。这个计算是按照国际标准IEEE 754来的。。举个例子看图片,图片里%MW2、%MW3都存放整型,根据IEEE 754标准,得到了%MF中浮点数的值。。

自测试采用modbus TCP报文: 000060-Rx:0A 44 00 00 00 06 02 03 00 00 00 0A 000061-Tx:0A 44 00 00 00 17 02 03 14 00 00 41 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 20浮点数传输低位优先实际41 20 00 00(单精度浮点...

MODBUS RTU里没有专门的浮点寄存器,一般还是用4X保持寄存器的地址。单精度浮点数一般是32位,也就是需要占用两个相邻的4X寄存器。

BitConverter.ToSingle(Bdata, 0); 其中Bdata是一个四字节的字节数组,通过这个方法,就能将字节数组转换为浮点类型数据。需要注意的是,PLC的字节顺序可能与电脑的不同,有0123,1032,3210,2301等四种组合,需要统一调整为0123顺序,然后用上述...

package com.zsc; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.battery.bean.CommunityExceptionRecord; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaste...

这要看采用RTU模式还是ASCII模式传送1)采用ASCII模式传送 float v = 1.2345f; string sv = v.ToString(); byte[] bv = Encoding.ASCII.GetBytes(sv); //按字节发送bv 2)采用RTU模式传送 float v = 1.2345f; byte[] bv = BitConverter.GetBytes...

网站首页 | 网站地图
All rights reserved Powered by www.hjwb.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com