例如,我想在上位读取地址为2的PLCI0.0的输入状态,该地址对应的是00001,那么根据一般的MODBUSRTU协议,这个字节数组应该怎么写?0202010001000194E2?还是020201000101B995?或者是别的?我发送任意符合CRC校验的字节数组返回的信息都是0282023161,请大神赐教
问题补充:
官方文档说modbus地址10001~10128对应的I0.0~I15.7,但实际上发命令010001或00010001都是不对的,本人亲测,反而020200000002F9F8倒是有正确的返回值,西门子并没有提到这些东西,真是蛋疼。
图片说明:
9d2145FC710225713ac9094c59490cbd142daf9f4dd0d1fba126ed517146adeb
最佳答案
楼主,见下面图片;
存储器地址是4个字节,数据个数:4个字节;
0202010001000194E2?
我个人认为,应该是:0202000100010001+RTU校验码
00010001是存储器地址;0001是读取的数据个数;
200有Modbus标准指令库,都是用MBU-MSG指令,地址就写10001,直接读取的;
——————————————————————————————————————————
楼主,你就想读取一个I0.0的值,020200000002F9F8,那么0000地址代表I0.0的地址了?真是不知道为什么。
谢谢楼主分享,非常感谢;
图片说明:
提问者对于答案的评价:
每次提问其实都是一次互相学习的过程。。。
专家置评
建议使用modbus库指令实现