如题,想做一种仪表与200的485rtu modbus通讯,具体是用200读仪表的某个寄存器。以前也在此论坛提过问,也有些高手提出解答建议,但是我没学会在相同标题下回复,所以只好新建标题,也感谢回答我问题的高手。我上传了我的仪表通讯规约,编的程序上传不了,只好改了后缀mwp----bmp,不知算不算违规;我发送给仪表是16#080103002E0002A402,其中08是发送字节数、01是从站地址、03是功能码、002E是起始寄存器地址、0002是读取仪表寄存器个数、A402是其它软件计算的发送字节(0103002E0002)CRC16校验码,发送完成连接中断,在中断里接收,可惜没有接收到数据。请高手不吝指教!
问题补充:
首先感谢2楼的兄弟给我启示,我原先有个误区:主站对从站的读应该是先发送读指令,定义读的数据地址、长度等等;从站收到指令后再做回应,所以就有了原先的两次调用mbus-msg对应写和读。现在我只调用一次mbus-msg读,但还是接收不到数据,且在线监控mbus-ctrl和mbus-msg块的输出完成及错误状态都很正常,我试着把3、8号线对调甚至拔掉通讯线也是如此,应该是通讯超时才对啊,人都快崩溃了!我把改好的程序上传,希望能得到高手指点!
图片说明:
最佳答案
可以看出200是准备做modbus rtu 主站通讯。建议看看这个例子。仿照这个例子做挺好,便于你理解。
下载中心
S7-200做主站S7-300 CP341做从站的modbus RTU通讯
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0451
楼上的,也建议参考。
提问者对于答案的评价:
三楼的大侠给的一大堆链接基本我都看过,有几个关键有用的实例网址又打不开,所以还是二楼的高手实例对我用处大些!再次感谢为我解答的高手!
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc261434.html