我在做一个S7226与国产变频器使用modbus通讯,由PLC来控制变频器的起停及频率给定,读取变频器的电流频率。向高手请教几个问题:
1、根据厂家的变频器寄存器地址,按照网上的PLC地址说明,如将图中输出电流地址5001H转为10进制再再前面加上4,则地址为420481,大于49999,程序中MBUS_MSG报故障4, 4=请求参数错误(slave address,modbus address,count,RW)。怎么处理?
2、将地址改为5001时,MBUS_MSG报故障8, 8=响应CRC校验和错误,什么原因?
通讯程序是网上的标准程序,应该不会有问题?
另:1、modbus通讯是否需要将所有通讯线屏蔽层连在一起接地?
2、modbus通讯是否需要首尾终端?
3、是否需要将变频器和PLC的外壳地接在一起?
图片说明:
最佳答案
1 根据厂家的变频器寄存器地址,按照网上的PLC地址说明,如将图中输出电流地址5001H转为10进制再再前面加上4,则地址为420481,大于49999,程序中MBUS_MSG报故障4, 4=请求参数错误(slave address,modbus address,count,RW)。怎么处理?
通常 modbus 协议的保持寄存器地址范围在 40001 - 49999 之间。对于多数应用来说已经够了。但有些 modbus 从站把地址映射到保持寄存器区的地址超过 9999 的部分。
modbus Master 协议库支持超过 9999 的保持寄存器地址。地址范围为 400001 - 465536。只需在调用 MBUS_MSG 子程序时给 Addr 参数赋相应的值即可,如 416768。
西门子modbus的起始地址是从0开始所以你这里的5001H 对应的参数地址应该是420480
2、将地址改为5001时,MBUS_MSG报故障8, 8=响应CRC校验和错误,什么原因?
通讯程序是网上的标准程序,应该不会有问题
5001 地址不对。还是应该将5001H 转成20480
3所有屏蔽线需接在等电位排上,不需连在一起接地
在多站 远距离时需要首位接终端电阻
PLC外壳为绝缘材料。不需接地
提问者对于答案的评价:
经过修改地址,通讯可以连上,但是很奇怪,连续使用几次MSG块读取WORD时,有一些可以读出,有一些不行,报故障代码8?
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc222372.html