以下文章来源于工控老炮儿,作者OldGangster介绍
本文介绍在 TIA Portal V21 中基于 S7-1200 G2 使用 SCL 语言设计一个 Modbus RTU 轮询程序,完成对 2 个从站的读数据和对 1 个从站写数据的轮询通信任务,用 MThings 软件模拟 3 个从站并进行测试。
本例中 Modbus RTU 轮询程序采用状态机的形式设计,尽可能使用标准化的方式,便于移植和扩展。文末有项目分享链接,有需要的朋友自行下载。
硬件设计
在 TIA Portal V21 中选择 G2 CPU 1214C。

设置 IP 地址:192.168.0.1。
添加点到点通信模块 CM 1214 并设置端口参数。

设置 CM 1214 的操作模式,选择半双工 2 线制模式。
程序设计
定义一个 PLC 数据类型,用作标准的从站参数模板,包括从站地址、读写模式、数据开始地址、数据长度、通信状态字和数据缓冲区。

添加一个 FB MbMasterPoll,定义接口变量。

编写程序代码。

简要说明:
通信初始化,即端口配置,配置成功后,启动从站轮询。

状态机第 0 步,等待轮询启动,轮询启动后,即进入状态机第 10 步,通信任务启动步。

状态机第 10 步,启动当前从站的通信任务,并立即进入状态机第 20 步,等待通信任务处理步。

状态机第 20 步,等待通信任务处理,当前任务完成后(包括错误),则进入状态机第 30 步,即切换至下一个从站任务。

状态机第 30 步,更新从站地址,完成通信任务切换,即轮询各个从站。

设计通信参数数据块
添加一个 DB GdbMbMater,添加一个含有 3 个元素的数组,数据类型为以上步骤中设计的 Modbus 通信用的 PLC 数据类型,3 个元素分别代表 3 个从站。

分别读写 3 个从站的保持型寄存器,也可以配置为其它,数据长度为 2 个字,1 号和 2 号从站设置为读数据,3 号从站设置为写数据,
函数块调用
在主程序 OB1 Main 中调用以上函数快,并配置参数。

下载 PLC 程序
编译并下载程序到 PLC。
配置模拟从站
使用 MThings 软件进行从站仿真。
配置串口通道。

添加三个从站设备。

为 1 号从站添加数据条目,2 个字。

为 2 号从站添加数据条目,2 个字。

为 3 号从站添加数据条目,2 个字。

通信测试
在 TIA Portal V21 中打开通信数据块,在线并监视。
从 1 号从站读数据。

从 2 号从站读数据。

写数据到 3 号从站,从站数据见以上步骤中的截图。

项目下载
TIA Portal V21 下载链接:
https://pan.quark.cn/s/5922b391ffbc
Mobus Master TIA Portal 项目下载链接:
https://pan.quark.cn/s/975b68648ad6
Modbus Slave Mthings 项目下载链接:
https://pan.quark.cn/s/15961af6914e