从编码器的差分时钟、位置数据与 CRC,到 CompactRIO 上的三通道同步采集——本文把 BiSS-C 的原理、SEA 9521 的能力边界和实际配置方法一次讲清。
⏱ 一分钟速览
如果你很忙,先看这 7 句话:
- BiSS-C = 开源、免许可费的同步串行传感器接口,主站给时钟、从站回数据,专为绝对编码器高速读取而生;
- SEA 9521 = 把 BiSS-C/SSI 接入 NI CompactRIO FPGA 的接口模块,3 个 M12 通道,最多 6 个 Slave;
- 总线时钟 200 kHz ~ 8 MHz,19 档可配;单编码器最高约 33 kHz 采集率,三编码器约 20 kHz/通道;
- 支持 BiSS-C 与 SSI 混合接入,但三通道共享同一时钟——最慢的设备决定全局速度;
- 通道必须从 1 开始连续占用,不能跳号——这是最容易踩的坑;
- 仅支持带 FPGA 背板的 CompactRIO,不支持 CompactDAQ;
- 每次读取都应用同一个 IO Node 同时读取全部 Slave,不要分循环分轴读。
写在前面
在伺服电机、机器人关节、精密转台和直线位移机构中,"位置"往往是控制系统最重要的反馈量之一。
增量编码器给出 A/B/Z 脉冲,系统需要持续计数才能知道相对位置;绝对编码器则直接给出一个数字位置字——即使重新上电,也能知道当前轴在哪里。
但问题随之而来:
- 几十位的位置数据,怎样快速传回控制器?
- 长电缆和电磁干扰下,怎样判断数据是否可靠?
- 多个轴,怎样尽可能同步采样?
BiSS-C 正是为这类任务设计的数字传感器接口,而 SEA 9521 则把它带入了 NI CompactRIO 的 FPGA 测试测量平台。
一、先从最直观的问题说起:BiSS-C 是什么?
BiSS 是 Bidirectional Serial Synchronous Interface 的缩写,是一种开源、免许可费的同步串行传感器接口。它由主站提供时钟,从站按照时钟节拍返回传感器数据,常见于绝对式旋转编码器、直线编码器和位置传感器。
BiSS-C 中的 C 指 Continuous Mode(连续模式)。它的核心价值可以概括为四点:
| 特性 | 价值 |
|---|---|
| 绝对数据 | 每次读取都得到完整位置字,不依赖控制器从零开始累计脉冲 |
| 高速同步 | 主站用差分时钟发起采样,适合高速运动和闭环控制 |
| 差分传输 | 时钟和数据采用差分信号,适应工业现场的长线与干扰环境 |
| 可校验 | 过程数据通常带 CRC,控制器可以发现传输错误,而不只是"收到一个数" |
从使用者视角看,BiSS-C 很像"带完整性校验的高速绝对位置读取接口"。它与 SSI 的电气结构相近,但在 CRC、控制通信、设备寄存器和扩展能力方面更完整。
二、一次位置读取,线上究竟发生了什么?
典型 BiSS-C 点对点连接包含两对差分线:
- MA+ / MA− → Master Clock,主站输出差分时钟;
- SLO+ / SLO− → Slave Out,从站返回差分数据。
主站开始一次通信后,编码器按协议锁存位置,再逐位送出数据。一个常见帧可理解为:
ACK → Start → CDS → 位置/过程数据 → Error → Warning → CRC → 超时阶段 → 准备下一周期

不同器件的数据长度、状态位和 CRC 多项式可能不同,必须以编码器数据手册为准。
这里有三个值得深入理解的细节。
细节 1 |时钟决定"怎么读",编码器决定"读多少位"
BiSS-C 主站控制时钟频率,但位置分辨率来自编码器。例如 19 bit 单圈位置可把一圈划分为 524288 个码位;再加 12 bit 多圈数据,就能在 4096 圈范围内保持绝对圈数。若再含 1 个错误位、1 个警告位,过程数据长度就是:
19 bit 单圈 + 12 bit 多圈 + 1 bit Error + 1 bit Warning = 33 bit
⚠️ 配置陷阱
不能只填"编码器是 31 位"就了事——必须弄清楚位置位、状态位和校验的准确组成。数据长度填错,后续 CRC 校验全部失效。
细节 2 |CRC 判断的是"传输是否可信"
CRC 会按照规定多项式对数据计算校验。接收端计算结果与从站发送的 CRC 不一致,就说明数据帧可能受干扰、时序或配置错误影响。
常见 BiSS 位置数据使用 6 bit CRC,但实际多项式、是否反相仍应查器件手册。
为什么 CRC 很重要?
因为"数值看起来合理"不等于"传输一定正确"。错误的数据长度、错误的多项式、过高的时钟或不合格的电缆,都可能造成间歇性错误——数据"看着没跳",其实已经被干扰了。
细节 3 |C 模式不只传位置,还能传控制信息
BiSS-C 可在高速传输传感器数据的同时,用较低速率承载控制通信——例如读取状态、温度、器件参数和寄存器。部分器件还提供 EDS(Electronic Data Sheet,电子数据表)。
这使得接口不仅能"读位置",也具备诊断和配置能力。
三、BiSS-C 与 SSI:外形相近,能力并不相同
SSI 也是主站给时钟、编码器返回串行绝对位置数据,因而两者在硬件连接上具有较强兼容性。但工程应用中仍要区分:
| 对比项 | BiSS-C | SSI |
|---|---|---|
| 基本用途 | 高速绝对位置与传感器数据 | 绝对位置数据 |
| 数据方向 | 过程数据从从站返回;C 模式支持控制通信 | 通常为单向位置读取 |
| 数据校验 | 通常支持 CRC | 多数 SSI 器件没有 CRC |
| 状态能力 | 可包含 Error、Warning、寄存器及 EDS | 取决于厂商,通常较简单 |
| 数据编码 | 通常为二进制过程数据 | 常见 Binary 或 Gray Code |
| 配置重点 | 数据长度、CRC 多项式、反相、时钟 | 数据长度、Binary/Gray、最大时钟 |
🔧 工程提示
SSI 没有 CRC 时,错误更难被自动发现,因此时钟频率、数据长度和编码方式必须格外谨慎。Gray Code 也不能按普通二进制直接换算,必须先做 Gray-to-Binary 转换。
四、SEA 9521 是什么?
SEA 9521 是 S.E.A. Datentechnik 面向 NI CompactRIO 平台开发的 BiSS-C/SSI 编码器接口模块,部件号为 60000069。它在 FPGA 背板与绝对编码器之间完成时钟驱动、差分数据接收、协议处理、CRC 校验、延迟补偿以及寄存器访问。

图:SEA 9521 产品实物。图片来源:S.E.A. 官方产品页。
核心性能一览:
| 指标 | SEA 9521 能力 |
|---|---|
| 物理编码器通道 | 3 个独立 M12 通道 |
| 支持协议 | 单向 BiSS-C、SSI Binary、SSI Gray |
| Slave 数量 | 总计最多 6 个 Slave |
| 数据分辨率 | 由编码器决定,单圈 + 多圈合计最高 64 bit |
| 总线时钟 | 200 kHz ~ 8 MHz,19 档可配置 |
| 典型最大采集率 | 单编码器最高约 33 kHz;三编码器最高约 20 kHz/通道 |
| 同步能力 | IO Node 同步触发所有 Slave,建议一次读取全部数据与状态 |
| 信号完整性 | 集成线路传播延迟补偿,持续测量并补偿电缆延迟 |
| 诊断与配置 | CRC、Error/Warning、寄存器读写、可读取 BiSS EDS |
| 编码器供电 | 模块输出 5 V,最大总电流 350 mA;外部接口输入 7~30 VDC |
| 环境 | -40 ~ 70 °C 工作,IP30,180 g,87 × 23 × 89 mm |
⚠️ 采集率是系统结果,不是无条件保证值
它还受到从站数量、编码器内部处理延迟、总线时钟、线缆传播延迟和电磁环境影响。每增加一个 Slave,手册给出的处理时间增量约为 8 μs。
五、它能测哪些信号?分别能测几路?
这是选型时最容易产生误解的一部分。SEA 9521 的"3 个通道"和"最多 6 个 Slave"不是同一个概念。

1. BiSS-C 绝对编码器 → 最多 3 个物理连接,总计最多 6 个 Slave
三个 M12 接口可各直接连接一个 BiSS-C 设备,形成三个点对点通道。每个设备内部可以包含多个 Slave,模块在全部通道上总计支持最多 6 个 Slave。因此:
| 场景 | 物理接口 | 逻辑 Slave |
|---|---|---|
| 每台编码器只有 1 个 Slave | 3 台编码器 | 3 个 |
| 设备内部含多个 Slave | 仍只有 3 个物理接口 | 最高 6 个 |
⚠️ 不支持外部菊花链
SEA 9521 当前不支持把多个独立设备以外部菊花链方式串接成总线。
对每个 Slave,可获得最长 64 bit 的过程数据,典型内容包括单圈位置、多圈位置、错误位和警告位;BiSS-C 还可进行寄存器通信。
2. SSI 绝对编码器 → 最多 3 路
每个物理通道可连接一台 SSI 绝对编码器,支持 Binary 和 Gray Code,最多同时测量 3 路 SSI 绝对位置。SSI 通常没有 BiSS-C 那样的 CRC 和寄存器能力,具体数据字由编码器定义。
3. BiSS-C 与 SSI 混合 → 合计仍为 3 个物理通道
例如可把通道 1、2 接 BiSS-C 编码器,通道 3 接 SSI 编码器。
⚠️ 混合接入的关键限制
三通道共享同一总线时钟设置,所以所有设备必须能在这个时钟下可靠工作,最大速度通常由最慢的设备决定。若高速 BiSS 与低速 SSI 的速度范围难以兼容,建议分配到不同的 SEA 9521 模块。
4. 它不能直接测什么?
SEA 9521 不是通用模拟采集卡,也不是增量编码器计数器。
| ❌ 不能直接测 | ✅ 应选用的模块 |
|---|---|
| 电压、电流、热电偶 | C 系列模拟输入模块 |
| 应变、IEPE 信号 | C 系列应变/声音振动模块 |
| A/B/Z 增量编码器 | C 系列计数器模块(如 NI 9361) |
六、三通道怎样做到尽可能同步?

在 LabVIEW FPGA 中执行包含所需 Slave 数据的 IO Node 时,SEA 9521 会向所有 Slave 同步发出硬件触发。编码器收到触发后锁存位置并返回数据,模块对线路传播延迟进行补偿。
手册给出的模块内部响应为:
调用 IO Node 后约 95 ns(±10 ns),BiSS Master Clock 首次被拉低。
系统总采样延迟还要加上 FPGA 触发到 IO Node 的时间、电缆延迟,以及编码器收到时钟边沿后真正锁存位置的内部延迟。
🔧 工程提示:多轴同步精度不只由模块决定
如果不同轴使用不同型号编码器、不同长度电缆,编码器内部采样延迟仍可能不同。高精度同步测试应查阅编码器的 sampling delay,并用实测或标定确认轴间偏差。
七、从接线到读数:SEA 9521 怎么用?
第一步 |确认平台
⚠️ 仅支持带 FPGA 背板的 CompactRIO
手册明确说明 SEA 9521 不支持没有 FPGA 可编程背板的系统(例如 CompactDAQ)。模块还支持 MXI-Express RIO、R Series Expansion 和 EtherCAT 扩展机箱。
第二步 |确认编码器参数
至少准备以下信息:
| 确认项 | 说明 |
|---|---|
| 协议类型 | BiSS-C 还是 SSI |
| 数据位数 | 单圈位数、多圈位数、错误位、警告位 |
| CRC 参数 | BiSS CRC 多项式及是否反相 |
| SSI 编码 | Binary 还是 Gray Code |
| 最大时钟 | 编码器允许的最高时钟频率 |
| 供电要求 | 电压和电流 |
| 接口定义 | 编码器端 M12 引脚定义 |
第三步 |完成电气连接
SEA 9521 每通道采用 8 针 M12 母座,提供差分 Clock、差分 Data、GND 和 5 V 编码器供电。
⚠️ 供电注意事项
- 若编码器需要高于 5 V 的供电,必须外部供电;
- 不得把外部电源接到模块的 5 V VCC 输出端;
- 模块外部电源接口接受 7~30 VDC;
- 编码器 5 V 输出总电流最大 350 mA;
- 连接前必须核对极性;
- 优先使用双屏蔽编码器电缆,把内、外屏蔽按手册要求分别连接。
第四步 |按顺序占用通道
⚠️ 最重要的驱动限制:通道必须从 1 开始连续使用
| 设备数量 | 接哪些通道 |
|---|---|
| 1 台 | 通道 1 |
| 2 台 | 通道 1、2 |
| 3 台 | 通道 1、2、3 |
不能只接通道 2,也不能跳过通道 2 直接使用通道 3。
任一低编号通道设备失效或断开时,后续通道也会停止工作;修复连接后需要重新初始化。
第五步 |在 LabVIEW FPGA 中配置与初始化
安装 SEA 9521 驱动后,把模块加入 FPGA Target。驱动通过三类节点开放功能:
| 节点类型 | 功能 |
|---|---|
| IO Node | 同步读取各 Slave 的 U64 数据和总状态字 |
| Method Node | 初始化、复位、寄存器配置/读/写 |
| Property Node | 读取模块 ID、序列号和厂商 ID |
上电后必须先调用 Init。初始化时设置:总线速度、每个 Slave 的数据长度、CRC 多项式、CRC 反相方式、BiSS-C/SSI 类型、SSI Binary/Gray 模式,以及 Slave 到通道的映射。
🔧 工程提示:调试初期别追求最高速率
官方 Quick Start 建议调试初期先用 2 MHz 或 800 kHz,而不是一开始就追求最高速率。先跑通再提速。
第六步 |一次读取全部数据与状态
为了保证多设备数据对齐,手册强烈建议用同一个 IO Node 同时读取全部 Slave 数据和 Status。不要在不同循环、不同时间分别读取各轴,再假设它们天然同步。
位置换算通常为:
单圈机械角度 = 单圈原始码 ÷ 2^单圈位数 × 360°
绝对圈数 = 多圈原始码
⚠️ 数据使用前的必检项
- SSI Gray Code → 应先转为 Binary;
- BiSS-C → 应先检查 CRC 与 Error/Warning,再使用位置值。
八、调试中最常见的 6 个问题
| # | 问题现象 | 排查方向 |
|---|---|---|
| 1 | 读不到通道 2 或 3 | 检查是否从通道 1 开始连续连接,断线恢复后重新 Init |
| 2 | 位置偶发跳变 | 降低时钟 → 检查屏蔽、差分线极性、接头和供电 → 查看 CRC 状态 |
| 3 | BiSS 一直报 CRC 错 | 重点核对数据总长度、CRC 多项式及是否反相 |
| 4 | SSI 数值完全不对 | 检查 Binary/Gray 选择与数据长度;SSI 缺少 CRC,更应从低速开始 |
| 5 | 三轴采样率达不到 20 kHz | 检查编码器处理延迟、Slave 数量、总线速度和 FPGA 循环结构;20 kHz 是典型上限而非固定保证 |
| 6 | 长线在 8 MHz 下不稳定 | 延迟补偿解决的是传播时延,不会消除衰减、反射和干扰。手册不对超过 10 m 的任意组合做保证,实际长度应按编码器、线缆和现场环境验证 |
💡 常见误区速查
| 误区 | 正确理解 |
|---|---|
| "3 个通道 = 3 个 Slave" | 3 个物理通道,总计最多 6 个逻辑 Slave;一个设备内部可含多个 Slave |
| "采集率就是 33 kHz" | 33 kHz 是单编码器典型上限;多 Slave、低时钟、长线缆都会降低实际采集率 |
| "延迟补偿 = 长线无上限" | 延迟补偿只补偿传播时延,不消除衰减和干扰;手册不对 >10 m 任意组合保证 |
| "通道随便接哪个都行" | 必须从通道 1 开始连续占用,不能跳号 |
| "SSI 也有 CRC" | 多数 SSI 器件没有 CRC,错误更难自动发现 |
| "可以分循环读各轴" | 必须用同一个 IO Node 同时读取全部 Slave,否则不保证同步 |
九、选型时记住这张清单
如果项目需要在 CompactRIO 上读取绝对位置,并且关注多轴同步、CRC 诊断、寄存器访问和 FPGA 确定性,SEA 9521 是非常有针对性的接口模块。
选型前请一次确认:
① 是 BiSS-C 还是 SSI,是否需要两者混接 → ② 物理编码器数量 ≤ 3,逻辑 Slave 总数 ≤ 6 → ③ 最大 64 bit 数据宽度是否足够 → ④ 全部设备能否共享 200 kHz ~ 8 MHz 中的同一时钟 → ⑤ 编码器是否为 5 V 供电,总电流在 350 mA 内 → ⑥ 平台是否为带 FPGA 背板的 CompactRIO → ⑦ 是否能接受通道必须从 1 开始连续占用的驱动限制。
结语
BiSS-C 的价值不只是"把位置变成串行数字"。它把同步采样、绝对位置、状态诊断、CRC 和设备配置组织在一套高速接口中。SEA 9521 则进一步把这些能力接入 CompactRIO FPGA,使绝对位置可以与力、振动、声音、电流等其他测量量在同一测试系统中协同采集。
选对接口模块只是第一步,把协议参数、通道映射、同步策略和延迟补偿都配置到位,才能让多轴绝对位置测量真正"又快又稳"。
关于莱布内森
莱布内森(上海)智能科技有限公司
长期专注于测试测量、数据采集、自动化测试与系统集成。针对 BiSS-C/SSI 编码器选型、CompactRIO FPGA 开发、多轴同步位置测量以及与力、振动、电参量的联合采集,可提供从接口核对、硬件搭建到 LabVIEW 软件开发的完整技术支持。
需要选型帮助或技术方案?欢迎在评论区留言,或通过公众号菜单联系我们。
资料依据
- S.E.A. Datentechnik GmbH,《SEA 9521 Hardware Manual》,Part No. 60000069。
- S.E.A. Datentechnik GmbH,《SEA 9521 Software Manual – Programming and Integration》,Doc. No. HB/SEA 9521 SoftwareManual/1.2.b/Mar-2023。
- S.E.A. 官方产品页:SEA 9521 BiSS-C/SSI Encoder Interface Module。
- BiSS Interface 官方网站:BiSS – The High Performance Interface。
具体功能、兼容性和安全要求请以所用硬件、编码器、驱动版本及厂商最新资料为准。
版权所有 © 莱布内森(上海)智能科技有限公司
文章来源:微信公众号「Labnethon 莱布内森」 | 发布时间:2026年8月1日 原文链接:https://mp.weixin.qq.com/s/2DCsxdrnZQQJRCSxMZ7bTw