Modbus是工业自动化领域最广泛使用的串行通信协议之一,由Modicon(现施耐德电气)于1979年发布,至今仍是PLC、仪表、变频器等设备互联的首选协议。本文从协议基础到实操测试,系统梳理Modbus在PLC中的应用。
一、三种传输模式
Modbus RTU采用二进制编码,每个字节包含两个十六进制字符,报文以3.5个字符空闲间隔区分帧边界,效率高、应用最广。Modbus ASCII使用可读ASCII字符传输,以冒号(:)开头、CRLF结尾,易于调试但效率低,现已较少使用。Modbus TCP将Modbus报文封装在TCP/IP帧中,使用端口502,去掉RTU的CRC校验(改由TCP校验保证),可跨越以太网实现远程通讯,是目前新建系统的主流选择。
二、帧结构与常用功能码
标准Modbus帧由地址码(1字节)、功能码(1字节)、数据区(N字节)、校验码(2字节CRC)组成。常用功能码包括:01(读线圈)、02(读离散输入)、03(读保持寄存器,最常用)、04(读输入寄存器)、05(写单线圈)、06(写单寄存器)、15(写多线圈)、16(写多寄存器)。其中03和06是PLC通信中使用频率最高的两条指令。
三、PLC作Modbus主站配置
以西门子S7-1200为例,使用MB_MASTER指令块即可实现Modbus RTU主站功能。在TIA Portal中配置通信模块(如CM1241 RS485),设置波特率(通常9600或19200)、数据位8、校验方式(偶校验/无校验)、停止位1。在程序中调用MB_MASTER,指定从站地址、功能码、起始地址和数据长度。三菱FX系列需加装FX3U-485ADP-MB适配器,使用ADPRW指令进行Modbus读写。
四、PLC作Modbus从站配置
S7-1200使用MB_SLAVE指令,将在PLC的DB块中开辟一片区域映射为Modbus寄存器,供主站读写。需配置从站地址(1-247)和映射的保持寄存器起始地址。三菱FX系列通过参数设置将PLC内部寄存器映射为Modbus地址,例如D0-D7999映射为保持寄存器40001-48000。
五、接线与参数设置
RS-485两线制接线最为常见:主站A(+)接从站A(+),主站B(-)接从站B(-),终端电阻120Ω并联在总线两端。多从站时采用菊花链拓扑,最多支持32个节点。关键参数需主从一致:波特率、数据位(8)、停止位(1)、校验方式。Modbus TCP则使用标准以太网接线,PLC的PROFINET口通常可复用为Modbus TCP通信。
六、通讯测试步骤
调试时推荐使用Modbus Poll/Modbus Slave或免费工具ModScan进行测试。步骤:先用USB转RS485连接电脑与PLC,确认物理连接正常(收发指示灯闪烁);打开ModScan设置与PLC一致的通讯参数;发送03功能码读取指定寄存器值;若超时则检查接线、从站地址和波特率匹配;若返回异常码(如02非法数据地址),核对寄存器地址映射是否正确。正常通讯后,再逐步增加主站程序逻辑。
结语
Modbus协议简洁高效,是PLC通信的基石。掌握RTU/TCP两种模式、熟悉常用功能码、懂得主从站配置和串口调试方法,是每位自动化工程师的必备技能。建议在实际项目中从简单的主从一对一拓扑起步,逐步扩展到多从站和TCP网络,积累实战经验。
|