Modbus TCP/RTU 主从站教程及问题合集

阔奥智能

Modbus TCP/RTU 主从站教程及问题合集

Modbus是经典的工业总线,本文提供从底层分析的报文和codesys的设置。

1、简介:

Modbus是一种经典的工业总线,目前主流的有两种模式:TCP和RTU。
RTU基于串口通讯,常见的载体是RS485,它是差分信号,通过测量A、B之间的电压,超过2V表示1,低于-2V表示0。
TCP将RTU放在TCP这个载体上,报文和RTU有所不同。
目前常见的Modbus应用有以下几类:
– 连接人机界面,常用TCP
– 连接驱动器、变频器,常用RTU
– 连接IO模块,推荐TCP但RTU也有用

还有一种Modbus over TCP,即TCP转RTU方案,我们之前评测的艾莫迅ETH-MODBUS-IO8R-A就是这种方案。

2、报文简析:

我们可以用逻辑分析仪、示波器、串口调试助手和网络抓包工具抓到报文,需注意主站、从站、抓包的波特率、校验、数据位、停止位的设置需一致。
RTU报文内容一般如下:

Tx:   01       03       00 00       00 01      84 0A
发送:设备地址  功能码    起始地址     长度       CRC校验

Rx:   01       03       02          0B DD      7F 2D
接收:设备地址  功能码    长度        数据内容    CRC校验

常见的功能号有:

0x01 Read Coils 读线圈
0x02 Read Discrete Inputs 读离散输入
0x03 Read Holding Registers 读保持寄存器
0x04 Read Input Registers 读输入寄存器
0x05 Write Single Coil 写单个线圈
0x06 Write Single Register 写单个寄存器
0x0F Write Multiple Coils 写多个线圈
0x10 Write Multiple Registers 写多个寄存器
0x17 Read/Write Multiple Registers 读/写多个寄存器

Modbus TCP基于TCP通讯,由于TCP是基于IP地址的可靠通信,所以不需要CRC校验和设备地址。但加入了事务标志以便于多主站通讯。报文一般如下:

Tx:   00 01       00 00        00 06         ff           01      00 00    00 08
发送:事务标志     固定格式      数据长度      设备地址      功能码  起始地址  长度
Rx:   00 01       00 00        00 0b         ff           01      08       00 00 00 00 00 00 00 00
接收:事务标志     固定格式      剩余包长度    设备地址      功能码  数据长度  数据内容

3、CoDeSys的Modbus设置

RTU是基于Serial的,我们需要先在设备上添加Modbus COM设备,然后在其下添加:
Modbus Serial Device:PLC做从站,由组态屏或其他主站去读写数据。
Modbus Master:PLC做主站,之后还需要在其下添加Modbus Slave组成完整拓扑。

TCP是基于以太网的,我们需要先在设备上添加Ethernet设备,然后在其下添加:
ModbusTCP Slave Device:PLC做从站,由组态屏或其他主站去读写数据。
Modbus TCP Master:PLC做主站,之后还需要在其下添加Modbus TCP Slave组成完整拓扑。

4、总结

在新版的CoDeSys中删除了PLC做TCP从站的站号设定,一律默认255(0xFF)不可修改。

No Comments

Add your comment