SR40做MODBUS TCP客户端,读取服务器40010为起始地址的2个字,结果通讯错误代码为2 ,意思是请求地址范围超出了允许的服务器通讯地址范围。但是用 MODBUS TCP测试工具,与服务器通讯正常。请问大家遇到过这种问题吗?如何解决?
问题补充:
服务器端不是西门子的,也不是我们做的。要求我们从40010开始读,读2个字。通讯以后报错代码为2。后来尝试读40001,读两个字,没有报错。再从40002开始读就又报错为2。但是用MODBUS TCP测试工具就可以读服务器40010的数据。客户端的库分配地址采用的建议地址。SMART200在做客户端的同时还是服务器。
最佳答案
根据你的描述,我感觉问题还是在双方(服务器方数据寄存器)的范围定义问题,为什么你Addr写40001就没有报警。
用调试工具MODBUS TCP测试可以,说明你方的客户端并没有什么问题。
先用200smart做客户机测试,正常了再比较服务器程序。
没有测试过客户、服务同时的modbus tcp项目。
提问者对于答案的评价:
原因找到了,是对方把读取地址给错了。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc284764.html