网站地图
原理与结构
原理与结构
您的位置: 首页 >> 原理与结构 >> CANopen位移传感器事件计时器SDO配置详解

CANopen位移传感器事件计时器SDO配置详解

发布时间:2026-09-24
CANopen位移传感器事件计时器SDO配置详解

CANopen位移传感器事件计时器是个平时没人注意、却直接决定总线稳不稳的参数。它出厂默认 1ms,节点一多就会把总线占满,实际项目里通常改到几十毫秒一档。改法其实就两步:先发一条 SDO 把运行值改掉,再发一条 SDO 存进 EEPROM,漏掉第二步,一断电就白改。下面按厂家配置范例把报文、索引和反查 node-id 的办法一次讲清。

位移传感器
图:位移传感器现场应用实拍(易测电气)

CANopen位移传感器事件计时器到底管什么

事件计时器(CAN Event Timer)管的是事件触发类报文的发送节拍。传感器位置一变,或者到了计时周期,它就往总线上发一帧事件报文。计时器数值越小,发得越勤;越大,发得越稀。

它不是「采样周期」,别混。传感器内部的测量是一直在跑的,事件计时器只影响它多久往外报一次。所以把这个数改大,位置数据不会变得不准,只是刷新到主控的节奏慢了。

为什么出厂默认的 1ms 要改掉

1ms 意味着传感器大约每秒往总线上发一千帧事件报文。只挂一两个节点、通信不密的时候没什么感觉;可一条 CAN 总线上并了七八个节点,或者主控本身轮询很频繁,这个频率就会把总线带宽吃掉一大块,其他节点的报文被挤、延迟变大,严重的直接丢帧,主控看到的就是「位置数据一顿一顿的」。

现场常见的现象是:单台调试一切正常,整线联调就开始偶发丢帧。原因往往就是多个节点都还挂着 1ms 的出厂默认值。处理办法也简单——把事件计时器统一调到 50ms 左右,总线负载立刻降下来,位置数据的刷新对绝大多数液压和压机动作来说完全够用。

改之前先把原来的值读出来记在本子上。事件计时器、node-id、波特率这三个参数最好一起备份,出问题时能一条条还原回去,比现场重新摸索快得多。

改法:两条 SDO 报文

控制器要主动给传感器发 SDO(服务数据对象,Service Data Object),报文里带三个关键字段:索引(Index)、子索引(Sub-index)和数据。厂家范例里,把事件计时器改成 50ms 是这样发的:

步骤索引子索引数据说明
改运行值0x18000x050x32十进制 50,即 50ms
存 EEPROM0x10100x0173 61 76 65ASCII 就是「save」
接收 SDO——cob-id = 0x600 + node-id主控发给传感器
发送 SDO——cob-id = 0x580 + node-id传感器回给主控
EMCY 反查——cob-id − 0x80 = node-id例:0xFF → node-id 0x7F

第一步发完,传感器会回一条 SDO,表示事件计时器已经改了、也生效了。注意,这时候它只改在运行参数里,还没写进 EEPROM,掉电就回旧值。所以必须补第二步:索引 0x1010、子索引 0x01、数据 0x73 0x61 0x76 0x65,这四个字节正是英文「save」的 ASCII。传感器再回一条 SDO,才算真正存好,下次上电从 EEPROM 读回来的就是新值。

事件计时器两步 SDO 配置流程 控制器(主控) PLC / 上位机 CANopen 传感器 德敏哲 19 / 194 系列 1) SDO 0x1800 / 0x05 = 0x32(改 50ms) 2) 传感器回 SDO:运行值已更改 3) SDO 0x1010 / 0x01 = 73 61 76 65(save) 4) 传感器回 SDO:已存入 EEPROM 关键在第 3 步:漏了它,断电就回到 1ms
图:先改运行值(0x1800/0x05),再存 EEPROM(0x1010/0x01),两步都做完才算改定

cob-id 怎么算,node-id 对不上怎么反查

SDO 的收发靠 cob-id 寻址。传感器作为从节点,接收 cob-id = 0x600 + node-id,发送 cob-id = 0x580 + node-id。node-id 是 1 到 127 之间的数,所以只要知道 node-id,报文 ID 就能拼出来。

如果手上这台传感器没标 node-id,或者在柜子里换过位置不记得了,有个很直接的办法:把它掉电再上电,上电瞬间它会主动发一条 EMCY 报文。这条报文的 cob-id 减去 0x80,剩下的就是 node-id。比如看到 EMCY 的 cob-id 是 0xFF,那 node-id 就是 0x7F(十进制 127,也是不少德敏哲传感器的出厂默认值)。

现场两个常踩的坑

现象:现场调完当场好用,设备一断电重启,事件计时器又回到 1ms。原因就是只发了第一条 SDO 改运行值,没发第二条存 EEPROM。运行参数掉电即丢,这是设计如此,不是传感器坏了。处理:补发 0x1010 / 0x01 的 save 指令,再断电重启验证一次。

现象:总线上三个节点,两个正常,一个老是丢帧。查下来是这个节点的 node-id 和另一个撞了,两条 cob-id 一样的报文在总线上互相打架,主控分不清是谁发的。处理:上电瞬间用 EMCY 反查各节点 node-id,冲突的改掉,再把所有节点的事件计时器统一到同一档位,总线就干净了。

常见问题

问:改了事件计时器,为什么一断电又回去了?
答:只发了第一条 SDO 改运行值,没发第二条存 EEPROM。运行参数掉电即丢,必须补发 0x1010 / 0x01 的 save 指令才会固化。

问:一条总线上挂好几个传感器,事件计时器要一致吗?
答:不强制一致,但建议统一调到差不多的档位,方便主控规划轮询节奏,也避免某个节点发得太密把总线占满。

问:node-id 重复会怎样?
答:两个节点 node-id 一样,cob-id 就撞车,报文互相打架,主控收不到正确数据。上电看 EMCY 反查,确保总线上不重复。

问:事件计时器是不是设得越大越好?
答:不是。设得太大,主控拿到位置数据的间隔变长,快速动作的场合会跟不上。原则是总线负载够用就行,一般几十毫秒一档比较合适。

问:19 系列和 194 系列的配置方法一样吗?
答:对象字典和 SDO 的用法是一致的,索引 0x1800 / 0x1010 都适用。具体支持的子索引范围以对应系列的厂家样本或 EDS 文件为准。

小结

改事件计时器本身不复杂,就是「一条 SDO 改运行值 + 一条 SDO 存 EEPROM」两步走。真正容易翻车的是漏掉第二步,前面白改。总线节点多的项目,建议把事件计时器统一调到合适的档位,位置数据够用,总线的余量也留出来了。

CANopen位移传感器事件计时器与总线配置,易测电气位移传感器工程师欢迎您的咨询。

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