当前位置: 主页 > PLC控制

S7-200与C#的Modbus通讯的字节数组问题

例如,我想在上位读取地址为2PLCI0.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的地址了?真是不知道为什么。
谢谢楼主分享,非常感谢;

图片说明:

S7-200与C#的Modbus通讯的字节数组问题S7-200与C#的Modbus通讯的字节数组问题

提问者对于答案的评价:
每次提问其实都是一次互相学习的过程。。。

专家置评

建议使用modbus库指令实现

  • 关注微信

猜你喜欢

微信公众号