1200PLC做MODBUS通讯主站程序时,需要调用MB_COMM_LOAD这个块用于初始化模块,这个块有个MB_DB管脚是连接MB_MASTER通讯块的背景数据块的,但在程序中需要多次调用MB_MASTER这个块,每次调用都会生成一个背景数据块,假设我有两个MB_MASTER这个块,分别有两个背景数据块,在初始化的时候如何同时初始化这两个背景数据块?还是MB_MASTER用一个背景数据库即可?通讯的轮询方式和200的一样?
问题补充:
我想知道的是我调用MB_MASTER如果有多少个是否可以共用一个背景数据块?MB_MASTER的使能端我采用上次调用的完成信号来启动,上次通讯的完成信号同时复位上次MB_MASTER的使能端;这样做可以吗?如果不可以的情况下做MODBUS通讯时有多少个MB_MASTER就得有多少个MB_CONN_LOAD?这样是不是有点太麻烦了?
最佳答案
"必须调用“MB_COMM_LOAD”一次以组态该端口使用 Modbus RTU 协议。 完成组态后,“MB_MASTER”和“MB_SLAVE”指令可以使用该端口。
"MB_COMM_LOAD" 只需再(注意这个再字)被调用一次,就可修改某个通信参数。 每次“MB_COMM_LOAD”调用将删除通信缓冲区中的内容。 为避免通信期间数据丢失,应避免不必要地调用该指令。
所以只要你执行某个MB_MASTER块前都执行一次MB_COMM_LOAD,而这个MB_COMM_LOAD的MB_DB管脚与要执行MB_MASTER块相对应就可以
对补充的回复:
1、你的想法可以,多个MB_MASTER可以共用一个背景数据块(见附图)
2、如果不是特殊原因,一个通信端口最好用一个MB_MASTER就可以了,多站轮询访问只需要在调用MB_MASTER之前整理好相关变量数据,从站地址、从站读取起始地址、读取字数、存放地址都可以是变量,做一个通信指针不停的去改变这些变量就可以
图片说明:
提问者对于答案的评价:
谢谢了
专家置评
已阅,最佳答案正确。
请参阅以下链接中多站轮寻的例子。
如何使用 STEP 7 (TIA Portal) V11 为 SIMATIC S7-1200 建立 MODBUS-RTU 通讯?
http://support.automation.siemens.com/CN/view/zh/47756141
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc199326.html