最近在使用ELMO的驱动器。他家的驱动器里CANopen的PDO映射这些内容似乎是需要规规矩矩地按CANopen协议里写的这样,用SDO的方式去写,而不是像KEB那样可以在电脑软件里全配置好。
当然这些都不是问题,只是上位机里加几行代码的事。一个很让人头疼的问题是,当我试图按照手册修改PDO映射时,驱动器报错0x06040043。这是CANOPEN协议中约定的错误代码,它的含义是General parameter incompatibility,参数不兼容,没头没脑的,让人不知所措。
研究与参考了其他驱动器的手册后,发现问题出现在这里。ELMO手册里给了这样的配置过程,但是实际上这个过程是不完整的。
在相同的目标下,操作过程应该在开头和结尾各加一步,结果是这样。
1.设置0x1800(1)的值为0x80000000+COB-ID
2.设置0x1A00(1)的值为0x60640020
3.设置0x1A00(2)的值为0x2F110010
4.设置0x1A00(3)的值为0x2F120010
5.设置0x1800(2)的值为1
6.设置0x1A00(0)的值为3
7.设置0x1800(1)的值为0x0+COB-ID
多出来的是第一步和第七步。含义是在配置前禁用PDO和在配置后启用PDO。这两步在其他驱动器的配置中是需要的,在ELMO中没说但是实际上也是需要的,可能是CANopen协议规定的操作步骤。我加上之后驱动器就不会报0x06040043的错误了。
当然最好是找一下CANOPEN原始的301协议看看0x1800(1)里面那高几位的含义,配置成自己想要用的样子。ELMO的301协议里没写这几位的含义,但是似乎他们是符合原始的协议的规定的。