下面以两台CPU 226CN之间的Modbus现场总线通信为例介绍S7-200系列PLC之间的Modbus现场总线通信。
【例6-9】模块化生产线的主站为CPU 226CN,从站为CPU 226CN,主站发出开始信号(开始信号为高电平),从站接收信息,并控制从站的电动机的起停。
【解】
1.主要软硬件配置
①1套STEP 7-Micro/WIN V4.0 SP9。
②1根PC/PPI电缆(或者CP 5611卡)。
③2台CPU 226CN。
④1根PROFIBUS网络电缆(含两个网络总线连接器)。
Modbus现场总线硬件配置如图6-105所示。
图6-105 Modbus现场总线硬件配置图
2.相关指令介绍
(1)主设备指令
初始化主设备指令MBUS_CTRL用于S7-200端口0(或用于端口1的MBUS_CTRL_P1指令)可初始化、监视或禁用Modbus通信。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令,指令执行完成后,立即设定“完成”位,才能继续执行下一条指令。其各输入/输出参数见表6-22。
表6-22 MBUS_CTRL各输入/输出参数表
MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于启动对Modbus从站的请求,并处理应答。当EN输入和“首次”输入打开时,MBUS_MSG指令启动对Modbus从站的请求。发送请求、等待应答、并处理应答。EN输入必须打开,以启用请求的发送,并保持打开,直到“完成”位被置位。此指令在一个程序中可以执行多次。其各输入/输出参数见表6-23。
表6-23 MBUS_MSG各输入/输出参数表
【关键点】指令MBUS_CTRL的EN要接通,在程序中只能调用一次,MBUS_MSG指令可以在程序中多次调用,要特别注意区分Addr、DataPtr和Slave三个参数。(www.xing528.com)
(2)从设备指令
MBUS_INIT指令用于启用、初始化或禁止Modbus通信。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。指令完成后立即设定“完成”位,才能继续执行下一条指令。其各输入/输出参数见表6-24。
表6-24 MBUS_INIT各输入/输出参数表
MBUS_SLAVE指令用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。在每次扫描且EN输入开启时,执行该指令。其各输入/输出参数见表6-25。
表6-25 MBUS_SLAVE各输入/输出参数表
【关键点】MBUS_INIT指令只在首次扫描时执行一次,MBUS_SLAVE指令无输入参数。
3.编写程序
主站和从站的程序如图6-106和图6-107所示。
图6-106 主站程序
图6-107 从站程序
【关键点】在调用了Modbus指令库的指令后,还要对库存储区进行分配,这是非常重要的,否则即使编写程序没有语法错误,程序编译后也会显示至少几十个错误。分配库存储区的方法如下:先选中“程序块”,再单击鼠标右键,弹出快捷菜单,并单击“库存储区”,如图6-108所示。再在“库存储区”中填写Modbus指令所需要用到的存储区的起始地址,如图6-109所示。示例中Modbus指令所需要用到的存储区为VB0~VB283,这个区间的V存储区在后续编程是不能使用的。
图6-108 选定库存储区
图6-109 设定库存储区的范围
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。