STM32G4 Simulink FOC开发实战教程:第十三章Clark变换与代码生成

Bilibili配套视频:

https://www.bilibili.com/video/BV12C4y1f78j/?spm_id_from=333.999.0.0&vd_source=eb375996b1aae493d63fe367f98b306c

文章中同款STM32G4电机开发板及完整代码模型资料,淘宝搜索店铺欧拉电子获取。

1.Clark变换建模 

  • 双击打开 MATLAB软件;
  • 点击Simulink,新建空白模型;
  • 新建子系统,命名为Clark变换;并在子系统中基于公式建立Clark变换模型;
  • 修改模型仿真步长及采样时间;建模->模型设置->类型->固定步长;
  • 增加三相电流生成模块;其中包含theta角度生成模块;生成的theta乘-1为了与Simulink电机模块生成三相电流相位一致;该模块感兴趣的小伙伴可以自行研究一下;
  • 增加示波器,点击运行按钮 ,观察三相电流及变换后的alpha和beta电流;
  • 2.Simulink代码生成及实验现象 

    按以下图片接线,并讲USB转UART模块连接至电脑:

  • 选中所有模型,点击创建子系统,将其封装成同一个模块;
  • 创建数据字典;
  • 将三相电流生成模块中的三个sin计算模块修改成以下配置:
  • 将ia,ib,ic定义为全局的Simulink signal,右键点击信号线,打开属性窗口,方便后续的在代码中观测;
  • 打开数据字典,发现已经建立好ia,ib,ic;模型中ia,ib,ic前方也多了一个叉子形状;
  • 点击模型设置,代码生成,将系统目标文件改为ert.tlc,嵌入式代码生成;
  • 在报告中打开创建代码生成报告;
  • 在硬件实现栏选择ARM CORTEX-M;
  • 在接口栏将代码替换库改成ARM CORTEX-M,选择浮点数;
  • 将Clark_test模型视为原子子单元;
  • 右键该模块,选择嵌入式代码生成;生成过程一直点NEXT即可;
  • 复制第九章 TIM1触发ADC电流采样工程,并打开IOC文件;添加DSP库;
  • 安装流程详细可参考附录二:附录二:STM32CubeMX添加DSP库方法

  • 点击安装DSP库;
  • 安装完成后选中DSP库;
  • 修改uart3的波特率;
  • 生成代码 ,并打开keil工程;
  • 增加宏定义:,__TARGET_FPU_VFP,__FPU_PRESENT,ARM_MATH_CM4
  • 将DSP库由M4l改为M4LF;
  • 在keil工程中新建MATLAB文件夹;并将MATLAB生成的代码放进来;并添加到Keil工程中;
  • 在main.c中包换头文件;注释掉PWM1,2,3通道;注释while循环代码;
    1. ADC中断函数添加以下代码;

    1. 编译并下载代码;打开VOFA上位机;

    作者:欧拉电子

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32G4 Simulink FOC开发实战教程:第十三章Clark变换与代码生成

    发表回复