CANopen版本控制产品修改映射PDO对象方法
CANopen版本控制产品修改映射PDO对象方法
CANopen驱动控制器默认可使用8个通道的PDO,每个通道最大支持8个Byte的数据,标准
出厂配置了默认4个通道的数据,另外4个通道为空,为了方便用户自行修改PDO配置或者重新整合PDO通道数据,现将修改配置方案简单介绍如下:
需要用到的硬件工具和软件如下:
一、一体化电机或者驱动控制器(CANopen版本的)
二、CANOPEN-USB转换器/,确保能正常通讯连接
三、对应版本的PNDS软件或者直接用SDO读写
Note: 以下介绍的操作为用我们自带的PNDS软件修改对象字典列表来完成。当然用SDO读写同样可行,方法仍然是对对应的对象做赋值操作。并且保存。
修改RPO步骤说明
一、正确连接PNDS软件,读取刷新Object dictionary数据列表
二、1400配置1600(RPDO);1800配置1A00(T-PDO)
Note:1400的子索引01用于控制RPDO-1是否允许修改,1401的子索引01用于控制RPDO-2是否允许修改。
1800的子索引01用于控制TPDO-1是否允许修改,1801子索引01用于控制RPDO-2是否允许修改。依次类推
三、修改配置R-PDO-1,先把1400:01最高位置1,即把对象字典列表中的最高位修改为8(16进制)
Note:如果用SDO修改,先将1400:01的数据读回来,然后写入最高位修改为8(16进制)(二进制最高位置1)的数据
四、1600:00中的子索引个数先设置为0,
Note:如果用SDO修改,写入1600:00的数据为0
五、配置需要的RPDO-1对象,本例以6040,6081,607a配置到第一PDO通道,步骤如下:
1600:01=0x60600008
1600:02=0x60400010
1600:03=0
1600:04及以后的子索引都为0
Note:对象本身的长度查询手册了解。32位数据用20 16位数据用10 8位长度用08
六、1600:00的子索引个数置为实际个数,本例子为2个
Note:如果用SDO修改,写入1600:00的数据为2
七、修改配置R-PDO-2,先把1401:01最高位置1
将1601:00清零
将1601:01 设置为需要的对象(以607A和6081为例)
1601:01 = 0x607A0020
1601:02 = 0x60810020
1601:03=0 1601:04及以后均需要清零,否则会造成数据溢出
1601:00=2 //实际有效子索引个数
最后把1401:01最高位置0 结束修改
依次方法配置RPDO-3
八、保存1010:01=1702257011、1010:02=1702257011,断电重启,重新连接软件并切换到Object dictionary
确认是否修改成功
SDO保存指令:如下
保存:600+ID 23 10 10 02 73 61 76 65 //通讯参数保存
保存所有参数:600+ID 23 10 10 01 73 61 76 65 //通讯参数保存
查询:600+ID 40 10 10 02 00 00 00 00 //查询1010:02等于1时,保存成功
断电重启,检查。用SDO直接查询1600:01 1600:02 1600:03是否准确
针对以上案例的是使用过程数据举例:
200+ID 01 06 00 //意思等同于6060=1 6040=6
300+ID E8 03 00 00 32 00 00 00 //意思等同于607a=0x3E8 6081=0x32
修改TPO步骤说明
一、正确连接PNDS软件,读取刷新Object dictionary数据列表
二、1800配置1A00(TPDO) //允许修改的配置内部对应关系
1801配置1A01
1802配置1A02
三、修改配置T-PDO-1,先把1800:01最高位置1,即把对象字典列表中的最高位修改为8(16进制)(二进制最高位置1)
四、1A00:00中的子索引个数置为0
五、配置需要的PDO对象,本例606C(真实速度),6064(真实位置)配置到第一PDO通道,
步骤如下:
1A00:01=0x60640020 //32位数据
1A00:02=0x606C0010 //16位数据
1A00:03=0x60410010
六、1A00:00的子索引个数置为实际个数,本例子为3个
七、把1A00:00最高位置0,即把对象字典列表中的最高位修改为0
八、保存(1010:01=1702257011) 、(1010:02=1702257011)),断电重启,重新连接软件并切换到Object dictionary
确认是否修改成功
总结,如果用户希望做以下配置
PLC_TO_电机 | ||||
RX-PDO | 字节数 | 名称 | 数据类型 | 备注 |
PDO1 | byte1 | 工作模式 6060 |
INTEGER8 | 1:定位模式 2:速度模式 3:PV模式 等 |
byte2-3 | 控制字 6040 |
UNSIGNED16 | 控制字 | |
PDO2 | byte1-4 | 目标位置 | INTEGER32 | Target positon |
byte5-8 | 目标速度 | UNSIGNED32 | Target velocity |
电机_TO_PLC | ||||
TX-PDO | 字节数 | 名称 | 数据类型 | 备注 |
PDO1 | byte1-4 | 马达位置 6064 |
INTEGER32 | 电机当前位置 |
byte5 | 实时速度 606C |
INTEGER32 | 606C为当前实时速度,因为数据不会特别大,因此映射低16位即可 | |
byte6 | 状态字 6041 |
UNSIGNED16 |
完整SDO发送过程
SDO发送过程: | 注解 | |
600+ID 23 00 14 01 01 02 00 80 | 1400:01=0x80000200+ID(前面ID举例为1) | |
600+ID 2F 00 16 00 00 00 00 00 | 1600:00=0 | |
600+ID 23 00 16 01 08 00 60 60 | 1600:01=0x60600008 | |
600+ID 23 00 16 02 10 00 40 60 | 1600:02=0x60400010 | |
600+ID 23 00 16 03 00 00 00 00 | 1600:03=0 | |
600+ID 23 00 16 04 00 00 00 00 | 1600:04=0 | |
600+ID 2F 00 16 00 02 00 00 00 | 1600:00=2 | |
600+ID 23 00 14 01 01 02 00 00 | 1400:01=0x00000200+ID (前面ID举例为1) | |
600+ID 23 01 14 01 01 02 00 80 | 1401:01=0x80000300+ID | |
600+ID 2F 01 16 00 00 00 00 00 | 1601:00=0 | |
600+ID 23 01 16 01 20 00 7A 60 | 1601:01=0x607A0020 | |
600+ID 23 01 16 02 20 00 81 60 | 1601:02=0x60810020 | |
600+ID 23 01 16 03 00 00 00 00 | 1601:03=0 | |
600+ID 23 01 16 04 00 00 00 00 | 1601:04=0 | |
600+ID 2F 01 16 00 02 00 00 00 | 1600:00=2 | |
600+ID 23 01 14 01 01 03 00 00 | 1400:01=0x00000200+ID (前面ID举例为1) | |
600+ID 23 02 14 01 01 02 00 80 | 1402:01=0x80000400+ID | 清空第三个通道 |
600+ID 2F 02 16 00 00 00 00 00 | 1602:00=0 | |
600+ID 23 02 16 01 00 00 00 00 | 1602:01=0 | |
600+ID 23 02 16 02 00 00 00 00 | 1602:02=0 | |
600+ID 23 02 16 03 00 00 00 00 | 1602:02=0 | |
600+ID 23 02 16 04 00 00 00 00 | 1602:03=0 | |
600+ID 23 02 14 01 01 04 00 00 | 1402:01=0x00000400+ID(前面ID举例为1) | |
依次清空第四个通道 | ||
600+ID 23 03 14 01 01 02 00 80 | 1403:01=0x80000500+ID | |
600+ID 2F 03 16 00 00 00 00 00 | 1603:00=0 | |
600+ID 23 03 16 01 00 00 00 00 | 1603:01=0 | |
600+ID 23 03 16 02 00 00 00 00 | 1603:02=0 | |
600+ID 23 03 16 03 00 00 00 00 | 1603:02=0 | |
600+ID 23 03 16 04 00 00 00 00 | 1603:03=0 | |
600+ID 23 03 14 01 01 05 00 00 | 1403:01=0x00000500+ID(前面ID举例为1) | |
600+ID 23 10 10 02 73 61 76 65 | 1010:02=1702257011 | 保存通讯参数 |
600+ID 23 10 10 01 73 61 76 65 | 1010:01=1702257011 | 保存所有参数 |
修改T-PDO
600+ID 23 00 18 01 01 18 00 80 | 1800:01=0x80000180+ID(前面ID举例为1) | 配置T-PDO第一通道 |
600+ID 2F 00 1A 00 00 00 00 00 | 1A00:00=0 | |
600+ID 23 00 1A 01 20 00 64 60 | 1A00:01=0x60640020 | |
600+ID 23 00 1A 02 10 00 6C 60 | 1A00:02=0x606C0010 | |
600+ID 23 00 1A 03 10 00 41 00 | 1A00:03=0x60410010 | |
600+ID 23 00 1A 04 00 00 00 00 | 1A00:04=0 | |
600+ID 2F 00 1A 00 02 00 00 00 | 1A00:00=3 | |
600+ID 23 00 18 01 01 18 00 00 | 1800:01=0x00000200+ID (前面ID举例为1) | |
依次配置T-PDO第二通道 | ||
600+ID 23 10 10 02 73 61 76 65 | 1010:02=1702257011 | 保存通讯参数 |
600+ID 23 10 10 01 73 61 76 65 | 1010:01=1702257011 | 保存所有参数 |