登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:组态王modbus-rtu读出的数据怎么是错误的

点击:7552 回复:9

各位大侠,小弟在用组态王6.55,并用MODBUS-RTU通讯读电力仪表的数据时,读出的数据有错误,请大家帮我解答一下,这电力仪表是AED80-E,RS485接口,有modbus-rtu通讯,数据是单精度32位浮点数,标准IEEE754格式 我想用组态王6。55版读出仪表里的数据,组态王的数据词典变量类型是I/O实数,设的寄存器从30263开始,数据类型是ushort,如改成FLOAT就不准了。但读时,前6个数据(3个相电压,3个线电压是正确的),其它数据都不正确,不知道是怎么回事了。还有组态王寄存器从30263开始,读前6个数据是正确的,如从30006读就不准了,不懂???
下面是电力仪表收发的报文是正确的,
仪表通讯信息表见上图
附件 QQ图片20180609102758.jpg
附件 QQ图片20180609102913.jpg
18-06-09 10:33
表格中的地址是寄存器实际地址,而组态王中使用的是寄存器编号!
你要读实际地址为0006 0007组成的浮点数,那么在组态王中的寄存器编号应该为300007,数据类型为浮点数!
18-06-09 15:16
比如读三相相电压,如下表所示:
附件 image.jpg
那么组态王中依次建立的寄存器为:
附件 image.jpg
附件 image.jpg
附件 image.jpg
最后修改:2018/6/9 15:20:54
18-06-09 15:20
Modbus中变量基本类型:
离散型输入,一般指数字量输入,寄存器编号范围为100001~165536,对应的寄存器实际地址范围为0~65535,操作功能码有02;
离散型输出,一般指数字量输出,寄存器编号范围为000001~065536,对应的寄存器实际地址范围为0~65535,操作功能码有01/05/15;
输入寄存器,一般指模拟量输入,寄存器编号范围为300001~365536,对应的寄存器实际地址范围为0~65535,操作功能码有04;
保持寄存器,一般指模拟量输出,寄存器编号范围为400001~465536,对应的寄存器实际地址范围为0~65535,操作功能码有03/06/16。
当然,有些开发产品的为了处理方便,一般就不区分01和02功能码、不区分03和04功能码!
18-06-09 15:30
guanyumou 版主
你说的太对了,根据你说的,我已设置成功了
现在我还有一个问题,我共有50个左右这样的电力仪表,所有数据都要实时传到我的电脑里来,距离有600米,modbus-rtu通讯怎么连,单是一段RS485只有32个接点啊,是不是要加中继器啊????
18-06-10 12:53
地址加一试试
18-06-10 14:19

引用 63369005 在 2018/6/10 12:53:32 发言【内容省略】

使用2个或者以上的串口哦!
18-06-10 23:11
Modbus中变量基本类型:
离散型输入,一般指数字量输入,寄存器编号范围为100001~165536,对应的寄存器实际地址范围为0~65535,操作功能码有02;
离散型输出,一般指数字量输出,寄存器编号范围为000001~065536,对应的寄存器实际地址范围为0~65535,操作功能码有01/05/15;
输入寄存器,一般指模拟量输入,寄存器编号范围为300001~365536,对应的寄存器实际地址范围为0~65535,操作功能码有04;
保持寄存器,一般指模拟量输出,寄存器编号范围为400001~465536,对应的寄存器实际地址范围为0~65535,操作功能码有03/06/16。
你在映射地址时比如输入输出地址   寄存器地址+300001 = MODBUS-RTU地址
18-06-12 10:15
600米,你要查一下波特率支持的距离,根据距离调整波特率,最好加中继,
18-06-12 20:04
一个485总线上挂32个设备吗,我记得好像64或者128个吧
18-06-12 20:10

工控新闻

更多新闻资讯