Modbus RTU协议是工业自动化领域广泛应用的串行通信协议,用于实现主从设备间的数据交换。该协议基于RS-485硬件接口,采用半双工工作方式,通信格式通常为8位数据位、1位停止位,无校验或奇偶校验,波特率可在1200至115200 bps范围内设置,默认常用9600 bps。
协议的核心是功能码,定义了主站对从站寄存器的操作。常用功能码包括:0x03(读取保持寄存器)、0x04(读取输入寄存器)、0x06(预置单个寄存器)和0x10(预置多个寄存器)。通信过程遵循请求-应答机制。主站发送的请求帧包含从站地址、功能码、寄存器起始地址、数据数量以及CRC16校验码。从站正确响应时,返回帧包含地址、功能码、数据字节长度、实际数据及CRC校验码。若请求非法(如功能码不支持、寄存器地址无效或数据值超范围),从站会返回异常应答帧,其功能码为原功能码加0x80,并附带特定的异常代码(如0x01表示非法功能,0x02表示非法数据地址,0x03表示非法数据值)。
在数据解析时需注意格式。仪表数据可能以整数或浮点数形式存储。整数数据常进行缩放处理(例如,实际值=寄存器值/缩放因子)。浮点数则普遍采用IEEE 754标准的32位格式传输,占用两个连续的16位寄存器。进行多寄存器读写时,必须确保数据顺序(字节序)与设备规定一致(例如大端模式或特定的浮点数字节顺序)。
对于具体的产品,如投入式液位计、压力变送器、电导率仪、电磁流量计等,其支持的Modbus寄存器地址、数据含义及缩放比例均在各自的产品说明书中详细定义。例如,某液位计可能使用地址0x0004存储测量输出值,而某电导率仪可能将实际电导率值放大100倍后存储在地址0x0000。在实施通信前,务必查阅对应设备的技术手册以获取准确的通信参数与数据映射表。