请选择 进入手机版 | 继续访问电脑版
搜索
查看: 3394|回复: 9

[原创] 【STM32电机培训】——4、任务2电机设定程序修改PI参数

[复制链接]
  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2018-9-10 00:57:20 | 显示全部楼层 |阅读模式
    本帖最后由 toofree 于 2018-9-14 08:47 编辑

    【STM32电机培训】——4、任务2电机设定程序修改PI参数



    任务目标:
    1、程序中修改速度PI参数;
    2、修改为原始值的2倍,在Workbench中观察参数修改后的速度曲线;
    3、修改为原始值的0.5倍,再次观察速度曲线
    4、与原始参数的速度曲线对比
    01.jpg


    PPT文档中给出了必要的函数,及变量定义
    02.jpg




    这次任务,本人额外使用了NUCLEO-F302R8板上的用户按键。
    03.jpg


    程序是在上一贴基础上,做适当修改。
    【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"”,并且增加必要的变量及结构体定义。
    04.jpg


    增加一个外部函数声明“extern MCT_Handle_t* GetMCT(uint8_t bMotor);”,因为在整个工程中,没有找到任何.h文件中声明过此函数。
    增加一个内部函数声明“static void EXTI15_10_IRQHandler_Config(void);”,配置中断,PC13中断,即为NUCLEO-F302R8板上的用户按键中断。
    05.jpg


    PC13中断配置函数和中断回调函数定义。在中断回调函数中点个板上用户灯LD2,并且对class_cnt全局变量循环赋值,在主函数中要使用变量class_cnt,用作3种状态切换,详见变量定义处注释部分说明。
    06.jpg


    执行外部中断PC13的初始化,配置电机默认速度,读取默认Kp、Ki参数,初始化中间变量tmp_Kp、tmp_Ki。
    07.jpg


    class_cnt为0时,正常P和I参数;为1时,2倍P和I;为2时一半的P和I。当然参数也可以在Workbench 中手动修改。
    每有一次用户按键操作,class_cnt加1,P和I参数设置变化一次。
    08.jpg


    下载程序到开发套件中。打开Workbench界面,并与目标板套件连接,
    09.jpg


    “监控”窗口下,在打开“Plotter”绘图窗口。当电机启动运行后,即可按一次NUCLEO-F302R8板上用户按键USER B1;在下一次电机启动时,新参数将生效;依次类推,每按下一次按键,状态变化一次。
    下图为分别有连续三次按键,所产生的三种状态电机PI参数变化波形。
    10.jpg


    放大原始波形
    11.jpg


    放大2倍P和I的波形
    12.jpg


    放大0.5倍P和I的波形
    13.jpg


    也可以在IAR下观察相应参数变量的变化。下图为原始参数
    14.jpg


    2倍P和I的参数
    15.jpg


    0.5倍P和I的参数
    16.jpg


    至此,在程序中修改P和I参数任务完成。不知道什么原因,我的套件修改电机参数P和I,出来的现象不太明显,相比其他人的。

    按照惯例,程序附上:
    P-NUCLEO-IHM001_PI.rar (8.99 MB, 下载次数: 33)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
     楼主| 发表于 2018-9-10 01:07:55 | 显示全部楼层
    5000转时,1、2、0.5波形分别如下:
    21.jpg


    22.jpg


    23.jpg


    1500转时,1、2、0.5波形分别如下:
    24.jpg

    25.jpg

    26.jpg



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
     楼主| 发表于 2018-9-10 09:36:19 | 显示全部楼层
    在中断处理文件中,需要加条中断10到15的服务,在主贴附件工程中已加,忘了在主贴中说明。
    在文件“stm32f30x_mc_it.c”中
    傲游截图20180910093205.png


    1. /* USER CODE BEGIN 1 */
    2. void EXTI15_10_IRQHandler(void)
    3. {
    4.   HAL_GPIO_EXTI_IRQHandler(Start_Stop_Pin);
    5. }


    6. /* USER CODE END 1 */
    复制代码
    一定要在“/* USER CODE BEGIN 1 */”与“/* USER CODE END 1 */”之间加,其它地方加的,再次生成CubeMX工程时可能会被干掉。


    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    1786

    帖子

    0

    蝴蝶豆

    论坛元老

    最后登录
    2023-7-8
    发表于 2018-9-10 09:48:45 | 显示全部楼层
    学习了!
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    54

    帖子

    0

    蝴蝶豆

    高级会员

    最后登录
    2021-3-17
    发表于 2019-1-5 10:54:11 | 显示全部楼层
    本帖最后由 YapRan 于 2019-1-5 11:01 编辑

    请问波形图,红色设Speed Reference部分,结合了楼主上个帖子看了一下,应该是与电机启停的操作有关,可是电机停止的话,Speed Reference为什么不在0位呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    1628

    帖子

    5

    蝴蝶豆

    论坛元老

    最后登录
    2022-6-7
    发表于 2019-1-6 09:45:28 | 显示全部楼层
    YapRan 发表于 2019-1-5 10:54
    请问波形图,红色设Speed Reference部分,结合了楼主上个帖子看了一下,应该是与电机启停的操作有关,可是 ...

    软件生成的代码在电机停机后没有对speed reference变量进行清零操作
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    54

    帖子

    0

    蝴蝶豆

    高级会员

    最后登录
    2021-3-17
    发表于 2019-1-14 15:27:30 | 显示全部楼层
    子曰好人 发表于 2019-1-6 09:45
    软件生成的代码在电机停机后没有对speed reference变量进行清零操作

    感谢回复,初步清楚了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    39

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2019-7-2
    发表于 2019-2-26 19:07:25 | 显示全部楼层
    感谢楼主提供的资料,收藏学习了,过段时间准备做个PI环的精调GUI小应用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    21

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2019-10-15
    发表于 2019-2-27 10:34:51 | 显示全部楼层
    不错,讲解清晰
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    70

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2021-5-11
    发表于 2019-7-1 14:58:33 | 显示全部楼层
    不错,学习了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-3-29 19:52 , Processed in 1.191468 second(s), 42 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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