上篇文章中我们通过一个例子学习了西门子S7-200 SMART中断程序的编写,本篇我们开始学习S7-200 SMART的Modbus RTU通信。通过集成RS485端口或可选通信板SM CM01的RS485/RS232端口,S7-200 SMART可以作为Modbus RTU主站或者从站同多个设备进行通信。
Modbus RTU通信端口
西门子S7-200 SMART作为Modbus RTU主站时,最多可以控制247个从站,通信板SB CM01与CPU集成端口功能是一样的。利用STEP7 Micro/WIN SMART指令库编程可以使Modbus RTU主站和从站通信更为简单。下面我们通过一个简单的实例来练习使用S7-200 SMART Modbus RTU通信。
Modbus RTU主站
需要完成如下通信任务:1、Modbus主站读取Modbus从站DI通道I0.0开始的16位的值;2、Modbus主站向Modbus从站前5个保持寄存器写入数据。本次试验所需的硬件有:两台S7-200 SMART CPU、一台以太网交换机CSM1277、一台编程计算机、一根PROFIBUS通信电缆、三根以太网电缆。硬件之间的连接如下图中所示:
硬件连接
本篇我们先来学习编写Modbus RTU从站程序。首先编写Modbus从站初始化程序,在Modbus从站项目中完成硬件组态和符号定义后,在指令树中展开指令树库文件夹下的Modbus RTU Slave文件夹,拖放Modbus从站初始化指令到主程序中,在文件菜单功能区单击存储器按钮打开库存储器分配对话框,输入该指令库存储器的起始地址,例如VB1000,也可以单击建议地址按钮,系统自动计算可用的存储器地址。注意该存储区不能再重复使用。
设置指令库存储器起始地址
使能端插入一个常开触点,输入首次扫描位地址SM0.1,模式参数输入1,启用Modbus协议,Modbus从站地址设置为3,波特率设置为9600,奇偶校验设置为偶校验,端口设置为使用CPU集成的RS485端口,延时参数在有线网络运行时设置为0,可访问的IQ点数设置为256,可访问的AI寄存器数设置为16,可访问的V存储区中的字保持寄存器数设置为100,V存储区中的保持寄存器起始地址设置为VB0,输入初始化完成标志位地址和错误代码输出地址。
Modbus从站初始化指令
编写Modbus从站通信程序,从指令树中拖放Modbus从站通信指令到程序中,使能端插入一个常开触点,输入始终接通位地址SM0.0,输入从站通信完成标志位地址,输入错误代码输出地址。为了直观的查看试验结果编写程序将主站写入从站的第一个保持寄存器的数据送入QW0,用CPU面板的输出点指示灯显示,单击保存按钮保存项目。
Modbus从站通信指令
在项目树中展开程序块的库文件夹,可以看到Modbus从站指令使用了三个子程序和两个中断程序,将程序编译下载到PLC,设置CPU为RUN工作模式,至此,Modbus从站的编程就完成了。
编译下载程序
本篇我们学习了S7-200 SMART的Modbus RTU通信如何编写从站程序,下篇文章我们继续学习编写Modbus RTU通信主站程序,欢迎持续关注!