求问使用S7-200SMART怎么实现轮循通信?

我使用S7-200SMART对几个不同从站地址的传感器读取数据和写数据。需要实现PLC能够尽量地实时读取所有传感器的测量值,并且还要能够不定时地手动对传感器执行写入操作,即校准传感器。但我们现在写的程序运行起来之后一直出现通信冲突,MBUS_MSG一直出现错误代码6,请教各位大神,这个程序应该如何实现才能够让所有读取程序不冲突,并且不定时的写入操作也不冲突?

最佳答案

MSG指令在同一个时刻只能是唯一的一条MSG指令有效,因为200smart 的modbus rtu通讯是采用半双工通讯方式下进行的。当系统中有超出一条MSG指令被同时激活时,MSG指令的error会报6#信息。
关于轮询(也可能是modbus rtu通讯讨论的永恒话题)有几个常用的方法:
1)采用上一个MSG指令的done位触发下一个MSG指令,同时复位上一个激活MSG指令的使能;
2)如果能够计算好通讯的时长,定时器也是一个办法。只是这个部分对应于通讯效率稍低于采用done位方式。如果通讯数据量单一,通讯相应要求不高的场合可以使用,毕竟这个方法可以省且指令间的逻辑控制关联;
3)采用逻辑控制与数据传送关联,系统中仅仅只采用一条MSG指令(该方式在论坛上,前一段时间有讨论过),有兴趣可以去看看。
关于实时读、写数据问题,一般编辑这样的程序需要划分出几个关键的数据,进行优先轮询,当需要写数据时,插入激活写数据的msg指令的方法,不需要时,写数据的MSG指令不激活,这种做法常用沿触发,然后用下一个MSG的done位复位。

提问者对于答案的评价:
第三个方法没有太明白呀,可否再说得详细些

最佳答案作者回复:
主要的原理是先赋值好所需的MSG管脚变量数据,如何再调用MSG指令。
在论坛上输入关键字modbus rtu轮询机制。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc288642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐