Elmo驱动器:CANopen协议电机PVT模式的PDO映射

本文介绍了在Rhex机器人项目中,为解决电机控制噪音和通信带宽问题,采用Elmo驱动器的CANopen协议电机PVT模式。详细阐述了如何开启PVT模式的PDO映射,包括PDO映射对象的ID和子ID选择,传输模式配置,以及PVT参数对象ID的确定。通过RPDO3配置为异步接收,实现了PVT模式的高效数据传递和连续平稳运动。
摘要由CSDN通过智能技术生成

Elmo驱动器:CANopen协议电机PVT模式的PDO映射

0.前言

最近在做Rhex机器人,该机器人的六条腿部每条腿均只有一个电机,对步态的控制完全依赖于一个电机的控制,使用以前用的比较简单的电机位置PTP(Point to Point)模式时由于每两个点之间驱动器均要进行一次加速减速的过程,而实际的控制过程中对每条腿每个周期的规划是一个整体的加速减速过程,PTP导致电机运动噪音很大(每两个点之间从0加速到最大速度再减速到0,存在很大的冲击),而且在整个周期很短又有六条腿的情况下高频控制对通信带宽要求很高,因此决定采用PVT(Position Velocity Time)模式,即对一个周期内每个位置的速度和两个点直接的时间进行控制,这样就能实现整个周期的连续平稳运动。

1.开启PVT模式的PDO映射

Elmo驱动器预设了CANOPEN协议下的高速PVT模式的PDO映射,即直接通过PDO传输数据,不需要通过SDO访问对象字典的方法对数据进行读写,从而实现主机与从机直接的高效数据传递。
PDO的映射通过客户端(此时应为用户采用的CAN发送模块)向服务端(驱动器)发送SDO指令实现,SDO指令结构如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中字节0为配置数据,字节123为对象字典index和sub-index,字节4567为数据
现在我们想将PDO映射为PVT模式参数,因此先看看使用PDO映射PVT时要在SDO指令中使用的接受PDO映射对象的ID和子ID
在这里插入图片描述
在这里插入图片描述
ID0x1600-0x1603分别对应R-PDO1~R-POD4,每一个ID同时具备两个子ID分别用于指明映射到该PDO的对象个数与映射的对象的ID、子ID和Date。
除此之外,对PDO进行映射时还需要对触发模式进行配置,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此处只需对传输模式进行配置,即sub-ID 2
在这里插入图片描述
由于我们要讲PVT模式参数映射到PDO,因此还需要知道PVT参数的对象ID
在这里插入图片描述
在这里插入图片描述

综合以上信息,此处我们将PVT模式的数据映射到RPDO3,将其配置为异步接收,即不需要同步信号,接收到数据后在驱动器空闲循环立即对数据进行处理,具体配置代码如下

/**
 * @brief SetPVTPDOMapping
 *      将PVT参数(0x2001)映射到RPDO2,用于快速传递PVT参数。
 */

void Driver::SetPVTPDOMapping()
{
   
    can_frame frame;
    memset(&frame, <
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值