你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

No.3 FOC SDK5.0电机库软件系统分析  

[复制链接]
子曰好人 发布时间:2018-9-1 14:10
本帖最后由 子曰好人 于 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
硬件错误中断处理函数,和上位机通讯,报告错误信息,方便查找问题。

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


1 收藏 5 评论34 发布时间:2018-9-1 14:10

举报

34个回答
wawjik2008 回答时间:2018-9-1 16:38:32
不错,学习了
dbwu8280 回答时间:2018-9-1 21:04:17
牛!
学习了学习了!
ztx2168 回答时间:2018-9-28 20:04:53
谢谢,楼主能否再给我们讲一下电机的状态机里面的十几个状态都是什么意思?
子曰好人 回答时间:2018-10-1 08:41:53
ztx2168 发表于 2018-9-28 20:04
谢谢,楼主能否再给我们讲一下电机的状态机里面的十几个状态都是什么意思? ...

状态机那几个变量不都有注释吗,翻译一下就明白了
fkxy 回答时间:2018-10-12 11:31:41
牛,很牛。
fkxy 回答时间:2018-10-17 10:42:29
高,高,实在是高。
liujunfy527 回答时间:2018-10-28 09:46:28
谢谢分享
liangchengbao 回答时间:2019-3-3 15:32:43
谢谢您的分享!
gatsby32 回答时间:2019-3-5 22:46:33
老哥 为啥我KEIL下载时出现 no target connect 找了很久原因都找不到
1234下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版