拉绳位移传感器RS485协议说明与报文调试

拉绳位移传感器RS485协议用的是 MODBUS-RTU,默认波特率 9600、无校验、数据位 8、停止位 1(也就是常说的 8N1),设备地址默认 02。帧结构很简短,只有读 AD 值、改设备地址、改波特率这几条命令,接 PLC 或触摸屏都不难,真正的门槛在 CRC 校验的两个字节上——顺序写反了,返回的就是错误码。

拉绳位移传感器RS485协议的基础:端口参数与接线
先把参数对齐,再谈发帧。上电默认值:波特率 9600、校验位 NONE、数据位 8、停止位 1、设备地址 02。这几项对不上,通讯一定不通,而且不通的表现和「线接错」看起来一模一样,很容易白折腾半天。建议调试前先确认三件事:串口助手的端口参数、转换器的驱动、笔记本上的端口号。
接线只有两根信号线加一根屏蔽。A 接 A、B 接 B,走屏蔽双绞线;屏蔽层在主机侧单点接地,两头都接等于把地环路引进来了。总线两端各挂一个 120Ω 终端电阻,短距离、低波特率(9600 这种)可以先不接,线长超过几十米或升到 57600 以上,建议补上。
读 AD 值:一条命令怎么发、返回值怎么算
读 AD 值是平时用得最多的命令,功能码 03。下面这条是地址为 02 时的完整发送帧:
发送:02 03 00 01 00 01 D5 F9
逐字节解释:地址码 02(跟设备地址走,改了地址这里也要改);功能码 03(固定);寄存器地址 00 01(固定);寄存器数量 00 01(固定);CRC16 校验 D5 F9(低位在前、高位在后,随前面的数据变化,不是固定值)。
返回:02 03 02 08 95 3B EB
逐字节解释:地址码 02;功能码 03;字节数 02(固定);AD 值 08 95——这里要换算,0x0895 就是十进制的 2197,而且数据位是高位在前、低位在后;CRC16 校验 3B EB(低位在前)。AD 值本身一直在变,取决于磁环或绳的位置。
改设备地址和改波特率
现场一台 PLC 挂多支表,就必须把地址错开,默认全是 02 会撞车。改地址用功能码 06:
发送:02 06 00 01 00 05 18 3A
解释:地址码 02(当前地址);功能码 06(固定);寄存器地址 00 01(固定);设备地址 00 05(这条命令的作用就是把地址改成 5);CRC16 18 3A。
返回:05 06 00 01 21 29
返回帧里的地址码已经变成 05,说明写进去了。看到这个,就说明后面必须用新地址 05 去通讯,还拿 02 发命令当然没反应。
改波特率用功能码 10,一次写两个寄存器。以改成 57600 为例:
发送:02 10 00 01 00 02 04 00 00 E1 00 75 77
解释:地址码 02;功能码 10(固定);寄存器地址 00 01(固定);寄存器数量 00 02(固定);字节数 04(固定);寄存器值 00 00 E1 00(波特率设定值,随波特率不同而改);CRC16 75 77。
返回:02 10 00 01 00 02 10 3B
这里有个容易记混的点:波特率的两个寄存器值 00 00 E1 00 是高位在前、低位在后,而 CRC16 校验是低位在前、高位在后。同一帧里两种顺序,写反了就返回错误码。具体波特率对应哪一组寄存器值,以厂家样本或调试软件给出的值为准。
报文速查表
| 操作 | 发送帧(地址 02) | 典型返回 | 说明 |
|---|---|---|---|
| 读 AD 值 | 02 03 00 01 00 01 D5 F9 | 02 03 02 08 95 3B EB | AD 值 08 95,即十进制 2197,高位在前 |
| 改设备地址(改为 5) | 02 06 00 01 00 05 18 3A | 05 06 00 01 21 29 | 返回帧地址码变成 05,之后要用新地址通讯 |
| 改波特率(改为 57600) | 02 10 00 01 00 02 04 00 00 E1 00 75 77 | 02 10 00 01 00 02 10 3B | 寄存器值 00 00 E1 00 为波特率设定值,高位在前 |
| 读 AD 值(ASCII 方式) | 02 04 00 01 00 01 60 39 | ~+AD(4 位)+0x0d+0x0a | 串口助手直接显示整数,不用换算 |
| 校验错误 | —— | 02 80 55 55 55 9B 7F | 发送帧的 CRC 不对,命令没被执行 |
| 功能码不支持 | —— | 02 81 FF FF FF 44 7C | 该功能码模块里没有做 |
两类错误返回怎么读
先看错误码。返回 02 80 55 55 55 9B 7F,错误码是 80,意思是这条命令的校验码不对,命令没有被执行。返回 02 81 FF FF FF 44 7C,错误码是 81,意思是这个功能码传感器模块不支持——本模块相对简单,并不是所有 MODBUS 功能码都做在里面。
看到 80,按下面这个顺序查,基本能定位:
- 校验码计算错误——自己算 CRC 的时候把多项式或初值搞错了。
- 校验码高低字节顺序错误——最常见的一条,CRC 是低位在前。
- USB 转 485 转换器问题——换一个转换器或换台电脑试试,有的便宜转换器时序不稳。
- 通讯线问题——尽量用带屏蔽的双绞线,A、B 别接反,也别和动力线一起走。
- 传感器模块损坏——前面都排除了,再怀疑硬件。
我们碰到过客户一直收到 02 80 55 55 55 9B 7F,一口咬定是表坏了。让他把发送帧贴出来一看,CRC 的两个字节写反了——他把 CRC 当成高位在前去填的。改回来立刻正常。这类问题占校验错误的大头,不是硬件问题。
ASCII 方式读 AD 值
单支表调试的时候,用 ASCII 方式最省事。发送 02 04 00 01 00 01 60 39,功能码 04,其余字段和读 AD 值一样,CRC 为 60 39。返回格式是:起始符 ~,跟着 4 位 AD 值(ASCII 码),最后是两位结束符 0x0d、0x0a。
好处是串口助手上直接就是整数,不用做十六进制转换,手边没有 PLC 也能看到位置变化。缺点是只有单传感器调试用得上,多表挂在一条总线上,返回值不像二进制帧那样带地址,不好区分是谁在回答。
通讯不稳,先查这四处
还有一种报障是「偶尔丢帧、偶尔读到 0」,不是完全不通。这种多半不在协议上,而在物理层。按经验,先查这四处:线是不是屏蔽双绞线、屏蔽层是不是只在一头接地、信号线有没有跟变频器或伺服的动力线同槽走、总线两端有没有终端电阻。
我们碰到过一条 30 多米的总线,客户用普通两芯线走线槽,还和变频器电缆绑在一起,平时能通,一开变频器就偶发丢帧。换成屏蔽双绞线、屏蔽层改到 PLC 侧单点接地、信号线单独走槽之后,误码就没了。协议没改一个字,问题全在布线。
常见问题
问:默认参数是多少?
答:波特率 9600、校验位 NONE、数据位 8、停止位 1,设备地址 02。
问:改完地址就通讯不上了怎么办?
答:这是正常的,地址已经变成新的了。用新地址重新发命令即可;如果记不清改成多少,需要按厂家的恢复方式处理。
问:返回 02 80 开头是什么意思?
答:这条命令的 CRC 校验不对,先检查自己算的 CRC 值和高低字节顺序,再查转换器和通讯线。
问:一条总线上能挂几支传感器?
答:取决于主机端口驱动能力和总线长度,每支表的地址必须错开,不能都是 02。地址规划和终端电阻要在接线阶段就定好。
问:AD 值和位移怎么对应?
答:AD 值是原始数字量,换算成位移要用标定得到的零点 AD 和满量程 AD 做线性换算,公式和量程对应关系以厂家样本为准,不同量程不一样。
拉绳位移传感器RS485协议的接线、发帧与调试问题,易测电气位移传感器工程师欢迎您的咨询。
推荐文章
- CANopen工作原理详细讲解:对象字典、SDO与PDO[2026-10-19]
- LVDT位移传感器的寿命一般多久:三个会先坏的地方[2026-10-19]
- 磁致伸缩位移传感器原理:扭转波是怎么被听出来的[2026-09-29]
- 德敏哲CANopen位移传感器通讯配置范例详解[2026-09-24]
- 注塑机顶针电子尺震动问题与现场加固办法[2026-09-24]

