CANopen是标准协议,可以使用CAN调试工具发送报文下去来控制电机
一、发送读取SDO报文格式如下:Upload SDO message format as follows
600+Node ID
|
CMD
|
Index
|
Sub index
|
00
|
00
|
00
|
00
|
读取SDO时,CMD统一为0x40。
举例:查询5号站点的电机位置,对象为0x600C,发送如下
605 40 0C 60 00 00 00 00 00 // 600C means read position
如果读取成功,反馈回以下格式数据
If read success, the format of feedback data as follow
580+Node ID
|
CMD
|
Index
|
Sub index
|
data
|
data
|
data
|
data
|
|
|
|
|
DATA
|
585 43 0C 60 00 C8 00 00 00// 读到当前位置为200
返回数据中的CMD数据则不同,会根据查询索引的长度有所变化。
0x4F: 一个字节长度 // 1 byte data length
0x4B: 两个字节长度 // 2 byte data length
0x47: 三个字节长度 // 3 byte data length
0x43: 四个字节长度 // 4 byte data length
每个索引的具体长度详见相关说明手册。
The length of index and sub index can be found in relevant Technical Manual.
如果读取失败,则返回读取失败命令
580+Node ID
|
80
|
Index
|
Sub index
|
SDO abort code error
|
二、发送写SDO报文格式如下:Download SDO message format as follows
600+Node ID
|
CMD
|
Index
|
Sub index
|
00
|
00
|
00
|
00
|
|
|
|
|
DATA
|
当发送写SDO报文时,CMD的数值会根据目标索引的长度有所变化。
0x2F: 一个字节长度 // 1 byte data length
0x2B: 两个字节长度 // 2 byte data length
0x27: 三个字节长度 // 3 byte data length
0x23: 四个字节长度 // 4 byte data length
每个索引的具体长度详见相关说明手册。
举例发送速度为200的指令:
605 23 03 60 00 C8 00 00 00 // 6003=200 (200脉冲/秒)
如果写入成功,则反馈如下格式报文
580+Node ID
|
60
|
Index
|
Sub index
|
00
|
00
|
00
|
00
|
|
|
|
|
DATA
|
若写入失败,则返回如下格式报文
580+Node ID
|
80
|
Index
|
Sub index
|
SDO abort code error
|
以PMC007举例发送相关参数,进入速度模式运行,如下:
605 2F 05 60 00 01 00 00 00 //0x6005=1,6005是工作模式寄存器地址,数据类型长度U8
605 2F 08 60 00 07 00 00 00 //6008=7 | 加速度 数据类型长度U8
605 2F 09 60 00 07 00 00 00 //6009=7 | 减速度 数据类型长度U8
605 23 03 60 00 10 27 00 00 //6003=0x2710(10000) 数据类型长度S32
以PMC007举例发送相关参数,进入相对定位位置模式运行,如下:
605 2F 05 60 00 01 00 00 00 //0x6005=0,6005是工作模式寄存器地址,数据类型长度U8
605 2F 08 60 00 07 00 00 00 //6008=7 | 加速度 数据类型长度U8
605 2F 09 60 00 07 00 00 00 //6009=7 | 减速度 数据类型长度U8
605 23 03 60 00 10 27 00 00 //6003=0x2710(10000) 数据类型长度S32
605 23 04 60 00 10 27 00 00 //6004=0x2710(10000) 数据类型长度U32
以PMC007举例发送相关参数,进入相对绝对位置模式运行,如下:
605 2F 05 60 00 01 00 00 00 //0x6005=0,6005是工作模式寄存器地址,数据类型长度U8
605 2F 08 60 00 07 00 00 00 //6008=7 | 加速度 数据类型长度U8
605 2F 09 60 00 07 00 00 00 //6009=7 | 减速度 数据类型长度U8
605 23 03 60 00 10 27 00 00 //6003=0x2710(10000) 数据类型长度S32
605 23 1C 60 00 10 27 00 00 //6004=0x2710(10000) 数据类型长度S32