Modbus RTU 协议使用汇总

时间:2023-03-09 08:54:09
Modbus RTU 协议使用汇总

原创地址:https://blog.****.net/u012166958/article/details/64920144

标准的Modbus 口是使用RS-232C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem 组网。控制器通信使用主—从技术,即仅设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据做出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus 协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。

从设备回应消息也由Modbus 协议构成,包括确认要行动的域、任何要返回的数据、和错误检测域。如果在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去。在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。

在消息位,Modbus 协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果控制器发送消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到消息,它将建立一从设备回应格式并返回给发送的控制器。

主设备查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03 是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。

从设备回应
如果从设备产生正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:像寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。

每个MODBUS 帧都包括 地址域  功能域  数据域  错误检测域。

MODBUS  RTU 的工作方式

Modbus RTU 协议使用汇总

帧定界:在MODBUS RTU 方式下,每两个字符之间发送或者接收的时间间隔不能超过1.5 倍字符传输时间。如果两个字符时间间隔超过了3.5 倍字符传输时间,就认为一帧数据已经接收完成,新的一帧数据传输开始。

Modbus RTU 协议使用汇总

MODBUS RTU 协议

Modbus RTU 协议使用汇总

常用的功能码

0x01 读取输出继电器的状态

Modbus RTU 协议使用汇总

Modbus RTU 协议使用汇总

0x02 读取输入继电器的状态

Modbus RTU 协议使用汇总

0x03 读多个寄存器

Modbus RTU 协议使用汇总

0x05 写单个输出继电器的状态

Modbus RTU 协议使用汇总

0x0F 写多个输出继电器的状态

Modbus RTU 协议使用汇总

0x10 写多个寄存器

Modbus RTU 协议使用汇总