博途(TIA Portal)是西门子用于编程、配置和调试其工业自动化系统的软件平台。在博途中,使用FB(功能块)可以实现Modbus RTU轮询功能。以下是一个简单的例子,展示如何在博途中使用FB来实现Modbus RTU轮询。
### 1. 创建FB
1. 打开博途软件,创建一个新的项目。
2. 在项目树中,右键点击“功能块”,选择“创建功能块”。
3. 输入FB的名称,例如“ModbusRTUPoll”,然后点击“确定”。
### 2. 添加FB变量
1. 在FB的变量视图中,添加以下变量:
- `sDeviceAddress`:INT,用于存储Modbus设备的地址。
- `sRegisterAddress`:INT,用于存储寄存器的起始地址。
- `sRegisterCount`:INT,用于存储要读取的寄存器数量。
- `bDataAvailable`:BOOL,用于指示数据是否可用。
- `bError`:BOOL,用于指示是否发生错误。
- `iErrorCode`:INT,用于存储错误代码。
### 3. 编写FB程序
1. 在FB的程序视图中,编写以下代码:
```pascal
VAR
sDeviceAddress : INT := 1; // Modbus设备地址
sRegisterAddress : INT := 0;
相关内容:
键盘滴答,码上不同。
工作当中,我们经常使用Modbus RTU轮询的功能去读写大量的从站设备数据,原来每次使用时都是临时去写,显得有些麻烦。本次案例分享一种基于【时间触发原理】的轮询功能块,供大家参考,如有不足之处,欢迎评论区留言指正。
软件:博途TIA V18
硬件:S7-1500、S7-1200系列PLC均可
编程语言:西门子SCL(方便移植使用)
FB功能块的使用说明:
使用范围:Modbus RTU 从站设备的数据读写;
控制功能说明:
1)轮询功能块可启用/停用;
2)轮询时间间隔可以自定义设置,建议时常1-5s;
3)本次功能块的轮询触发输出脉冲数量为5个,即可以轮询读写5个从站设备的数据,大家可以参考本程序进行扩展,编写符合自己使用数量的功能块;
特别说明:本功能的轮询是基于时间触发的原理,也就是无论前一个从站设备是否掉线,也不会影响下一个从站设备的读写。对于从站设备掉线的功能大家也需编程处理。
功能演示Gif动画(轮询间隔5s):

功能演示动画,轮询间隔5s
1、程序调用截图:

程序调用截图
2、具体程序接口定义截图如下:

接口定义
3、程序内容截图概览

程序内容截图1

程序内容截图2
总结,以此为例,希望对大家有所帮助,也希望大家可以多多分享自己的心得体会,互帮互助,共同进步!如有不足之处,欢迎评论区留言指正。