求助:Modbus协议RTU模式数据传送中如何表示小数 点击:7339 | 回复:13



jiangjianjazz

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2003年3月13日
发表于:2003-06-25 09:39:00
楼主
在使用Modbus协议,RS232串行线,RTU消息帧模式,传送数据时,如何在数据域中表示小数?我知道一般一个数据是2字节或者4字节,是不是4字节中前2字节是整数,后2字节是小数?还是可以自己设定? 此外,在写寄存器时,RTU消息帧是不是 查询: 地址编码 功能代码 寄存器起始地址 寄存器个数 数据长度 要写入数据 校验码 字节数 1 1 2 2 1 n 2 响应: 地址编码 功能代码 寄存器起始地址 数据长度 实际采集的数据 校验码 字节数 1 1 2 1 n 2 多谢回答,谢谢



wonjolo

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 12回
  • 年度积分:0
  • 历史总积分:84
  • 注册:2003年4月21日
发表于:2003-05-07 10:30:00
1楼
消息帧,RTU 启始位1 设备地址8bit 功能代码8bit 数据n CRC校验16bit 结束位1

jiangjianjazz

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2003年3月13日
发表于:2003-05-08 09:32:00
2楼
上面这个回复的老兄,你的说这个是笼统的,我知道。现在我问的是具体的,也就是说是数据n中详细的分类,即 查询中数据段:(寄存器起始地址 寄存器个数 数据长度 要写入数据)   字节数 2 2 1 n 响应中数据段:(寄存器起始地址 数据长度 实际采集的数据 ) 字节数 2 1 n 是不是这样?不知能否解答,还有上面小数传送的问题,谢谢

jiangjianjazz

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2003年3月13日
发表于:2003-05-21 19:59:00
3楼
没有人知道吗?

xuexi333

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2003年5月23日
发表于:2003-05-24 16:17:00
4楼
X|XXXXXXX X|XXXXXXX XXXXXXXX XXXXXXXX 31... 29 0 位 31位为符号位,0:正,1:负 23位到30位是整数部分,0到22位是指数部分 转换结果=f.m f=2^(e-127) e=整数部分(30 bit__23)---〉换算成对应的10进制数 m=2^(-x0)+2^(-x1)+...2^(-x22) x0,x1是指从22位开始为零位算起,位数为1的位数 如: 00111111 1000011 00110001 10111011 符号:正 整数部分:2^(127-127)=1 (1111111=127) 小数部分:2^(-5)+2^(-6)+2(-9)+....

北京华讯-MDS

  • 精华:3帖
  • 求助:0帖
  • 帖子:6帖 | 130回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2001年12月05日
发表于:2003-05-27 15:47:00
5楼
美国MDS中国代理商:北京华讯通信电子技术公司 联系方式如下: 栗志新 北京华讯通信电子技术公司 销售经理 北京市朝阳区安慧北里逸园甲16号北京世纪龙都国际公寓1608室,100101 移动:(0)13911270532 电话:010-64984927 传真:010-64984954

jiangjianjazz

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2003年3月13日
发表于:2003-05-28 21:54:00
6楼
花落去: 先感谢回答。我想问一下)   e=整数部分(30 bit__23)---〉换算成对应的10进制数   m=2^(-x0)+2^(-x1)+...2^(-x22)   里面,30 bit__23什么意思?为什么f都是2的幂?假如整数要表示3,5怎么办? 还有小数部分,实例中那些5,6,9怎么出来的?x0-x22不都是0,1吗?怎么出现-5,-6,-9?

sunny3721

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2002年3月15日
发表于:2003-06-04 23:50:00
7楼
查询: 地址编码 功能代码 寄存器起始地址 寄存器个数 数据长度 要写入数据 校验码    字节数 1 1 2 2 1 n 2    响应: 地址编码 功能代码 寄存器起始地址 数据长度 校验码    字节数 1 1 2 1 2 RTU不能传送浮点,因为一个模拟量只有两个字节,浮点时4个字节。

GoodMan_Sun

  • 精华:0帖
  • 求助:0帖
  • 帖子:32帖 | 36回
  • 年度积分:0
  • 历史总积分:147
  • 注册:2003年6月10日
发表于:2003-06-10 17:47:00
8楼
你可别乱试,搞不好烧了串口,就比较罗嗦了。楼上二位说得都很对,你就照办。OK?

陈新

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 14回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2002年5月19日
发表于:2003-06-16 12:20:00
9楼
所有 MODBUS RTU SLAVE 都支持接受整数,然后自己去转换,不必花精力去研究浮点传送,例如ABB变频器,你只需发送20000到40001,他就认为是50.00HZ,安川变频器,只要发送5000到0002,他就认为是50.00HZ,其他参数一样。接受也是一样。据我所知的主从设备都是这样传输的。

jiangjianjazz

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2003年3月13日
发表于:2003-06-17 14:31:00
10楼
那是你的频率因为正好是整数,所以不用关心浮点数,假如我要测温度是有小数的,那怎么表示?

hongyun

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2003年4月29日
发表于:2003-06-17 21:42:00
11楼
同意陈新的观点。 如果小数点位置不固定,你可以前面两个字节表示数字,再加一个字节表示小数点位置。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-06-20 10:16:00
12楼
hongyun说的对,是这样子整的~~~我在东元变频器

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-06-20 10:34:00
13楼
大家都是个好人啊,认识一下,交个朋友。2002年毕业的,老家四川。我在江苏无锡工作,您们呢? Email: romeo-ma@tecowestinghouse.com.cn

热门招聘
相关主题

官方公众号

智造工程师