技术内容 元器件采购

【资料】 ST MC SDK5.x 电机库软件框架说明资料(共100多页转载ST原厂)

发表于 2019/5/26 19:13:58 楼主

ST MC SDK5.x 电机库软件框架说明资料(共20页转载ST原厂)

资料下载见附件,电脑登入

技术群:124545085


ST MC SDK5.x 电机库软件框架说明

转载:AI电堂作者anST原厂安超)文章

 

前言

在使用 ST MC SDK5.x 库过程中,用户对软件整体全面了解后,开发设计才会得心应手、事半功倍。本文将从系统到软件架构,并对重要的三个任务环路进行细致说明,希望对需要了解 ST 电机库的用户有所帮助。本文默认使用 STM32F30x 产生的工程做文件说明。


内容概括:

1、总体软件架构

2、软件主要环路

3、整体软件框图

4、三大任务流程

5、附录

6、总结




本帖子有更多资源需 登录 才可以下载,没有帐号?立即 注册

相关推荐

收藏 举报 回复

发表于 2019/5/26 19:20:491 楼

1、总体软件架构

MC SDK5.x 包含有芯片外设库,电机库和电机应用层三个主要部分,其中:

芯片外设库使用 ST HAL/LL 库,可被各个层级调用;

电机库则是主要的电机 FOC 控制层;最上层为电机应用层,供客户直接使用电机库,而不去关心底层如何实现的,加快用户程序开发;另外 MC SDK5.x 还提供 UI 库,用于界面调试通讯使用,比如和 Workbench 之间的交互就是通过 UI 库实现;

这里强调的一点是电机库是综合体,包含 FOC 算法,单片机外设配置,中断机制等各个环节,简单控制可能只需要关心电机应用层即可,如果复杂控制将涉及到整体操作。

发表于 2019/5/26 19:21:172 楼

SDK 使用过程中,电机本体、电机控制硬件板、控制管脚、控制策略在 MC workbench 中配置完成,顺序为 MC Workbench -> CubeMx 工程 -> 电机库代码(芯片外设库 + 电机控制库 + 电机驾驶舱 + 用户界面库 + 系统初始化),该生成代码加入简单 API 后(比如 MC_StartMotor1)可以直接运行对应电机,当需要细化控制或者复杂控制时才有可能涉及到修改电机驾驶舱或者电机控制库中的代码

发表于 2019/5/26 19:22:253 楼

1.1 芯片外设库

针对芯片的每种外设都有对应的库函数提供,需要结合 Cube 使用说明调用这些库函数; 电机库必须掌握的外设有 TIMERADCGPIO

1.2 电机控制库文件及其说明

一般来说,普通应用这个部分不会涉及到,如果是在 API 层已经无法满足电机控制的需求时才会考虑修改这个部分,需要对电机运行框架非常熟悉的前提下去进行修改。

1.3 电机驾驶舱

这个部分就是为客户直接使用电机库而准备的,各种 API 函数供用户调用;可以说简单应用或直接使用这些 API 函数足够达成电机控制应用,客户不需要关心底层如何操作,只需要关注自身需要实现哪些必要的功能,使得项目开发更加快速有效。

这里以一个马达控制函数为例:如果双马达控制的第二个马达则将后缀变为 Motor2,比如启动第二个电机的函数名为 MC_StartMotor2(),此处所涉及的除非特别说明,速度即为机械速度。

发表于 2019/5/26 19:22:414 楼

1、软件主要环路

包含有三个主要环路:FOC 环路,安全环路,电机控制环路;虚线方框部分为可选择组件,实现部分为主要组件,可以看到整个控制围绕了电机控制系统的方方面面。

发表于 2019/5/26 19:22:585 楼

3、整体软件框图

可以看到上面的电机控制框图三个环路构成了底层驱动部分,对于整体程序流程上,电机库控制过程都发生在中断中,区别于普通顺序控制流程,也无任务调度;这样做可以将电机控制做到实时控制,因此整个 STM32 产品都可以用于 FOC 控制。

发表于 2019/5/26 19:23:346 楼

3.1 Main函数

main.c 中主要是系统的初始化函数,main 函数更是条理清晰。

3.2 两个重要的中断

3.2.1 ADC 转换完成中断

3.2.1 ADC 转换完成中断

高频任务执行于 ADC 采样转换完成中断,ADC 采样开始由 TIM1 硬件触发,转换完成后进入中断,在这个中断中执行 FOC 坐标变换以及 SVPWM 的执行,最终控制 TIM1 PWM 占空比输出。


发表于 2019/5/26 19:23:487 楼

3.2.2 Systick中断

这个中断默认为 500us 的定时中断,安全任务执行在这个中断中,并且以 500us 为基础,中频任务也执行在这个中断中,比如我们设定的速度环执行为 2ms,实际是 500us*4,也就是四次 systick 中断后执行一次中频任务。

发表于 2019/5/26 19:24:068 楼

4、三大任务流程

4.1 高频任务

高频任务函数位于 mc_task.c TSK_HighFrequencyTask()函数中,执行的是核心 FOC 算法。

发表于 2019/5/26 19:24:219 楼

4.2 安全任务

    所说的安全任务,字面意义已经很明确。这个部分对于过温、过流、欠压、过压保护进行判断,如果触发了上述保护,则会关闭 PWM 输出,复位电机控制参数,同时这个部分也是温度 ADC 采样,母线电压采样,用户 ADC 采样的执行地方。

发表于 2019/5/26 19:24:3510 楼

4.3 中频任务

中频任务执行于 systick 中断中,实际为速度环以及状态机执行地方,同时包含有功率计算,如需要增加个人状态机,这个地方为添加点,同时注意根据传感器不同,平均速度获取函数也不同。

0/3000





举报

请选择举报类别

  • 广告垃圾
  • 违规内容
  • 恶意灌水
  • 重复发帖

全部板块