网站地图
原理与结构
原理与结构
您的位置: 首页 >> 原理与结构 >> CANopen位移传感器单磁块异步通讯范例

CANopen位移传感器单磁块异步通讯范例

发布时间:2026-09-10
CANopen位移传感器单磁块异步通讯范例

CANopen位移传感器单磁块异步通讯,在 CANopen 输出里属于配置量小、结构简单的一档:一根测杆配一个磁环,传感器上电启动之后按自己设定的周期把位置推上来,全程不用 SYNC 报文。单点位置反馈、油缸定位、闸门开度这类场合选这一档就够,PLC 侧不必做同步逻辑,组态也省事。

位移传感器
图:位移传感器现场应用实拍(易测电气)
异步档时序:启动之后不需要 SYNC,PDO 按周期自己往上发 t EMCY 0xFF 上电 NMT 0x000 启动 PDO1 7B 0x1FF PDO1 7B 0x1FF PDO1 0x1FF 周期 T(由事件计时器设定) 出厂 node-id 0x7F;PDO 内容:位移 4B(低位先发)+ 速度 2B + 0x00
图:异步档时序——上电先发 EMCY,控制器发 NMT 启动帧,之后传感器按周期重复推送同一个 PDO1,主站只管收

CANopen位移传感器单磁块异步通讯和同步档差在哪

「异步」两个字说的就是不理会 SYNC 报文。同步档要主站周期性发 SYNC,传感器收到 SYNC 才采数据、才回 PDO,好处是挂在这条总线上的多个磁块,数据锁在同一时刻上。异步档不看 SYNC,传感器按内部「事件计时器」定的周期往外推,主站负责收和解析就行。

取舍很清楚:只有一个测点,「同一时刻」这个保证用不上,异步档配置量小、总线负载低、PLC 程序也简单;两个磁块以上要算位置差、做同步压装的,就得改订同步档。我们碰到过一台双磁块测差值的设备订成了异步档,两个磁块的数据错开几十毫秒,算出来的差值一直在抖,换哪根线都没用,最后只能重新订货。测点数量这件事,订型阶段就要跟供应商说清楚。

上电启动的报文顺序

传感器出厂默认节点 ID 是 0x7F,也就是十进制 127。上电以后它先推一条 EMCY 报个到,cob-id 是 0xFF、数据长度 0。接着控制器发 NMT 启动命令,cob-id 0x000、dlc 2、数据 0x01 0x00,这是启动总线上所有节点;只想单独拉起这一台,就发 0x01 0x7F。这条命令一下去,PDO 就会跟着上来。

序号发送者cob-iddlcdata说明
0传感器0xFF0n/aEMCY,电源启动
1控制器0x00020x01 0x00启动所有节点;单独启动发 0x01 0x7F
2传感器0x1FF7位移4B + 速度2B + 0x00PDO1,磁块一
3传感器0x1FF7位移4B + 速度2B + 0x00PDO1,磁块一,按周期重复

那 7 个字节怎么算成毫米

启动之后传感器只发一个 PDO,cob-id 固定 0x1FF,长度 7 字节:前 4 字节是位移、低字节先发,接着 2 字节是速度,最后 1 字节是 0x00。这个顺序跟手册对一遍就能确认,别自己猜字节序。

举个对数用的实例:抓到的位移字节是 0x02 0x83 0x00 0x00,按低位在前拼成 0x00008302,十进制是 33538。该型号分辨率按 0.005mm 算,33538 × 0.005mm = 167.69mm。调试时先手算一遍,再拿它核对抓到的帧;拼反了会得到一个看着也挺「正常」的离谱数值,这种错最容易被绕进去。

上报周期怎么定

周期由传感器内部的「事件计时器」决定,改大改小都支持,具体可设范围以厂家样本为准。周期短,数据新鲜、闭环反应快,但总线负载跟着涨;周期长,总线轻松,可位置变化会被抹平。

定这个值的办法很简单:看机械动作最快的变化速度。做油缸定位的,周期取控制周期的整数倍,比如 PLC 扫描 10ms,周期就取 10ms 或 20ms,别一个 1ms 一个 20ms 地各跑各的。做闸门开度这种慢过程的,50ms~100ms 完全够用,没必要为了「好看」把周期压到极限。

接线、终端电阻和线长

CANopen 走的是差分信号,CAN_H 和 CAN_L 必须用双绞屏蔽线,屏蔽层只在控制器那一端单点接地。总线的两个物理末端各挂一个 120Ω 终端电阻,中间的节点不要再加。这条规矩违反,报错方式通常是随机丢帧,查起来很费时间。

波特率总线长度参考常见用法
1 Mbit/s≤25 m短距离、节点少
500 kbit/s≤100 m设备内总线、运动控制
250 kbit/s≤250 m常规产线、多节点
125 kbit/s≤500 m长距离、老线改造

这张表是常规参考值,具体支持哪几档、能拉多长,以厂家样本和现场实测为准。现场线长吃紧的时候,降一档波特率往往比换电缆便宜,代价只是报文慢一点——单点位置反馈对这点延迟通常不敏感。

现场踩坑提醒:别以为上了数字总线就万事大吉。CANopen 抗干扰比模拟量强,但供电纹波大、屏蔽没接、和变频器动力线同走一根线槽,照样会跳数。电缆屏蔽要焊在插头外壳上、只在控制器一端接地,两头都接反而形成地环流,跳得更厉害。收不到报文,先查节点 ID 冲突和终端电阻,这两个原因占了大半。

现场高频问题一:数值周期性跳变

我们遇到过一个油缸上的传感器,位置读数每隔几秒跳一次,幅度有零点几毫米,换了两根电缆都没解决。拆开线槽一看,新走的信号线和变频器动力线绑在同一根桥架里,屏蔽层又只接了传感器那一端。把动力线和信号线分开走槽、屏蔽改到控制器端单点接地,跳变当场就没了。

这类排障的顺序建议固定下来:先分流,把信号线和动力线分开;再查屏蔽,确认单点接地;然后查供电,量一下 24V 的纹波;最后量终端电阻是不是两个 120Ω。这四步走完还没解决,再回头怀疑传感器本体。

现场高频问题二:完全收不到报文

收不到报文,常见就三件事:节点 ID 和总线上别的设备撞号、终端电阻少装一个或者多装了一个、双方波特率对不上。这三项用一台 CAN 分析仪半小时能查完,比盲换硬件快得多。多台设备共用一条总线时,建议把每个节点的 ID 记在一张表上贴在电柜门内侧,后面加设备的时候一眼就能看出哪个号空着。

常见问题

问:单磁块的 CANopen 位移传感器,PDO 从哪个 cob-id 读?
答:只发一个 PDO,cob-id 是 0x1FF,7 字节:前 4 字节位移低位先发、接着 2 字节速度、末字节 0x00。出厂默认节点 ID 是 0x7F,控制器发 0x01 0x00 就能启动所有节点,或者发 0x01 0x7F 单独启动这一台。

问:德敏哲 CANopen 位移传感器读到 33538,实际位移是多少?
答:原始码值乘分辨率就是实际位移。位移码值 33538、分辨率 0.005mm 时,对应 167.69mm。原始数据是低位先发的,拼字节的时候记得按低字节在前拼,拼反了数就完全不对,而且看起来还挺像那么回事,特别容易蒙过去。

问:CANopen 位移传感器数值跳变,是干扰还是地址冲突?
答:跳变和收不到报文是两码事。跳数多半是干扰或供电问题:供电纹波大、屏蔽没接好、和动力线同走一根桥架都会跳,屏蔽要焊在插头外壳上、只在控制器那一端接地。完全收不到报文才先查地址冲突和终端电阻。两个都排不掉,再用分析仪抓帧看错误计数。

问:闸门开度这种单点反馈,CANopen 用哪一档合适?
答:单磁块异步档。一根测杆一个磁环,启动后传感器自己按事件计时器周期上报位置,不用配 SYNC,配置项少。油缸定位、闸门开度这类单点位置反馈用这一档就够;要两个测点做差值比较的,才需要上同步档。

问:异步档要不要在 PLC 里写同步逻辑?
答:不用。异步档传感器自己按周期推数据,PLC 侧只做两件事:收帧、解析。需要对齐节拍做多轴联动的场合,才要换成同步档并在 PLC 里发 SYNC。选档之前先把测点数量和多轴联动要求想清楚,比装完再改省事。

CANopen位移传感器单磁块异步通讯的节点 ID 规划、PDO 解析与周期设置,易测电气位移传感器工程师欢迎您的咨询。

版权所有:深圳市易测电气有限公司 备案号:粤ICP备19052563号 网安粤公网安备 44030602003587号 技术支持:星海互联