我现在该怎么去对应地址,我是从VB0-VB2000的数据,我该怎么去找其中的所需要的地址?
问题补充:
下图是我修改后的。现在ADDR是40059,我监控vw0是16656,如果我将ADDR换成40058,他应该是总功率因说,我在电表上查看的是1,而监控是仍然是16656,我这是哪里错了?电表上设置了从站1,波特率是9600,无校验
图片说明:
最佳答案
1、从左第一张图,看到是一个电能表的MODBUS RUT 保持寄存嘎啦地址,所以第二张图中的程序是错误的。
电能表是从站,SMART 200 本体的口 PORT0 是主站,你程序用的是从站指令,这是不对的。
现有的情况下它们之间没有对应关系。
2、你要用主站指令去读,取保持寄存器存在 V CPU的V存储区,例如读三相的视在功率
主站指令MBUS_MSG 指令的脚:
Slave 电能表的设备地址
RW 0, 0 表示读, 1表示写
Addr 40059 保持寄存器起始地址,A相视在功率地址 003AH 转换成十进制则为 58,加上1 则为 59,最前面加上4 并凑为5位的MODBUS RTU 保持寄存器地址则为 40059
Count 3 读3个字
DataPtr &VB0 则:
VW0 就是读来的 003AH 保持寄存器的值,那为 A 相视在功率
VW2 就是读来的 003BH 保持寄存器的值,那为 B 相视在功率
VW4 就是读来的 003CH 保持寄存器的值,那为 C 相视在功率
其它的地址都按这个方法去换算。
程序要按下面主站轮循结构去写
Modbus RTU 主站 (最下面有MODBUS RTU 轮循实例)
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/communication/serial_port/modbus/Master/Master.htm
3、
S7-200 SMART Modbus RTU通信常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/020.html
补充:
1、要确保轮循轮起来,可读到电表的数据。
2、查看读到的数据,与电表对应一下以确认一下地址是不是有偏移?
3、有没有条件使用MODSCAN32 软件连接到电表,然后可确定保持寄存器地址
提问者对于答案的评价:
我补充的ABC三张图片上的程序写的对 吗?现在读不出来?谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc371099.html