
下载地址:
https://resource.hpmicro.com/hpm_apps_v1.8.0.zip
文档路径
本地路径
English: hpm_apps/docs/index.html
中文: hpm_apps/docs/index_zh.html
在线文档:
Englist:https://hpm-apps.readthedocs.io/en/latest/
中文: https://hpm-apps.readthedocs.io/zh-cn/latest/
代码仓库
hpm_apps:
github: https://github.com/hpmicro/hpm_apps
gitee: https://gitee.com/hpmicro/hpm_apps
hpm_sdk:
1、HPM6200四轴伺服驱控方案
・概 述・
HPM6200是来自上海先楫半导体科技有限公司的基于RISC_V内核的32位高性能微控制器。
针对HPM6200系列MCU,先楫半导体推出四轴伺服驱控方案,本方案单轴采用FOC控制,同步计时器实现四轴电机以固定相位差运动。
四轴驱控样机如下图所示。

单轴驱控细节图如下图所示。

本方案测试电机型号信息如下表所示,如选用其他型号电机,需要重新调整PI控制参数相关宏定义即可。
电机型号 | 极对数 | 编码器类型 | 分辨率 |
---|---|---|---|
雷赛智能BLM57050 | 2 | 增量式 | 4000count/r |
・软件方案・
软件设计主要分为四个部分:预定位,速度/位置环,电流环,S曲线,同步计时器,串口通信和USB通信。
其中全局参数如下表所示。
名称 | 说明 | 类型 | |
---|---|---|---|
PI参数 | SPEEDLOOP_KP | 速度环kp | 宏定义 |
PI参数 | SPEEDLOOP_KI | 速度环ki | 宏定义 |
PI参数 | SPEEDLOOP_OUTMAX | 速度环输出最大值 | 宏定义 |
PI参数 | POSITIONLOOP_KP | 位置环kp | 宏定义 |
PI参数 | POSITIONLOOP_KI | 位置环ki | 宏定义 |
PI参数 | POSITIONLOOP_OUTMAX | 位置环输出最大值 | 宏定义 |
运行模式 | OpMode_Typ | 速度:1位置:0 | 枚举 |
速度轨迹规划 | CONSTANT_SPEED_TIME_s | 匀速时间 | 宏定义 |
速度轨迹规划 | MOVE_SPEED | 运动速度r/s | 宏定义 |
速度轨迹规划 | MOVE_ACC | 加速度r/s/s | 宏定义 |
速度轨迹规划 | MOVE_JERK | 加加速度r/s/s/s | 宏定义 |
位置轨迹规划 | MOVE_RELATIVE_POS_r | 绝对运动位置r | 宏定义 |
位置轨迹规划 | CYCLE_CNT | 往返运动次数 | 宏定义 |
位置轨迹规划 | CONTINOUS_RONUD_MOVE_TYPE | 连续往返运动 | 宏定义 |
位置轨迹规划 | SIGNLE_MOVE_TYPE | 单次往返运动 | 宏定义 |
速度轨迹规划 | MULTIPLE_MOVE_TYPE | 多次往返运动(以上三种任选一种) | 宏定义 |
速度轨迹规划 | DWELLTIME_ms | 运行相对距离后停止时间 | 宏定义 |
全局控制 | MOTOR_CONTROL_Global | 结构体 | |
电机参数 | MOTOR_PARA | 结构体 |
具体函数接口如下表所示。
函数接口名称 | 描述 | 调用状态 |
---|---|---|
pwm_sync | 同步计时器 | 伺服初始化 |
pmsm0_foc_angle_align | 轴0预定位 | 伺服启动 |
motor0_highspeed_loop | 轴0电流环 | 50us中断 |
pos_cmd_gene | 位置轨迹规划 | 1ms中断 |
vel_cmd_gene | 速度轨迹规划 | 1ms中断 |
motor_speed_ctrl | 速度/位置环 | 1ms中断 |
・预定位・
上电时,电机转子位置随机,编码器转子位置与电机转子存在固定角度差。因此需要将电机转子位置转到固定位置,此时既知道编码器的位置也知道转子角度。本方案中采用的是在正常运行之前将编码器转子位置与电机转子位置重合的方法。
主要实现步骤分为三步:
电角度90°,逐步增大 d轴电流到限幅;
保持d轴电流,逐步减小电角度至0度;
保持电角度为0度,逐步减小d轴电流至0。
・电流环・
pwm通道产生比较中断,中断内执行电流环。电路环回路主要有两部分工作:
电流幅值更新:ADC采样三相电流,以及经过CLARK,PARK变换后成为DQ轴直流分量。电流环PI控制器控制DQ轴电流
电角度更新:QEI模块获得电机反馈位置,再根据电机极对数计算得出电角度
・轨迹规划・
电机在启停时,速度存在阶跃的情况。电机速度的突变可能会导致电流过载。所以通常用加减速控制算法来规划电机速度。
在本方案中,我们使用的是电机库中的轨迹规划算法——S曲线,通过可变加加速度大小来控制加速度的变化,保证加速度不突变,使得加减速的速度曲线平滑,电机更平稳运行。
这里以运动轴0为例,简单介绍下如何使用电机库中的轨迹规划算法:
(1)添加电机库
将hpm_motor添加到middleware文件夹下
工程引用hpm_motor库
更多细节请查看电机库使用说明文档。(hpm_apps/middleware/hpm_motor/doc)
(2)对配置参数结构体的各成员赋值
定义结构体变量
CMDGENE_PARA cmdpar[4] = {0};
速度模式下
配置cmdpar[0].cmdgene_in_par.velcfgpar
位置模式下
配置cmdpar[0].cmdgene_in_par.poscfgpar
(3)轨迹生成
轴0使能后,在1ms中断内调用轨迹生成函数,获得对应时间序列的速度指令、位置指令
速度模式下:vel_cmd_gene
位置模式下:pos_cmd_gene
(4)轨迹规划重置
API:cmd_gene_disable
清除轨迹规划中间变量,以便再次对用户指定的PTP运动的起点,终点,速度规划算法,计算连接各点的加速度,加加速度,由此再推算出各点的位置,速度。
・速度/位置环・
计时器产生1ms中断,控制速度环/位置环更新:
速度/位置指令
反馈位置/反馈速度
・同步计时器・
通过配置连接到PWM的同步触发输入SYNCI模块,让四个电机以一定的相位差开启运动。
・UART/USB通信・
为了方便用户控制电机,支持用UART或USB调试工具下发运动指令,用户可在cmakelist文件中选择使用UART或USB。MCU根据接收到的运动指令进行相应的运动。
2、Ethercat master 更新
Ethercat 主站使用开源SOEM, 当前版本主要更新以下内容:
优化延时抖动。实测挂载25台从站设备,抖动在20us以内。
优化减少RAM资源使用。
支持在裸机和RTOS下运行。
由于 SOEM 开源协议的限制,故源代码不会放在 hpm_apps 中,请自行下载源代码并放到middleware目录下即可。
SOEM 下载链接:https://github.com/hpmicro/ethercat_soem/releases。
3、其 他
全系列适配SDK1.8.0
修复HPM二级BOOT固件升级方案user_app linker文件缺少变量的问题
修复hpm_monitor服务UART通道DMA传输时地址转换错误的问题
・完 结・
在使用过程中有任何疑问或者建议,欢迎在github对应项目中提交。
问题提交
hpm_apps Issues:
https://github.com/hpmicro/hpm_apps/issues
https://gitee.com/hpmicro/hpm_apps/issues
来源:先楫半导体HPMicro
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。