做工业设备和嵌入式开发,这三种场景大概都遇过:产线上老设备只有 RS485、跑 Modbus RTU,新采集系统只认 TTL 串口,接上线就是不动,波形有、数据没有;板子上 I2C 传感器读数正常,客户却要求接到几百米外的现场总线;伺服编码器走多摩川协议,手里只有串口助手和示波器,抓上来一串比特,不知道哪一位是控制字段。
三件事看似无关,卡住的地方是同一个:有信号,但没有能读懂这一层的通路。
一、物理层
"串口"至少有 TTL/CMOS、RS-232、RS-485 三种电平,逻辑含义一样,电气特性完全不同。TTL 直接怼到 RS-485 的 A/B 上,轻则不通信,重则烧收发器。I2C 靠上拉和开漏工作,总线电容直接限制距离,天生不是现场总线。而 RS-485 只是物理层——帧头、应答、CRC 都取决于跑在它上面的协议,比如 Modbus RTU。
还有一个几乎没人主动提的:共地和电位差。两台设备各自供电,地电位可能差几伏到几十伏,这个差值会顺着 GND 走一条你没设计过的回路。轻则偶发错帧、误码率飙升,重则调试器和对面板子一起报废。现场"换台电脑就好了"的玄学,一半来自这里。
二、协议层
以多摩川为例。它是伺服与绝对值编码器常用的串行接口,半双工请求—应答:主机发一帧带控制字段(CF)的请求,编码器回一帧带状态字段(SF)、位置数据和 CRC-8 的响应,速率常在 2.5 Mbit/s 量级。问题在于,这串比特不会告诉你哪几位是 CF。
传统两条路:用厂商专用工具,能用但封闭,换品牌就换工具,而且只给结果不给过程;用示波器抓波形、手工按位切、手工算 CRC,一次对接大半天,换个人还得重来。Modbus 那边同样,CRC-16 高低字节顺序搞反,帧会被从站直接丢弃——这是最经典的一行坑。
三、工具链
一次完整对接要万用表、示波器、逻辑分析仪、串口助手、解析软件轮番上,每换一个环节换一套工具、重接一次线。更麻烦的是中间这一层没有设备可插:你想验证 A 协议的设备能否被 B 协议的系统认出来,手上却只有两端。
于是对接变成"猜":改一个参数试一次,不行再改一个。这本质上是缺少观测手段。
解法:把转换和调试放进同一台设备
解法也就清楚了——一台能同时做到物理层隔离、协议层双向转换、并把过程暴露给工程师的中间设备。
我们把它做成了 BT01 多协议调试器:UART、IIC(I2C)、RS485 三种总线全双向互转,内置工业级电气隔离,CH1/CH2 双通道切换,3.3V/5.0V 双电平。V2.0 在 Modbus 之外支持多摩川协议,可直接用于伺服与编码器调试。UART、RS485 速率最高 2.0 MHz(V2.0 为 2.5 MHz),I2C 支持 100k / 400k / 1 MHz,5 VDC 供电,106.8 × 58.2 × 25 mm,支持固件升级。V1.0(Modbus)¥449,V2.0(Modbus + 多摩川)¥499。
强调"双向"是因为单向转换只能搬运数据,做不了应答回传——而应答才是判断"对面到底听懂了没有"的唯一依据。
几条能省时间的经验
先量电平,再谈协议——绝大多数"协议不通"第一次测量就该落在电平上;RS485 一定先单点测试,一个节点接错会把整条总线拉死;CRC 的字节序写下来贴在工位;遇到偶发错帧先怀疑地环路,尤其"一启动就错、马达一转就错"这种跟动作相关的现象;专用协议先解决观测问题,再做业务逻辑,顺序别反;每次对接都把帧记录下来,下次同样的故障,这份记录比任何文档都快。 |
|