我用S7200的自由口做modbus主站,仪表做从站,RTU协议。我的程序发送命令和接收命令都能执行,但是就是接收不到数据,接收字符个数始终为0接收的数据也都为0.请高手指点。
最佳答案
1、但是就是接收不到数据,接收字符个数始终为0接收的数据也都为0?
与做从站的仪表通讯没有打通。原因为主、从站硬件连线与参数设定、程序编制等问题。首先可以原因串口通讯测试软件进行与仪表通讯,这样可证实参数、连线的正确性。串口通讯测试软件网上就有,例如:
http://www.gongkong.com/webpage/datum/200509/E-97D1-B85694B4939A.htm
http://www.xdowns.com/soft/38/63/2008/Soft_48080.html
2、modbus RTU 注意事项:
、modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
、主站初始化与控制子程序:EN 使能: 必须保证每一扫描周期都被使能(使用 SM0.0)。
、modbus RTU 主站读写子程序:
.EN 使能: 同一时刻只能有一个读写功能(即 MBUS_MSG)使能 。
注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。
.First 读写请求位: 每一个新的读写请求必须使用脉冲触发 。
3、相关文档:
《S7-200基于modbus协议与智能仪表之间的通信实现方法》连接:
http://www.chncla.com/chinese/knowledgebase/Showknowledgebase.asp?ID=782&ClassID=50
提问者对于答案的评价:
原来是发送数据的校验高低位搞反了。大家辛苦了,谢谢大家了。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc304226.html