19系列CANopen位移传感器通讯范例:EMCY、启动节点、PDO与SYNC四类报文一次看懂

把 CANopen 位移传感器接到控制器上,光知道"它支持 CANopen"是不够的。上电之后谁先说话、每帧里装的是什么、控制器该回什么,都得按行规来。这篇文章把 19 系列 CANopen 传感器的通讯过程拆成四类报文,按单磁块、双磁块,同步、异步四种接法,一条一条对清楚。

19 系列 CANopen 位移传感器四类报文与默认节点地址
19 系列 CANopen 位移传感器四类报文与默认节点地址

先记住整条流程。传感器一上电,会立刻发出一帧 EMCY,cob-id 是 0xFF。这一帧的意义是告诉控制器"我在这里",同时亮出它的默认节点地址:0x7F,也就是十进制的 127。接下来控制器要发"启动节点"报文,cob-id 是 0x000,数据两字节 01 00——01 表示启动,00 表示所有节点。也可以发 01 7F,只启动 0x7F 这一个节点。

传感器收到启动节点后,会回一帧 PDO1,cob-id 是 0x1FF,数据 7 字节:前 4 字节是位移,中间 2 字节是速度,最后 1 字节是保留的 00。位移和速度都是低位先发(LSB first),比如收到 03 83 00 00,实际数值是 0x00008303,十进制 33539。分辨率按 0.005mm 算,就是 33539 × 0.005 = 167.695mm。

到这里,同步和异步的分叉出现了。

同步接法:传感器进入启动状态后,会回应控制器发来的 SYNC 报文。SYNC 的 cob-id 是 0x080,没有数据。每收到一次 SYNC,传感器就回一帧 PDO。控制器只在初始化时发一次"启动节点",之后全靠 SYNC 驱动,读多少帧由你说了算,节奏完全可控。

异步接法:传感器收到"启动节点"后进入启动状态,之后会定时自发 PDO,不需要 SYNC。想让它多快发一帧,靠的是 CAN 事件计时器——那组参数怎么改,另有一篇文章讲,这里不展开。

双磁块时道理一样,只是多一帧。两个磁块各占一个 PDO:PDO1 还是 0x1FF,对应磁块一;PDO2 是 0x2FF,对应磁块二。每帧结构相同,都是 4 字节位移加 2 字节速度加 1 字节保留。同步接法下,一次 SYNC 会带出两帧;异步接法下,两个磁块的 PDO 按各自的事件计时器定时发出。一支传感器读两个位置,靠的就是这两帧分开走。

几个现场容易忽略的细节,一并记下:

第一,默认节点地址是 0x7F。如果总线上挂了多支传感器,记得先给每支改独立地址,别让它们都停在 0x7F 上打架。

第二,启动节点报文只在初始化时发一次。之后同步模式只用 SYNC,别每周期都补发,补了也不多余,但没必要。

第三,位移换算先确认分辨率。示例按 0.005mm 算,实际以订货代码为准;同样的原始值,分辨率不同,位置就不同。

第四,PDO 里带的是位置和速度两样东西。只要控制器需要速度反馈,这一帧已经给了,不用另开通道。

把这四类报文吃透,接 CANopen 位移传感器就不靠猜了。具体某帧对不上时,先用 EMCY 和 PDO 的 cob-id 反查节点地址,往往一查一个准。

常见问题

Q:线接好了,传感器一声不吭,先查什么?

先看有没有发 NMT 启动节点。节点上电、接线全对,但没进 Operational 状态,任何报文都不会应答。

Q:EMCY 报文一直刷屏怎么办?

先查供电稳定性和屏蔽。首次调试就刷 EMCY,多半是 24V 纹波大或屏蔽没做好,不是尺坏了。

← 返回行业动态