介绍
在工业通信中,Modbus RTU(远程终端单元)是最通用和最被接受的协议之一,因为许多自动化系统都具有用于通信的 Modbus-RTU 接口。Modbus RTU 与 TCP 相比具有一些优势,其中一个优势是在长距离通信领域。RTU 的传输距离远远超过 1000 米,而 TCP 在不使用中继器的情况下传输距离为 100 米。
在本教程中,我们将学习如何在西门子 TIA 门户中将 Modbus RTU 配置为主从。
准备工作
为了按照本教程进行作,您将需要:
在 TIA 中创建新项目
启动 TIA 并添加新设备。我们将添加一个 S7-1200 PLC。Modbus RTU 无法使用 PLCSIM 进行仿真,因为 MODBUS RTU 是串行设备。
添加新的通信设备
为了能够使用 Modbus RTU,将添加支持 Modbus RTU 的新设备。本教程中使用设备 CB 1241 (RS 485)。该设备能够通过串行 RS 485 网络进行通信。
导航到项目树上的设备配置,然后在右侧的目录下选择点对点并选择 RTU 设备。
CB 1241 模块接线
配置 Modbus 通讯块
PORT- 通信端口的 ID
BAUD- 波特率选择:300、600、1200、2400、4800、9600、19200、38400、57600、76800、115200。所有其他值均无效。
PARITY- 奇偶校验选择:0 – 无,1 – 奇数,2 – 偶数
MB_DB - 对“MB_MASTER”或“MB_SLAVE”指令的实例数据块的引用。在程序中插入“MB_SLAVE”或“MB_MASTER”后,数据库标识符将出现在MB_DB框连接的下拉列表中。
DONE-指令执行完成,没有错误。
ERRIR- 错误:0 – 未检测到错误。1 – 表示检测到错误。错误代码在 STATUS 参数中输出。
STATUS- 端口配置错误代码
创建一个数据块来保存 Modbus 数据。
配置 Modbus 从站
MB_ADDR 是从设备的从机 ID 号,我们使用了 5。MB_HOLD 是容纳 Modbus 数据的数据块。
接下来在Modbus数据数据库中输入一些随机数据。
配置 Modbus 轮询
如果一切都准确完成,您将看到从 TIA 门户读取的数据。
要查看浮点数据,则显示两个实数寄存器,例如,显示 16779 和 13107 的寄存器,然后右键单击以格式化并选择 Float AB CD。这将更改格式以显示为 实数数据类型 而不是整数。
将数据从 Modbus Poll 写入 TIA 门户
配置 Modbus 主站
参数描述如下
MB_ADDR - Modbus RTU 站地址,即从站 ID。
模式- 模式选择:指定请求类型:读取、写入或诊断。0 表示读取数据,1 表示写入数据。
DATA_ADDR - 从站中的起始地址:这指定了 Modbus 从站中要访问的数据的起始地址。
DATA_LEN - 指定在此请求中要访问的位数或字数。此参数规定了您打算读取或写入的寄存器数。
DATA_PTR - 指向要写入或读取数据的 CPU 的 DB 或位内存地址。用于保存数据的数据块放置在这里。
如下图所示配置 MB-Master 模块并下载到 PLC 中。
我们使用时钟信号作为请求输入,以便它轮询每个 5Hz 扫描周期的值。
40001 指示我们从第一个保留寄存器读取。
配置 Modbus 从站
启动 Modbus 从站并设置从站定义。该功能为Holding寄存器,从ID为8。
对于连接设置,选择串口和 COM 设备,然后单击“确定”。它与 Modbus 轮询连接设置相同。
将数据从 TIA Portal 写入 Modbus Slave
结论
Modbus RTU 通信是最古老的 Modbus 通信类型之一,至今仍被广泛使用,主要用于 SCADA。大多数工业设备和设备都使用 Modbus RTU 作为其通信协议的一部分,因为它在最恶劣的环境和情况下很有帮助。因此,作为自动化/控制专家,对它有深入的了解将是有益的。