SSI 同步串行接口:时序与格雷码转换

SSI(Synchronous Serial Interface,同步串行接口)是一种点对点、由主机提供时钟的单向数字接口:主机发出时钟串,传感器在时钟节拍上把绝对位置值逐位移出。它没有站地址、没有协议栈、没有网络组态,接线正确、时钟频率与数据位数设对,读数立刻出来。代价是一台传感器占一路接口,不能像总线那样多设备共享。SSI 的两个必配项是数据位数编码格式(格雷码或二进制),配错则读数完全错乱。本文对应产品 192 SSI 数字接口系列

SSI 同步串行接口:时序与格雷码转换
SSI 同步串行接口:时序与格雷码转换

SSI 时序:谁发时钟,数据何时有效

SSI 使用两对差分信号线(通常为 RS-422 电平):时钟对由主机发向传感器,数据对由传感器发回主机。一次完整读取的过程是:

  1. 空闲状态下时钟线保持高电平,传感器持续更新内部位置值。
  2. 主机发出第一个时钟下降沿,传感器锁存当前位置值——这一刻决定了读数对应的采样时刻。
  3. 随后每个时钟沿移出一位数据,从最高位(MSB)开始。
  4. 时钟串结束后,需要保持一段静默时间(monoflop 间隔),传感器据此判断本次传输结束并回到空闲状态,随后才能接受下一次读取。

三个工程要点由此而来:其一,锁存发生在时钟串起始,因此读数对应的是"发起读取的那一刻",而非时钟串结束时刻——高速运动场景下这个差别不可忽略。其二,两次读取之间必须留够静默时间,压得太紧会导致传感器无法复位、返回异常数据。其三时钟频率与电缆长度成反比,线越长可用时钟频率越低,长距离下硬用高时钟会出现随机位错。

格雷码与二进制:为什么要用格雷码

格雷码的特性是相邻两个数值之间只有一位发生变化。这在并行读取或异步采样场合至关重要:若采用普通二进制,从某个数跨到下一个数时可能有多位同时翻转,而各位的翻转时刻不可能绝对同步,采样恰好落在翻转瞬间就会读到一个既不是前值也不是后值的中间态,表现为位置值瞬间大幅跳变。格雷码把这种风险降到最低——最坏情况也只错一个最小增量。

维度格雷码二进制
相邻值变化位数恒为 1 位可能多位同时翻转
采样瞬态风险最坏错 1 个增量可能读到大幅错误中间态
能否直接参与运算不能,须先转二进制可直接使用
主机侧工作量需实现转换逻辑
适用场合高速运动、对跳变敏感的闭环主机不便做转换、速度较低

格雷码转二进制的标准算法:最高位直接相等(Bn-1 = Gn-1),其余各位由高到低递推,每一位等于"上一位的二进制结果"与"本位格雷码"异或(Bi = Bi+1 ⊕ Gi)。多数 PLC 有现成的格雷码转换指令,若没有,用一个自高位向低位的循环异或即可实现,逻辑很短。

关键提醒:主机侧设定的编码格式必须与传感器出厂配置一致。格雷码数据按二进制解析,读数会呈现无规律跳动但看似"有变化",很容易被误判为干扰问题,实际只是解码方式不对。

数据位数与量程的对应

SSI 的数据位数决定了可表示的位置计数范围。位数、分辨率档位与量程三者必须自洽:可表示的最大位移 = 2位数 × 分辨率步长,该值须覆盖实际量程。分辨率档位在 1 / 2 / 5 / 10 / 20 / 50 / 100 μm 中选取,档位越细、同样量程所需位数越多。

主机侧的时钟个数必须与传感器的数据位数严格一致:时钟发少了,低位读不到,读数呈台阶状粗糙;时钟发多了,超出部分读到的是填充位或错误标志位,通常表现为数值周期性异常。这是 SSI 调试中最常见的两类错误。分辨率与精度指标的关系见 分辨率、重复精度、非线性度的区别

SSI 与其他接口的定位差异

SSI 输出绝对位置,掉电重启无需回零,这一点与总线型一致,机制见 绝对位置 vs 增量位置。它与总线的根本差异在于组网能力:SSI 是点对点,每台传感器独占主机一路 SSI 接口;总线型可多节点共享一对线,并带诊断与参数配置能力。

因此选型判断很清晰:轴数少、主机有现成 SSI 模块、追求最简通信链路 → SSI轴数多、需要诊断与远程配置 → 总线型。接口大类的完整判断路径见 模拟量 vs 数字量全系怎么选,协议横向对比见 总线型全系对比,脉冲式接口的对照见 Start-Stop 接口:脉冲式位置读取怎么用

另需注意:SSI 采用 RS-422 差分传输,线缆两对信号都要用双绞屏蔽,屏蔽层按规范接地。与 CAN/Profibus 不同,SSI 是点对点链路,其匹配要求以主机与传感器手册为准,不能简单套用总线的终端电阻规则,两类物理层的区别见 终端电阻与总线长度:为什么必须 120 Ω。产品参数与接线定义见 192 SSI 数字接口详解

常见问题

Q:SSI 为什么常用格雷码而不是二进制?

格雷码相邻两个数值之间只有一位变化。二进制在跨值时可能多位同时翻转,各位翻转时刻无法绝对同步,采样恰好落在翻转瞬间会读到既非前值也非后值的中间态,造成位置大幅跳变;格雷码最坏也只错一个最小增量。

Q:格雷码怎么转成二进制?

最高位直接相等,其余各位由高到低递推:每一位的二进制结果等于上一位的二进制结果与本位格雷码异或。多数 PLC 有现成转换指令,没有的话用一个自高位向低位的循环异或即可实现。

Q:SSI 读数无规律跳动是干扰吗?

先排除解码方式。格雷码数据被按二进制解析时,读数会呈现无规律跳动但确实在变化,很容易被误判为干扰。主机侧设定的编码格式必须与传感器出厂配置一致。

Q:SSI 时钟个数发错会怎样?

时钟数必须与传感器数据位数严格一致。发少了低位读不到,读数呈台阶状粗糙;发多了超出部分读到填充位或标志位,表现为数值周期性异常。这是 SSI 调试最常见的两类错误。

Q:SSI 和总线型该怎么选?

SSI 是点对点,每台传感器独占主机一路接口,链路最简、无需组态;总线型可多节点共线并带诊断与远程参数配置。轴数少、主机有 SSI 模块时选 SSI;轴数多、需要诊断与配置能力时选总线型。

← 返回行业动态