explore
explore
Published on 2024-12-14 / 14 Visits
0
0

Modbus协议

modbus协议是工业控制中很常用的协议。

主要用于PLC和设备通信,Modbus协议可以使用串口的RS232、RS485和网口的TCP、UDP协议。

Modbus分为主机和从机,主机主要作为控制端,从机主要作为受控端。一个主机可以控制多个从机。

--- title: Modbus一主多从 --- classDiagram 主机 <|-- 从机1 主机 <|-- 从机2 主机 <|-- 从机3 主机 : 控制程序 class 从机1{ +站号1 +触点 +线圈 +寄存器 执行程序 } class 从机2{ +站号2 +触点 +线圈 +寄存器 执行程序 } class 从机3{ +站号3 +触点 +线圈 +寄存器 执行程序 }

modbus有触点、线圈等概念。

什么是触点?

触点就是类似开关的东西。所有触点代表开关量输入,用于信号输入

什么是线圈?

线圈就是类似继电器的东西。下图是一个继电器,通电线圈就闭合或者端口。通常用线圈代表开关量输出,用于控制输出。

什么是寄存器?

寄存器是用来存储数据的,比如存储模拟量、程序状态等,从机设备有一套自己的程序,可以读取寄存器的内容从而执行相应的操作,或者读取到某些数据后存放到寄存器中。

什么是站号,Modbus为了区分设备,需要提前给每个设备都设定好一个站号,从1-254,一个Modbus网络可以支持253个从机设备。主机没有站号。

Modbus通信流程

modbus的通信流程很简单,主机发出命令,从机接收到命令后处理并返回响应。

如果从机在设定时间段内未响应,则判断通信失败。

Modbus通信主要是Modbus-RTU,也就是串口模式。

Modbus网络需要保证主要的串口参数保持一致,也就是波特率、校验位、数据位、停止位都相同,不然无法正常通信。

在现场中,设备通信不上就需要测试这些参数是否一致。检查参数是否被复位了,站号是否正确等。

在现场环境中,由于存在电机启停,导致电磁干扰、电位差干扰、电源不稳定等,使通信经常出错,所以在工业中要使用抗干扰的芯片,稳定的电源,同时串口的波特率不要设置得太高。能用IO控制尽量不用通信,不然调试起来特别麻烦。

Modbus格式

Modbus是以数据帧的格式通信的,每帧最小间隔3.5个字节。

Modbus数据帧的第一字节是地址码,第二字节是功能码,中间是数据,最后两位是CRC校验码。

中间的数据格式由功能码决定。

返回时如果设备存在异常则功能码+80返回,返回的数据格式由功能码决定。

功能码功能参考Modbus手册


Comment