网站地图
原理与结构
原理与结构
您的位置: 首页 >> 原理与结构 >> 拉绳位移传感器RS485协议说明与报文调试

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

发布时间:2026-08-27
拉绳位移传感器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 以上,建议补上。

拉绳位移 传感器 A / B 端子 PLC / 上位机 RS485 端口 A(双绞之一) B(双绞之二) 屏蔽层:单点接地,别两头接 接地端 两端 120Ω 终端电阻(长线或高波特率时接)
图:A、B 走双绞,屏蔽层只在主机侧单点接地;总线两端各一个 120Ω 终端电阻

读 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 值本身一直在变,取决于磁环或绳的位置。

现场判据:AD 值 = 高位字节 × 256 + 低位字节。0x08 乘 256 得 2048,加 0x95(149)正好 2197。拿到返回值先做这一步换算,别急着拿原始十六进制去对量程。

改设备地址和改波特率

现场一台 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 F902 03 02 08 95 3B EBAD 值 08 95,即十进制 2197,高位在前
改设备地址(改为 5)02 06 00 01 00 05 18 3A05 06 00 01 21 29返回帧地址码变成 05,之后要用新地址通讯
改波特率(改为 57600)02 10 00 01 00 02 04 00 00 E1 00 75 7702 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 也能看到位置变化。缺点是只有单传感器调试用得上,多表挂在一条总线上,返回值不像二进制帧那样带地址,不好区分是谁在回答。

现场经验:改参数前先确保能稳定读到 AD 值,把读这条打通,再动地址和波特率。顺序反了,一旦参数改错就同时失去「读」和「改」两条路,只能返工重来。

通讯不稳,先查这四处

还有一种报障是「偶尔丢帧、偶尔读到 0」,不是完全不通。这种多半不在协议上,而在物理层。按经验,先查这四处:线是不是屏蔽双绞线、屏蔽层是不是只在一头接地、信号线有没有跟变频器或伺服的动力线同槽走、总线两端有没有终端电阻。

我们碰到过一条 30 多米的总线,客户用普通两芯线走线槽,还和变频器电缆绑在一起,平时能通,一开变频器就偶发丢帧。换成屏蔽双绞线、屏蔽层改到 PLC 侧单点接地、信号线单独走槽之后,误码就没了。协议没改一个字,问题全在布线。

常见问题

问:默认参数是多少?
答:波特率 9600、校验位 NONE、数据位 8、停止位 1,设备地址 02。

问:改完地址就通讯不上了怎么办?
答:这是正常的,地址已经变成新的了。用新地址重新发命令即可;如果记不清改成多少,需要按厂家的恢复方式处理。

问:返回 02 80 开头是什么意思?
答:这条命令的 CRC 校验不对,先检查自己算的 CRC 值和高低字节顺序,再查转换器和通讯线。

问:一条总线上能挂几支传感器?
答:取决于主机端口驱动能力和总线长度,每支表的地址必须错开,不能都是 02。地址规划和终端电阻要在接线阶段就定好。

问:AD 值和位移怎么对应?
答:AD 值是原始数字量,换算成位移要用标定得到的零点 AD 和满量程 AD 做线性换算,公式和量程对应关系以厂家样本为准,不同量程不一样。

拉绳位移传感器RS485协议的接线、发帧与调试问题,易测电气位移传感器工程师欢迎您的咨询。

版权所有:深圳市易测电气有限公司 备案号:粤ICP备19052563号 网安粤公网安备 44030602003587号 技术支持:星海互联