< 返回

Modbus协议:RTU、ASCII与TCP通信基础

区分Modbus应用协议与RS-485电气接口,理解RTU、ASCII、TCP报文、串行地址及请求应答机制,并整理流体控制设备联调要点。

一、Modbus是什么?

Modbus是一种应用层消息协议,可用于控制器与设备之间的数据交换。RS-485、RS-232是电气接口,Modbus RTU、ASCII和TCP则涉及相应的报文与传输方式。设备具有RS-485接口,并不意味着它一定支持Modbus。

在流体控制系统中,可用它读取状态或传递控制参数,但具体设备是否支持、支持哪些功能与寄存器,需要以该型号控制器的通信手册为准。本文不构成对全部FOREACH产品接口能力的承诺。

二、RTU、ASCII和TCP如何区分?

三者不能仅按接口插头判断。串行通信需要匹配模式、波特率及帧格式;TCP通信需要匹配网络连接与设备端服务设置。

方式报文特点核对重点
Modbus RTU地址 + 功能码 + 数据 + CRC串口参数、设备地址、帧间隔
Modbus ASCIIASCII编码,使用LRC校验及相应起止符串口参数、编码方式、LRC
Modbus TCPMBAP头 + 功能码 + 数据,不附加RTU的CRCIP、端口、事务标识、Unit Identifier

三、串行地址与请求应答

Modbus串行单播从站地址为1—247;0用于广播,248—255保留。单播通常由主站发起请求、对应从站应答;广播写请求不返回应答。地址字段有8位,并不代表0—255都可配置为普通从站地址。

上述规则用于串行链路。Modbus TCP的MBAP头含Unit Identifier,涉及网关转发时还需按设备实现解释,不能直接把串行地址规则套到所有TCP配置。

四、功能码与寄存器表需要一起看

功能码说明读取或写入哪类数据,数据区包含地址、数量或值。即使两台设备都支持Modbus,也不代表它们使用相同的寄存器定义。

联调前应核对手册中的寄存器编号与报文起始地址是否存在偏移,确认数据宽度、有符号或无符号、比例系数、单位以及多寄存器数据的字序。速度值、位置值和液量值不能互相代用。

Modbus串行单播请求应答报文与常用功能码表
串行单播请求应答及常用功能码示意图;广播不返回应答,TCP报文格式见上表。

五、流体控制设备联调步骤

先确认接线与供电,再按手册统一通信设置。开始时读取一个已知状态,核对响应中的设备地址、功能码与数据含义,然后再测试允许的参数写入和运动指令。

把通信成功、指令被接受、运动完成和液量达标分别验证。收到写入应答不等于泵已经完成动作;超时后也不能直接重复执行加液命令,应先查询状态,避免重复加液。

记录请求与响应、异常码和超时条件,结合限位、复位、阀门状态与运行时序定位问题。具体命令、地址和计数单位以对应设备通信手册为准。

参考资料

需要进一步确认产品选型或应用条件?

您可以提交具体介质、压力、管路尺寸、应用场景或图纸信息,由恒永达协助进行产品匹配与技术确认。