这一页是 19 系列 CANopen 磁致伸缩位移传感器在两磁块、异步模式下的通讯范例。两磁块对应两个 PDO,异步则意味着进入启动状态后由传感器按自身周期把两路数据发上总线,控制器只管接收。这条路径最省控制器资源,适合两路位置都要、但对采样时刻一致性要求不高的场合。



总线上的报文流程
| 序号 | 发送者 | cob-id | dlc | data | 说明 |
|---|---|---|---|---|---|
| 0 | 传感器 | 0xFF | 0 | n/a | EMCY 讯息(电源启动) |
| 1 | 控制器 | 0x000 | 2 | 0x01 0x00 | 启动所有节点 |
| 2 | 传感器 | 0x1FF | 7 | 位移(4 字节) + 速度(2 字节) | 磁块一 |
| 3 | 传感器 | 0x2FF | 7 | 位移(4 字节) + 速度(2 字节) | 磁块二 |
| 4 | 传感器 | 0x1FF | 7 | 位移(4 字节) + 速度(2 字节) | 磁块一 |
| 5 | 传感器 | 0x2FF | 7 | 位移(4 字节) + 速度(2 字节) | 磁块二 |
| 6 | 传感器 | 0x1FF | 7 | 位移(4 字节) + 速度(2 字节) | 磁块一 |
| 7 | 传感器 | 0x2FF | 7 | 位移(4 字节) + 速度(2 字节) | 磁块二 |
两路数据怎么分
| PDO | cob-id | 对应磁块 | 数据长度 | 内容 |
|---|---|---|---|---|
| PDO1 | 0x1FF | 磁块一 | 7 字节 | 位移(4 字节) + 速度(2 字节) + 0x00 |
| PDO2 | 0x2FF | 磁块二 | 7 字节 | 位移(4 字节) + 速度(2 字节) + 0x00 |
两个 PDO 交替出现,顺序不一定固定。程序里不要在接收中断里按“奇偶次数”判断是哪一路,那样一旦丢帧就会错位;正确做法是读报文头里的 cob-id,0x1FF 送进磁块一的寄存器,0x2FF 送进磁块二的寄存器。
位移值换算
位移字段低位先发(LSB first)。例如收到 0x02 0x83 0x00 0x00,拼成 0x00008302 = 33538;分辨率 0.005mm 时对应 33538 × 0.005mm = 167.69mm。速度字段按同样方式拼接,只是单位不同。
| 字段 | 字节数 | 字节序 | 换算方式 |
|---|---|---|---|
| 位移 | 4 | LSB first | 拼接后 × 分辨率,单位 mm |
| 速度 | 2 | LSB first | 拼接后 × 速度分辨率,单位 mm/s |
| 保留位 | 1 | — | 固定 0x00,不参与运算 |
调试注意
- 启动讯息发一次即可:传感器收到一条启动讯息就进入工作状态,初始化程序里发一次,不需要循环发。
- 两路数据分开缓存:混用一个地址会看到两个位置数值来回跳,这是现场最常见的程序类故障。
- 总线上不要接非本网络设备:CANopen 的总线负载对周期敏感,接入无关报文会拉低有效采样率。
- 末端终端电阻与屏蔽单端接地:与其它 CANopen 组网要求一致。
现场问得最多的问题(量程怎么定、输出信号怎么选、干扰怎么排、通讯怎么配)我们整理成了一页问答合集:位移传感器常见问题解答。
常见问题
CANopen 两磁块异步模式的报文怎么走?
传感器上电先发一帧 EMCY,cob-id 为 0xFF;控制器发启动报文,cob-id 0x000、数据 0x01 0x00;进入启动状态后传感器按自身周期把两路数据发上总线,磁块一走 cob-id 0x1FF,磁块二走 0x2FF,每条都是 7 字节。控制器只管接收,这条路径最省控制器资源。
CANopen 两路 PDO 数据怎么区分?
靠 cob-id 区分:PDO1 的 cob-id 是 0x1FF 对应磁块一,PDO2 的 cob-id 是 0x2FF 对应磁块二,两者数据长度都是 7 字节,内容是位移 4 字节加速度 2 字节再加 0x00。程序里不要在接收中断里按「奇偶次数」判断是哪一路,那样一旦丢帧就会错位;正确做法是读报文头里的 cob-id。
CANopen 收到的位移数据怎么换算?
位移字段低位先发(LSB first)。例如收到 0x02 0x83 0x00 0x00,拼成 0x00008302 = 33538;分辨率 0.005mm 时对应 33538 × 0.005mm = 167.69mm。速度字段按同样方式拼接,只是单位为 mm/s;保留位固定 0x00,不参与运算。
CANopen 启动讯息要发几次?
发一次即可。传感器收到一条启动讯息就进入工作状态,初始化程序里发一次,不需要循环发。
CANopen 两磁块现场调试要注意什么?
两路数据分开缓存,混用一个地址会看到两个位置数值来回跳,这是现场最常见的程序类故障;总线上不要接非本网络设备,CANopen 的总线负载对周期敏感,接入无关报文会拉低有效采样率;末端终端电阻与屏蔽单端接地,与其它 CANopen 组网要求一致。

