CANopen 位移传感器参数修改:波特率、节点地址与事件计时器
CANopen 位移传感器接不上网,十有八九是波特率或节点地址不对。但"不对"只是现象,怎么改过来才是正事。这篇文章把 19 系列 CANopen 磁致伸缩位移传感器三组最常用的 SDO 指令一次给全:改波特率、改节点地址、改 CAN 事件计时器,改完顺手存进 EEPROM,掉电也不丢。
这里的三组指令针对 Germanjet 德敏哲 19 系列(194):0x2010 与 0x300B 是该系列的厂商私有对象。换品牌先查对方手册,节点地址与波特率未必放在这两个索引上。
一、所有修改都走 SDO,存盘那条指令是固定的
先说共同的套路。所有参数修改都走 SDO,格式一致:控制器先发一条 SDO 把新值写进传感器,传感器回一条 SDO 确认;再发一条 SDO 把值存进 EEPROM,传感器再确认一次。存 EEPROM 的这条指令是固定的:索引 0x1010,子索引 0x01,数据 73 61 76 65——这串十六进制正好是 "save" 四个字母。不改完不存,掉电就回到出厂值。
这条存盘指令的命令字有两种写法,资料里两种都出现过:2F 10 10 01 73 61 76 65 和 23 10 10 01 73 61 76 65。0x1010 子索引 1 在对象字典里声明是 32 位,按规范应该用 0x23;用 0x2F 只带 1 字节有效位的写法,设备同样认。两种都能落地,挑一种写死在代码里,别在两条之间来回试——反复保存失败的现场,十有八九是在这两条之间反复。
二、改波特率:只认这四个值
改波特率。SDO 索引 0x2010,子索引 0x00,数据是新波特率。1000kbps 写 03 E8,500kbps 写 01 F4,250kbps 写 00 FA,125kbps 写 00 7D。数据低位先发,所以 1000kbps 的完整指令是 2F 10 20 00 E8 03 00 00。注意只认这四个值,表外的数值别输入,否则传感器会出故障。改完波特率,控制器这边的 CAN 设置也必须同步改成一样的值,两边不一致照样连不上。
三、改节点地址:存 EEPROM 要按新地址算 cob-id
改节点地址。SDO 索引 0x300B,子索引 0x00,数据第 5 个字节就是新地址。比如默认 0x7F 要改成 0x7E,指令是 2F 0B 30 00 7E 00 00 00。这里有个容易踩的坑:确认响应之后,存 EEPROM 那条 SDO 的 cob-id 要按新地址算,0x600 + 0x7E = 0x67E,不能用旧的 0x67F,否则存不进去。
四、改 CAN 事件计时器:负载和刷新率之间取舍
改 CAN 事件计时器。这个参数决定异步模式下传感器多久自发一帧 PDO。SDO 索引 0x1800,子索引 0x05,数据是时间值,单位毫秒。出厂默认 1ms,改成 50ms 就写 0x32(十进制 50),指令是 2F 00 18 05 32 00 00 00。事件计时器改长,总线负载降下来;改短,位置更新更快,按现场刷新需求取舍。
五、cob-id 怎么自己推
再说 cob-id 怎么算。SDO 请求是 0x600 + 节点地址,传感器响应是 0x580 + 节点地址。节点地址 0x7F 时,请求就是 0x67F,响应是 0x5FE。记住这条规则,换任何节点地址都能自己推。
最后说一个实用技巧:不确定传感器当前节点地址时,把传感器断电再上电,它会发出一帧 EMCY 报文,把这帧的 cob-id 减去 0x80,就是节点地址。比如收到 0xFF,减 0x80 得 0x7F。
六、改坏了怎么回出厂
节点地址改成一个不知道的值、波特率改错、事件计时器设成 0 导致不发数,这些情况不用返厂。对象 0x1011 子索引 1 是恢复出厂,写签名 6C 6F 61 64("load")即可,完整指令 23 11 10 01 6C 6F 61 64。
两点要提前知道:恢复之后 node 回到 127、波特率回到订货值,主站那边的设置必须同步改,否则"恢复完就彻底失联";恢复完不会自动存盘,想让改动固定下来还要再发一次 0x1010 的 save。
如果连当前 node 是多少都不知道,SDO 这条路的入口就没了。此时改用 LSS:0x7E5 / 0x7E4 这两条 ID 不随 node 变化,靠厂商号、产品码、版本号、序列号四段身份参数锁定设备,能读当前 node、能改址、能改波特率。CANopen 主站实现里讲了这段流程与自动反推的差别。
三组指令覆盖了现场八成以上的"接不上"问题。改完先存 EEPROM,再断电重启验证,新值生效才算闭环。
参数改完还不通,先回头确认报文时序,见 四类报文一次看懂;地址和波特率两个坑的排查顺序见 接不上网先查地址和波特率;整机选哪种总线,见 按 PLC 本体接口定总线。
常见问题
Q:改完波特率,节点找不到了?
主站还在用旧波特率说话。先把主站切到新波特率、重新扫描总线,再去动传感器。
Q:每次改完都要存 EEPROM 吗?
要。没存进 EEPROM 的值断电就丢。正确顺序是写一个参数、存一次、断电重启、再读回确认。
Q:改了节点地址,主站这边要跟着改什么
三处:接收的 COB-ID、验收过滤器、以及后续 SDO 的目标地址,都要按新节点重算。只改设备不改主站,现象就是“改完就失联”。
Q:存 EEPROM 的写入次数有限,频繁改会写坏吗
正常调试碰不到寿命问题,但不要把存盘放进上电流程里每次都写。改好、验证、再存一次,是正确顺序。
这篇讲的问题,说到底都绕不开磁致伸缩位移传感器本身。磁致伸缩位移传感器产品中心按行程、安装方式与输出接口把全部系列排开,选型从这里进最省事。
← 返回行业动态







