4. 安全编码器设计
安全编码器并不是“普通编码器加一个报警输出”,它的核心目标是在位置、速度或角度反馈链路中,让任何单点故障、信号篡改或传输干扰都无法伪装成合法测量值。设计时通常从编码器结构入手,再叠加安全约束,最后用抗攻击编码策略和典型设计模式把安全完整性落实到电路、协议和诊断逻辑中。
一、编码器结构:从单通道到双通道冗余
安全编码器的物理结构决定了它能覆盖哪些故障。常见结构包括:
- 单通道增量式:仅 A/B/Z 三路信号,成本低,但无法区分“轴真的转动”与“信号线被短接/注入”。
- 双通道独立传感:两套敏感元件、两套供电、两套输出,通道间保持电气隔离,可检测共因失效以外的单点故障。
- 多轨绝对式:采用伪随机码、格雷码或安全 CRC 编码,每个位置都带校验信息,适合高安全等级场景。
- 自诊断编码器:内置温度、电压、LED 老化、信号幅值监测,能在故障发生前输出预警。
结构设计的关键是物理独立与逻辑关联的平衡:两通道必须独立到足以避免共因失效,又必须通过交叉校验确认彼此一致。下图展示了典型双通道安全编码器的信号链与诊断路径。
二、安全约束:把“可信”写成可验证条件
安全约束不是泛泛的“高可靠”,而是可量化、可测试、可诊断的硬性条件。典型约束包括:
- 通道独立性:两通道的供电、地线、敏感元件、信号路径不得共享关键节点,避免单点短路导致双通道同时失效。
- 数据完整性:每帧位置数据必须携带 CRC、序列号或 MAC,接收端在限定时间窗内验证,超时即判为无效。
- 一致性约束:两通道位置差不得超过允许阈值,速度方向必须一致,否则进入安全状态。
- 时间约束:数据新鲜度由时间戳或滚动计数器保证,防止重放旧数据。
- 故障响应时间:从检测到故障到输出安全状态,必须满足系统安全时间要求。
安全约束示例:某伺服安全编码器要求通道偏差 < 0.5°,CRC 校验失败连续 3 帧即触发安全停机,故障响应时间 ≤ 10 ms,两通道供电隔离耐压 ≥ 1 kV。
三、抗攻击编码策略:让篡改难以伪装
攻击者可能通过信号注入、重放、旁路、故障注入等方式伪造位置。抗攻击编码策略的核心是让合法数据具有不可预测性和可验证性。常见策略如下表:
| 策略 | 实现方式 | 防御目标 | 代价/注意点 |
|---|---|---|---|
| CRC 校验 | 每帧附加 CRC-8/CRC-16 | 随机位翻转、传输错误 | 无法防重放,需配合序列号 |
| 滚动计数器 | 帧内嵌入递增计数值 | 重放旧帧 | 接收端需维护窗口,掉电需同步 |
| 通道交叉校验 | 双通道数据实时比对 | 单通道篡改、漂移 | 需处理同步误差和共因失效 |
| 伪随机码绝对位置 | 码盘采用 PRBS 或安全码 | 位置伪造、局部遮挡 | 解码复杂度高,需自同步 |
| MAC/签名 | 对关键帧计算消息认证码 | 恶意注入、伪造帧 | 增加计算和密钥管理开销 |
实际设计中,通常将 CRC、滚动计数器和交叉校验组合使用,形成多层防御。例如:通道 A 和 B 各自输出带 CRC 和计数器的帧,安全处理单元先验证 CRC,再检查计数器连续性,最后比对两通道位置差。任何一层失败都进入安全状态。
四、典型设计模式与实操要点
在工程落地时,安全编码器常采用以下设计模式:
- 双通道独立 + 交叉校验模式:适合 SIL2/SIL3 场景,两通道物理隔离,处理单元做一致性判断。
- 单通道自诊断 + 安全协议模式:成本敏感场景,通过 CRC、计数器、温度/电压监测提升诊断覆盖率。
- 绝对位置 + 增量校验模式:绝对式码盘提供粗位置,增量信号提供细分辨率和运动方向,两者互相验证。
- 安全状态机模式:编码器内部维护“正常/降级/安全”状态,故障时主动输出安全值或断开驱动。
实操建议:调试阶段先用示波器同时抓取 A/B 通道的差分信号和 CRC 帧,确认通道间延迟小于系统允许的同步误差;再用故障注入工具短接某一路信号,观察安全处理单元是否在要求时间内输出安全状态。
常见误区:只做 CRC 不做计数器,无法防重放;只做双通道不做交叉校验,无法发现两通道同时漂移;把安全逻辑放在非安全 MCU 中,诊断覆盖率不足;忽略供电共因,导致“独立通道”在电源故障时同时失效。
复盘时,建议用故障树梳理每个攻击面和失效模式,确认安全约束是否覆盖了“单点故障 + 潜在故障 + 共因故障”。只有把结构、约束、编码策略和设计模式统一到同一张安全论证中,安全编码器才能真正成为双通道反馈链路中可信的测量源头。