技术支持 - 德敏哲Germanjet CANopen磁致伸缩位移传感器 (单磁块-异步) 通讯范例

德敏哲Germanjet CANopen磁致伸缩位移传感器 (单磁块-异步) 通讯范例

发布时间:

德敏哲 Germanjet 19 系列 CANopen 磁致伸缩位移传感器在「单磁块 + 异步」模式下,控制器与传感器之间的完整报文顺序。

异步的意思是:控制器不发 SYNC 同步帧,传感器上电启动之后,自己按定时器周期把位移和速度推上总线。现场常见的用法就是一杆一尺、只想不停地上报位置——小型液压站、单个油缸的行程监测都属于这一类,控制器那侧不用再养一个实时节拍任务。

表里每一列怎么读、EMCY 和启动帧是什么来路,单磁块-同步通讯范例 里已经讲全,四篇的读表方法完全一样,这里不再重复。

德敏哲Germanjet CANopen磁致伸缩位移传感器 (单磁块-异步) 通讯范例

报文先后顺序

序号

发送者

cob-id

dlc

data

注

0

传感器

0xFF

0

n/a

EMCY 讯息 (电源启动)

1

控制器

0x000

2

0x01 0x00

启动所有节点

2

传感器

0x1FF

7

位移(4 字节), 速度(2 字节)

磁块一

3

传感器

0x1FF

7

位移(4 字节), 速度(2 字节)

磁块一

4

传感器

0x1FF

7

位移(4 字节), 速度(2 字节)

磁块一

和「同步」版差在哪

同步版里,控制器每个周期发一帧 SYNC(cob-id 0x080、数据长度 0),传感器收到才回一帧 PDO;异步版没有这一问一答,传感器自己发。所以下面这张表里看不到「控制器 / 0x080」这种行,报文条数比同步版少一半,总线负载也低。

代价是节奏由传感器自己的定时器定,控制器读到的值最多会滞后一个定时周期。做趋势监测、行程到位判断完全够用;做毫秒级位置闭环,这个滞后要算进控制周期里。

逐帧说明

上电后传感器先发一帧 EMCY,cob-id 0xFF,说明当前 node-id 是 0x7F(十进制 127,出厂默认)。这帧不是故障报警,只是「我起来了,地址是这个」。

控制器接着发「启动所有节点」:cob-id 0x000、数据长度 2、内容 0x01 0x00——0x01 表示启动,0x00 表示所有节点。总线上只挂一台时,也可以只启动自己:第二字节换成 0x7F,就只对 node-id 0x7F 生效。

启动帧只发一次。传感器进入启动状态后,按定时周期自己发 PDO1:cob-id 0x1FF、长度 7 字节,前 4 字节位移、接着 2 字节速度、最后 1 字节 0x00。位移和速度都是低字节先到(LSB first):收到 0x03 0x83 0x00 0x00 就是 0x00008303=33539,分辨率 0.005mm 时为 33539×0.005=167.695mm。

现场容易踩的两个坑

一是把「启动节点」当成每帧前都要走的握手。这帧发一次就够,重复发会让传感器反复重启 PDO,上位机上看到的曲线是一顿一顿的。

二是把 0x1FF 当固定值写死。cob-id 是按 0x180 加 node-id 来的,0x7F 对应 0x1FF;总线上再挂一台、地址改过之后再死等 0x1FF,就会一帧都收不到。

canopen接线图

canopen组网结构图

相关产品:Profinet/EtherCAT信号输出

常见问题

德敏哲Germanjet CANopen磁致伸缩位移传感器 (单磁块-异步) 通讯范例

德敏哲 Germanjet 19 系列 CANopen 磁致伸缩位移传感器在「单磁块 + 异步」模式下,控制器与传感器之间的完整报文顺序。 异步的意思是:控制器不发 SYNC 同步帧,传感器上电启动之后,自己按定时器周期把位移和速度推上总线。

相关资料推荐