第三方通讯协议格式标准的485RTU,
发送码为 机器识别码+指令码+访问地址+内容/长度+CRC校验(详细内容格式见图)
请问,西门子这边程序,我可以使用Modbus 的MBUS_CTRL和MBUS_MSG这两个进行程序数据连接。
问题1:MBUS_CTR中校验写什么呢?
问题2:MBUS_MSG中Addr处选择读写类型改怎么填呢?(比如40001 就相当于VB40001 一样 是一个一个字的地址)
问题3:如果使用Modbus RTU这种不合适 ,那该用什么呢?谢谢各位大神
图片说明:
最佳答案
截图中的
1、MBUS_CTR中校验写什么呢?
这个检验是指校验方式,即从站的校验方式,它的值由从站的校验方式决定。
当从站的校验方式是“无校验” ,则写 0;
当从站的校验方式是“奇较验” ,则写 1;
当从站的校验方式是“偶较验” ,则写 2;
2、问题2(以贴图为例):
帖图中上数第三行,00 18 读取寄存器的起始地址,前面的 0018H,将这个十进制的值换算成十进制,则为 24,24+1= 25,从站保持寄存器的地址是以 4 打头,中间用 0 充,则为 40025,那么 MBUS_MSG 指令:
Slave:3
RW:0;
Addr :写起始保持寄存器地址(十进制的) 40025;
Count :4,注意这是与你附图不同的地方,附图中是8;所以有点怀疑是不是标准的MODBUS RTU 协议。
3、问题3
从图中看只是读取保持寄存器的长度与MODBUS RTU 不同,MODBUS RTU 要求是以字为单位的,但截图中是以字节为单位。
建议先用MODSCAN32 这个软件,测试从站的通讯。如果测试正确,则是标准的 MODBSU RTU 通讯。
4、如果MODSCAN32 可证明是 MODBUS RTU 通讯,则可以调用MODBUS库指令进行编程。
http://www.ad.siemens.com.cn/service/article/S7-200/S7-200modbus/Default.aspx
如果不是MODBUS RTU 协议,则只能用自由口编程了。
自由口通信常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/Smart%20SMS/018.html
如何监视 S7-200 和串行设备之间的自由口通信
https://support.industry.siemens.com/cs/document/26726155
提问者对于答案的评价:
很详细,回答非常简单易懂!谢谢,以后多向大神学习
最佳答案作者回复:
互相学习,共同提高
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc362244.html