搜索
查看: 15021|回复: 36

[原创] No.3 FOC SDK5.0电机库软件系统分析

  [复制链接]

该用户从未签到

20

主题

1628

帖子

5

蝴蝶豆

论坛元老

最后登录
2022-6-7
发表于 2018-9-1 14:10:13 | 显示全部楼层 |阅读模式
本帖最后由 子曰好人 于 2018-9-1 22:42 编辑

拿到套件快一周了,线上培训也去听了,任务也做完了,只是一直没有发帖,想通过我的这些帖子让大家更容入门ST的电机库。前两篇帖子做了一些对套件出厂固件和硬件配置做了一个大概的分析,希望对刚接触STFOC SDK的朋友有一定的帮助。今天来分析一下代码结构,带着各位逐步深入理解这份不错的电机库。

如何生成一份可用的工程我就不做过多介绍了,可以参看论坛其他帖子。
文件结构
这是一份使用workbench生成的代码 生成代码.png
工具生成的代码是对套件的硬件和FOC 5.0相关代码的初始化,当我们拿到这份代码时可以通过简单的几行代码让电机快速运行起来。但是作为一名攻城狮,我们更希望能够足够了解这一份代码,代码每一部分做了什么事情,代码的运行流程是怎样的吗,这都需要我们去阅读代码。 文件结构.png
启动文件:我们并不陌生,stm32启动运行到main函数前要做的事情都由启动文件去处理。用户文件:包含主函数,电机控制用户层的api函数,任务函数、电机参数与设置以及用户接口和UI任务。做的都是应用层的事情。HAL库驱动文件:用过hal库写代码的各位对这个文件下下的文件应该都不陌生,hal库隐藏对寄存器的操作,让我们能专注于上层代码开发。系统文件:系统初始化和时钟方面的设置。电机库文件:所有和电机相关的处理都在这里,包括基本的坐标变换、电流电压采样、过压过流保护、sensorless方案的位置速度反馈、PID调节等FOC控制系统必要的代码。额外的功能可以在workbench中选择,比如MTPA(最大转矩每安培)、Flux weakening(弱磁)、Feed Forward(前馈控制)。

状态机
初始化结束之后,整个系统就运行起来了,FOC控制处于待命状态,如果这时候设置速度和启动命令,那么电机就可以启动起来。定时器和ADC采样已经开始运行了。
查看变量初始值.png
进入调试界面,可以查看变了可以看到现在电机所处的状态,0x00,通过查看枚举变量可以看到
变量初始值信息.png
在初始化完毕之后电机进入的状态是IDLE状态。状态的改变是在state_machine.c这个文件中的STM_NextStat的函数中。 状态机函数.png
理解这个状态机函数就能知道整个系统的运行流程图了。需要改变的地方也能得心应手的处理。
中断
给大家一个提醒,调试电机的时候千万不能打断点,可能会造成功率器件损坏。
电机库把系统的所有中断都放在了stm32f30x_mc_it.c这个文件中了。
ADC中断.png
ADC1或ADC2的中断处理函数,运行着一个高频的任务,这个任务是处理ADC采样得到的电流,观测器计算角度,PID控制电流等。ADC3和ADC4没有使用,所以中断函数里也没有执行代码。 定时器中断.png
定时器过零更新中断处理函数,主要用于更新pwm占空比。 刹车中断.png
刹车定时器中断处理函数,主要处理刹车动作发生时定时器的占空比控制和执行任务调度。 串口中断.png
串口中断处理函数,用于和上位机通信。
硬件错误处理中断.png
硬件错误中断处理函数,和上位机通讯,报告错误信息,方便查找问题。

通过以上分析大家应该对整个系统有一个大概轮廓的了解,需要系统做什么任务或者想修改系统的一些处理函数都能找到地方了。
本帖就讲到这里,如果大家有什么问题或者帖子描述有误,请大家不吝指出,欢迎留言讨论 。


评分

参与人数 1ST金币 +5 收起 理由
求知者2017 + 5 赞一个!

查看全部评分

回复

使用道具 举报

该用户从未签到

1

主题

45

帖子

2

蝴蝶豆

高级会员

最后登录
2020-12-1
发表于 2018-9-1 16:38:32 | 显示全部楼层
不错,学习了
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

24

帖子

0

蝴蝶豆

初级会员

最后登录
2021-1-7
发表于 2018-9-1 21:04:17 | 显示全部楼层
牛!
学习了学习了!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

15

帖子

0

蝴蝶豆

初级会员

最后登录
2018-11-10
发表于 2018-9-28 20:04:53 | 显示全部楼层
谢谢,楼主能否再给我们讲一下电机的状态机里面的十几个状态都是什么意思?
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

1628

帖子

5

蝴蝶豆

论坛元老

最后登录
2022-6-7
 楼主| 发表于 2018-10-1 08:41:53 | 显示全部楼层
ztx2168 发表于 2018-9-28 20:04
谢谢,楼主能否再给我们讲一下电机的状态机里面的十几个状态都是什么意思? ...

状态机那几个变量不都有注释吗,翻译一下就明白了
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

78

帖子

0

蝴蝶豆

金牌会员

最后登录
2020-5-22
发表于 2018-10-12 11:31:41 | 显示全部楼层
牛,很牛。
回复

使用道具 举报

该用户从未签到

1

主题

78

帖子

0

蝴蝶豆

金牌会员

最后登录
2020-5-22
发表于 2018-10-17 10:42:29 | 显示全部楼层
高,高,实在是高。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

29

帖子

0

蝴蝶豆

初级会员

最后登录
2018-11-6
发表于 2018-10-28 09:46:28 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

该用户从未签到

0

主题

8

帖子

0

蝴蝶豆

新手上路

最后登录
2019-3-10
发表于 2019-3-3 15:32:43 | 显示全部楼层
谢谢您的分享!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

57

帖子

3

蝴蝶豆

中级会员

最后登录
2019-4-19
发表于 2019-3-5 22:46:33 | 显示全部楼层
老哥 为啥我KEIL下载时出现 no target connect 找了很久原因都找不到
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-27 10:47 , Processed in 1.203661 second(s), 43 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表