CANopen位移传感器改参数:194系列事件计时器范例

CANopen位移传感器改参数,坑不在改,而在存。改值那一步传感器会回你“已生效”,可值还待在RAM里,一断电就弹回原值;真正让它记住,得再补一条保存SDO。下面拿194系列把CAN事件计时器从默认1ms改成50ms做例子,把报文、索引、判据一次讲全。

CAN 事件计时器管的是什么
CANopen里,事件计时器(Event Timer)管的是PDO什么时候往外发。194系列出厂默认1ms,位置一变,传感器最快每1ms就推一帧PDO。轴少、总线闲的时候无所谓;节点一多,1ms一帧就是抢总线,主站收到的帧挤成一片,丢帧和延迟都跟着来。
把它改大,等于给总线松绑。从1ms改成50ms,PDO最多50ms推一帧,位置该传的还是传,总线负载却降了一大截。代价是实时性变松,所以这个值要按控制周期来定,别拍脑袋。
CANopen位移传感器改参数:改值一步,落盘一步
假设传感器node-id是0x7F,也就是工厂设置。第一步改值:控制器发一条SDO,索引0x1800、子索引0x05,数据0x32(十进制50),把CAN事件计时器改成50ms。
传感器收到会回一条SDO,表示“已变更并生效”。注意,只是生效,还没进eeprom。这时候断电再看,它又回到1ms。第二步落盘:控制器再发一条SDO,索引0x1010、子索引0x01,数据0x73 61 76 65——按ASCII念就是save。传感器回一条SDO,表示值已经存进eeprom。
| 步骤 | SDO 索引 / 子索引 | 数据 | 作用 |
|---|---|---|---|
| ① 改值 | 0x1800 / 0x05 | 0x32(十进制 50) | CAN 事件计时器改为 50ms |
| ② 落盘 | 0x1010 / 0x01 | 0x73 61 76 65(save) | 写进 eeprom,掉电不丢 |
四帧报文,哪一帧都不能省
把上面两步拆成总线上的四帧,看得更清楚。序号1、2是改值,3、4是落盘。cob-id按node-id算:控制器发出的cob-id=0x600+node-id,传感器回应的cob-id=0x580+node-id。
| 序号 | 发送者 | cob-id | dlc | data | 说明 |
|---|---|---|---|---|---|
| 1 | 控制器 | 0x67F(0x600+0x7F) | 8 | 2F 00 18 05 32 00 00 00 | 写 0x1800/05=0x32,即 50ms |
| 2 | 传感器 | 0x5FF(0x580+0x7F) | 8 | 60 00 18 05 00 00 00 00 | 应答:已改,但只在 RAM |
| 3 | 控制器 | 0x67F(0x600+0x7F) | 8 | 23 10 10 01 73 61 76 65 | 写 0x1010/01=save |
| 4 | 传感器 | 0x5FF(0x580+0x7F) | 8 | 60 10 10 01 00 00 00 00 | 应答:已存 eeprom |
命令码顺手认一下:0x2F是写1字节,0x23是写4字节,0x60是应答成功。第2帧回的是“写成功”,不是“已保存”——这两个词差在哪,就差在掉不掉电。
cob-id 是算出来的,不用背
很多人换到别的设备上就不会发了,理由基本一样:cob-id没跟着node-id改。规则就两条,控制器发出去的cob-id=0x600+node-id,传感器回过来的cob-id=0x580+node-id。
节点0x7F只是出厂设置,实际项目里node-id都是排过的。比如你把节点改成0x10,那控制器就发0x610、传感器回0x590,四帧里的cob-id一起换,索引和子索引都不动。
不知道手上这台node-id是多少,也有笨办法:让它断电再上电,传感器会主动发一帧EMCY。把这帧EMCY的cob-id减去0x80,剩下的就是node-id。这招在现场很好使,比翻手册快,尤其是设备已经装进柜子、铭牌看不清的时候。
改完要断电复验,收尾动作别省
四帧走完,CAN事件计时器就已经改好并存在eeprom里了。断电再上电,传感器会自己从eeprom取回这个值。
复验按三步做,两分钟的事:一是断电十几秒再上电,读一次0x1800/05,确认是0x32;二是抓一段总线,看PDO的推送节奏是不是慢了、总线负载有没有降下来;三是如果总线上还挂着别的节点,确认它们没被这台的节拍带偏。
常见问题
问:CANopen位移传感器改参数,为什么改了不存就等于没改?
答:SDO写进去的是运行内存,传感器回你“已生效”是真生效了,但它没落到eeprom。一断电,上电时它从eeprom取旧值,看起来就像白改。所以改值之后必须再发一条0x1010/01=save的SDO。
问:CAN 事件计时器从 1ms 改到 50ms,会不会影响测量精度?
答:不影响位置值本身,影响的是上报的节拍。50ms意味着最快50ms更新一次,比这更快的变化就会被漏掉。控制周期在10ms以内的场合别改这么大;反过来,节点多、总线吃紧的场合,适当放大反而更稳。
问:保存 SDO 的数据为什么是 0x73 61 76 65?
答:这四个字节按ASCII读就是s、a、v、e,CANopen里拿它当“保存”的暗号。别写成别的数字,写错了传感器会回一帧错误应答,值也不会存进去。
问:换到别的 node-id 设备上,报文要怎么改?
答:索引和子索引都不动,只改cob-id。控制器发的是0x600+node-id,传感器回的是0x580+node-id。node-id不知道就用EMCY反推:EMCY的cob-id减0x80。
问:保存之后还想改回去,怎么做?
答:把0x1800/05写回0x01(也就是1ms),再发一次0x1010/01保存,同样要断电复验。参数不会自己回默认值,除非做恢复出厂设置。
CANopen位移传感器改参数、报文抓包与总线调试,易测电气位移传感器工程师欢迎您的咨询。
推荐文章
- 磁致伸缩位移传感器冗余方案怎么做:一壳双测量、双路供电与交叉校验[2026-10-13]
- 磁致伸缩液位计最高可耐温度是多少:电子仓、介质与隔热做法[2026-10-12]
- 机床位移传感器怎么选:磨床、电火花与数控轴定位[2026-10-08]
- 位移传感器IP防护等级怎么选?别只盯着IP67[2026-10-04]
- 耐腐蚀位移传感器怎么选:材质、密封与电缆[2026-10-01]

