本帖最后由 toofree 于 2018-9-14 08:47 编辑
【STM32电机培训】——4、任务2电机设定程序修改PI参数
任务目标:
1、程序中修改速度PI参数;
2、修改为原始值的2倍,在Workbench中观察参数修改后的速度曲线;
3、修改为原始值的0.5倍,再次观察速度曲线
4、与原始参数的速度曲线对比
PPT文档中给出了必要的函数,及变量定义
这次任务,本人额外使用了NUCLEO-F302R8板上的用户按键。
程序是在上一贴基础上,做适当修改。
【STM32电机培训】——3、任务1电机设定速度、定时启动停止
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617429&fromuid=307297
(出处: 意法半导体STM32/STM8技术社区)
在main.c函数开关,增加一个头文件定义“#include "mc_tasks.h"”,并且增加必要的变量及结构体定义。
增加一个外部函数声明“extern MCT_Handle_t* GetMCT(uint8_t bMotor);”,因为在整个工程中,没有找到任何.h文件中声明过此函数。
增加一个内部函数声明“static void EXTI15_10_IRQHandler_Config(void);”,配置中断,PC13中断,即为NUCLEO-F302R8板上的用户按键中断。
PC13中断配置函数和中断回调函数定义。在中断回调函数中点个板上用户灯LD2,并且对class_cnt全局变量循环赋值,在主函数中要使用变量class_cnt,用作3种状态切换,详见变量定义处注释部分说明。
执行外部中断PC13的初始化,配置电机默认速度,读取默认Kp、Ki参数,初始化中间变量tmp_Kp、tmp_Ki。
class_cnt为0时,正常P和I参数;为1时,2倍P和I;为2时一半的P和I。当然参数也可以在Workbench 中手动修改。
每有一次用户按键操作,class_cnt加1,P和I参数设置变化一次。
下载程序到开发套件中。打开Workbench界面,并与目标板套件连接,
在“监控”窗口下,在打开“Plotter”绘图窗口。当电机启动运行后,即可按一次NUCLEO-F302R8板上用户按键USER B1;在下一次电机启动时,新参数将生效;依次类推,每按下一次按键,状态变化一次。
下图为分别有连续三次按键,所产生的三种状态电机PI参数变化波形。
放大原始波形
放大2倍P和I的波形
放大0.5倍P和I的波形
也可以在IAR下观察相应参数变量的变化。下图为原始参数
2倍P和I的参数
0.5倍P和I的参数
至此,在程序中修改P和I参数任务完成。不知道什么原因,我的套件修改电机参数P和I,出来的现象不太明显,相比其他人的。
按照惯例,程序附上:
P-NUCLEO-IHM001_PI.rar
(8.99 MB, 下载次数: 33)
|