登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:流量计modbus-rtu通讯读出数据处理的疑惑

点击:2640 回复:21

按照触摸屏上的互换模式换了一下,不管用。不能直接显示真正的数据。使用串口调试助手读取的数据,再使用3楼提供的网址的数据转换方法就可以转换出真实的数据。
在触摸屏和PLC中怎么做出来,我再多试试,如果实在试不出来就使用模拟量模块读取单一的数据了
19-10-15 00:21

引用 lizhengchao 在 2019/10/15 0:21:08 发言【内容省略】

我测试了,可以显示,以读温度为例:
触摸屏设置如下:
附件 image.jpg
附件 image.jpg
附件 image.jpg
Modbus Slave设置如下:
附件 image.jpg
附件 image.jpg
仿真测试结果如下所示:
附件 image.jpg
您看看行不行?16进制41AD9BA6就是显示21.7,关键一点是触摸屏选5x类型的寄存器
最后修改:2019/10/15 10:17:49
19-10-15 10:14

引用 YXBK 在 2019/10/13 11:49:23 发言【内容省略】

这么初级的错误楼主应该不会犯!你不想想是不是因为高低16位互换的问题么
19-10-15 10:17

引用 lizhengchao 在 2019/10/15 0:21:08 发言【内容省略】

也可以用4X类型寄存器读,读上来后后台写段脚本程序,无非就是以下几种情况来回捣腾,赋值给几个内部浮点变量!总能显示出来:
附件 image.jpg
19-10-15 10:22

引用 guanyumou 在 2019/10/15 10:17:04 发言【内容省略】

我有想过,但是转换不了
楼主说的   试着读取了温度数据,实际温度是20.6度,读出的数据是11012611
11012611这个我认为应该是32位的十进制,
转成16进制是 A8 0A 03,然后无论怎样都变不成20.6。
19-10-15 10:45

引用 YXBK 在 2019/10/15 10:45:07 发言【内容省略】

这几组数据都是可以正常显示到触摸屏上的
41A3E979,温度为20.5度(该数据是楼主通过调试助手读过来的,那么只要在触摸屏上选择5x类型的寄存器,数据类型选浮点数即可正确显示)
41AD3127,温度为21.6度
41AD9BA6,温度为21.7读
附件 image.jpg
附件 image.jpg
附件 image.jpg
19-10-15 12:43

引用 YXBK 在 2019/10/15 10:45:07 发言【内容省略】

楼主他已然用串口调试读出了温度数据,发送后有返回:
接收中的数据41A3E979就是温度数据,触摸屏上选5x类型寄存器,数据类型选浮点数即可正常显示20.5度,选5x类型寄存器是因为32位中的高低16位需要互换!
附件 image.jpg
19-10-15 12:47
谢谢版主详尽的解答,这几天在其他的厂区工作,没顾得上来论坛回复。期间问过设备厂家的技术人员,厂家回复“我们的浮点数格式是按字节高位在前,按4321顺序排列”,下图是厂家技术给的图片
附件 微信图片_20191014225738.jpg
19-10-18 08:20

引用 lizhengchao 在 2019/10/18 8:20:14 发言【内容省略】

就像我13楼回答的一样,无非就那几种顺序倒来倒去。总有一种是正确的
19-10-18 09:34
附件 无标题1.jpg
附件 无标题2.jpg
这是测试的结果。在触摸屏的通讯参数里要选择MODBUS RTU   RTU over TCP  和200SMART通讯时要选择MODBUS RTU(zero-based Addressing)
在触摸屏的通讯参数选项里“3X”和“4X”里面有数据转换方式“AB-BA和ABCD-CDBA”,通过这种设置以后,触摸屏也是不能正确显示数据,只能显示“0.00”,虽然都可以实现高低位顺序调换,“5X”就可以正确显示
还有2个疑问:1、这是时间数据是6字节的BCD数据,触摸屏数据显示只有一个“32bit BCD”,数据怎么设置才能正确显示
            2、我的控制系统想用触摸屏做主站,200SMART和流量计做子站,通过modbusr-rtu读取瞬时流量数据到触摸屏,然后将数据写给PLC,在PLC里根据这个数据做相应的输出动作,整个过程要在5秒内完成。modbus的通讯速度能不能跟得上?
最后修改:2019/10/19 0:05:49
19-10-18 10:36

上一页 下一页

工控新闻

更多新闻资讯