0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析(一)

CHANBAEK 来源:旋转的电机 作者:小师兄 2023-05-23 14:43 次阅读

前言

本章节采用恒压频比的开环控制方法驱动永磁同步电机的转动,首先分析恒压频比的控制原理,然后在Matlab/Simulink中进行永磁同步电机恒压频比开环控制系统仿真分析,最后将Simulink中的恒压频比控制算法生成代码加载到实际工程中进行工程实现。

一、 恒压频比(V/F)控制原理

图片

永磁同步电机恒压频比控制方法与异步电机恒压频比控制方法相似,也是控制电机输入电压与频率同时变化,从而使气隙磁通保持恒定。该控制方法没有电机电流、电压、位置等物理量的反馈,动态性能较差,在给定目标转速发生变化或者负载突变的情况下容易产生失步和震荡的问题,但该控制方法胜在简单,多适用于对转速精度要求不高的场合。

永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真框图如下:

图片

二、永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析

2.1.仿真电路分析

2.1.1.恒压频比控制算法

图片

恒压频比控制算法:永磁同步电机转速与频率的换算关系如下所示:

图片

首先,将设定的电机目标转速通过上式换算为频率,由于该开环控制系统没有自动限制启动电流的作用,因此加入了一个斜坡函数使频率有一个平缓的变化过程。例如仿真中设定的目标转速为1200r/min,换算为频率的过程如下图所示:

图片

然后,由恒压频比V/F控制算法特性(下图所示),使输入电压与频率同步变化,从而保持气隙磁通恒定。低频时Us和Eg都较小,定子电阻和漏感压降所占分量比较显着,不能再忽略,此时人为的把定子电压抬高一些,近似的补偿定子阻抗压降,如下图b线所示:

图片

由上图可知输入电压与频率的关系为(带低频补偿的b线,已知(0,U0)(f1N,UsN)):

图片

将频率通过上式换算为电压,由电机的额定转速计算出额定频率f1N(永磁同步电机转速与频率的关系)。永磁同步电机的恒压频比控制为基频以下调速,系统最高频率不能超过额定频率f1N,例如仿真中所选永磁同步电机的额定转速为12540r/min,计算出额定频率f1N为1463Hz,为系统最高设定频率。

目标转速设置为1200r/min,将转速换算为频率,再由频率的变化得到输入电压的变化,如下图所示:

图片

此处作了一个归一化处理,将电压的变化除以电机额定电压,使输出电压的范围落在[0,1]区间内。

图片

将频率转换为角速度,再对角速度求积分获得当前的角度,如下图所示:

图片

此时已获得输入电压的幅值Um与相角wt,再通过下式将幅值与相角的电压表示转化为两相αβ坐标系下的电压表示:

图片

αβ坐标系下的电压表示为:

图片

接着采用反Clark变换,得到最终输入到电机的三相电压:

图片

2.1.2.输出处理

图片

对恒压频比控制算法的输出电压做处理,使其落在[0,1]的范围内:

图片

2.1.3.主电路

图片

主电路包括逆变电路与永磁同步电机,逆变电路如下图所示,采用Average-Value Inverter模块直接生成三相正弦电压,下图为目标转速1200r/min下输入到电机的电压波形。

图片

图片

永磁同步电机采用BR2804-1700电机(电机的参数用ST Motor Proflier测得),参数如下:

图片

图片

2.2.仿真结果分析

2.2.1.设定目标转速为1200r/min

目标转速与实际转速的波形曲线:

图片

稳态时,目标转速与实际转速的误差:

图片

稳态时,电机定子电流:

图片

电机转子位置:

图片

dq坐标系下的定子电流值:

图片

电磁转矩:

图片

2.2.1.设定目标转速为变化值

目标转速:

图片

目标转速与实际转速:

图片

从图中可以看出电机加减速有一段斜坡时间,电机加减速的快慢由恒压频比控制算法中由转速换算为频率时所设置的斜坡函数斜率有关。

三、永磁同步电机恒压频比开环控制系统代码生成及工程实现

3.1.功能需求

实现永磁同步电机的恒压频比控制,可通过按键调节永磁同步电机的转速。

3.2.硬件设计

图片

控制板:STM32F302R8

驱动板:X-NUCLEO-IHM07M1

永磁同步电机:BR2804-1700

图片

3.3.软件设计

3.3.1.STM32CubeMX底层配置

1、RCC设置外接HSE(Crystal/Ceramic Resonator),时钟设置为72MHz

2、PC10、PC11、PC12设置为推挽输出、无上下拉电阻、高速,初始化状态设为0; PB13设置为推挽输出,下拉电阻、高速,初始化状态为0; PC13设置为输入,无上下拉电阻。

3、设置TIM1时钟源为内部时钟,TIM1_CH1(PA8)设置为PWM输出,TIM1_CH2(PA9)设置为PWM输出,TIM1_CH3(PA10)设置为PWM输出;TIM1预分频值设置为3-1,计数模式选为中央计数模式1,ARR设计为1200-1(1/(1/(72000000/3))*1200=20KHz),内部时钟无分频;使能TIM1更新中断,中断优先级设置为(1,0)

4、USART2设置为异步,115200波特率,8位数据位,无奇偶校验位,1位停止位

5、Project Manager->工程名+IDE配置,Code Generator配置,生成工程代码

图片

图片

图片

图片

3.3.2.应用层与底层的接口开发

图片

Speed_Ref用于设定目标转速;Duty[3]用于接收恒压频比控制算法生成的三相电压,该三相电压作为调制波,TIM1计数器(中央计数模式)作为载波,频率20KHz与Simulink仿真设计一致。调制波与载波进行调制生成PWM,控制三相逆变电路的驱动输出,此处采用SPWM控制方法进行控制;Vmin用于设定恒压频比控制算法中的补偿电压值U0。

3.3.3.Matlab/Simulink恒压频比控制算法代码生成

图片

图片

3.3.4.应用层与底层的代码集成

在主函数中调用:PMSM_VF_initialize()初始化函数。

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
  uint8_t count=0;


  /* USER CODE END 1 */


  /* MCU Configuration--------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();


  /* USER CODE BEGIN Init */


  /* USER CODE END Init */


  /* Configure the system clock */
  SystemClock_Config();


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
  PMSM_VF_initialize();  //Simulink初始化函数


  /* USER CODE END 2 */


  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */


    /* USER CODE BEGIN 3 */
    if(Key_Scany(KEY_GPIO_Port,KEY_Pin)==1)
    {
      HAL_GPIO_WritePin(GPIOC, EN1_Pin|EN2_Pin|EN3_Pin, GPIO_PIN_SET);  //使能三相桥臂

      HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);   //使能三路PWM
      HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
      HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);

        __HAL_TIM_ENABLE_IT(&htim1,TIM_IT_UPDATE);  //使能TIM1更新中断
        __HAL_TIM_CLEAR_FLAG(&htim1,TIM_IT_UPDATE);

      Speed_Ref+=500;
      if(Speed_Ref>=12000)
        Speed_Ref=12000;
    }

    HAL_Delay(1);
    count++;
    if(count%50==0)
    {
      count=0;
      HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);  //程序运行指示灯
    }
  }
  /* USER CODE END 3 */
}

在TIM1更新中断函数中调用:PMSM_VF_step(Speed_Ref, Duty)函数,实现恒压频比控制算法。

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  //Simulink函数 20KHz V/F控制
  PMSM_VF_step(Speed_Ref, Duty);

  for(int i=0;i<3;i++)
  {
    Duty[i]=(1-Duty[i])*htim1.Init.Period;
  }

  TIM1->CCR1=Duty[0];  //进行SPWM控制
  TIM1->CCR2=Duty[1];
  TIM1->CCR3=Duty[2];

}
/* USER CODE END 1 */

3.4.仿真验证

编译下载到开发板观察实验现象

总结

本章节采用恒压频比的开环控制方法驱动永磁同步电机的转动,分析了恒压频比的控制原理,然后在Matlab/Simulink中进行了永磁同步电机恒压频比开环控制系统的仿真分析,最后将Simulink中的恒压频比控制算法生成代码加载到实际工程中进行了工程实现,为后续章节的分析奠定基础。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2924

    浏览量

    228463
  • 永磁同步电机

    关注

    27

    文章

    824

    浏览量

    48931
  • 软件
    +关注

    关注

    67

    文章

    4350

    浏览量

    85638
  • Simulink
    +关注

    关注

    22

    文章

    513

    浏览量

    61570
  • 开环控制系统

    关注

    1

    文章

    8

    浏览量

    5179
收藏 人收藏

    评论

    相关推荐

    Matlab/Simulink中进行永磁同步电机流频比I/F控制系统仿真分析

    本章节采用流频比I/F控制方法驱动永磁同步电机的转动,首先分析流频比I/F的控制原理,然后在Matlab
    发表于 06-08 15:31 710次阅读
    在<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b>中进行<b class='flag-5'>永磁</b><b class='flag-5'>同步电机</b>流频比I/F<b class='flag-5'>控制系统</b>的<b class='flag-5'>仿真</b><b class='flag-5'>分析</b>

    现代永磁同步电机控制原理及MATLAB仿真电子书

    __袁雷编著最新的永磁电机控制书籍高清扫描版带书签本书着眼于现代永磁同步电机控制原理分析
    发表于 03-27 11:30

    【下载】《现代永磁同步电机控制原理及MATLAB仿真》——同步电机MATLAB仿真与技术分析

    `编辑推荐:本书主要介绍三相、六相的永磁同步电机(PMSM)数学建模和矢量控制、直接转矩控制、无传感器控制技术,电压源逆变器PWM技术等,每
    发表于 12-03 14:59

    太实用!永磁同步电机控制方案及MATLAB仿真模型大全

    与数学模型,实现控制系统的设计,并进行仿真;通过实验和仿真研究控制系统电流环、速度环、位置环响应及提高其响应性能的措施,探讨负载扰动、负载转动惯量对
    发表于 06-30 15:17

    永磁同步电机控制原理分析MATLAB仿真应用

    本书着眼于现代永磁同步电机控制原理分析MATLAB仿真应用,
    发表于 08-27 07:00

    永磁同步电机直接转矩控制系统中的MATLAB/Simulink建模方法

    本博客介绍了永磁同步电机直接转矩控制系统中各个怀节的MATLAB/Simulink建模方法,并对系统
    发表于 08-27 06:53

    Simulink永磁同步电机控制仿真系列

    文章目录、实现电流闭环二、实现转矩闭环Simulink永磁同步电机控制仿真系列文章已经发布两篇
    发表于 08-27 07:26

    永磁同步电机控制原理及MATLAB仿真

    【实例简介】现代永磁同步电机控制原理及MATLAB仿真__袁雷编著里的随书附赠的程序【实例截图】【核心代码】随书
    发表于 08-27 08:12

    Ansys Simplorer和Matlab/Simulink联合仿真来实现永磁同步电机的矢量控制

    12.永磁同步电机的矢量控制策略(十二)## 需要注意的几点针对整套控制系统而言,除被控对象外是控制系
    发表于 08-27 07:04

    MATLAB仿真永磁同步电机无位置传感器控制系统的研究与设计

    本文小结下,电机无位置控制中的种--滑模观测器的设计,还有自适应观测器的设计等其他内容,等有时间之后再来总结。现代永磁
    发表于 08-30 06:33

    永磁同步电机控制系统设计

    针对永磁同步电机控制系统设计时,单独采用Matlab建模仿真方式多参数整定繁琐的问题,提出了一种基于Ma
    发表于 03-07 15:06 23次下载
    <b class='flag-5'>永磁</b><b class='flag-5'>同步电机</b><b class='flag-5'>控制系统</b>设计

    永磁同步电机最小损耗控制Simulink仿真

    个赞和收藏吧!   目录 永磁同步电机损耗分析 考虑铁耗的永磁同步电机数学模型 永磁
    发表于 03-14 10:44 44次下载
    <b class='flag-5'>永磁</b><b class='flag-5'>同步电机</b>最小损耗<b class='flag-5'>控制</b><b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b>

    永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析(二)

    本章节是对上一章节的补充,上一章节恒压频比开环控制系统采用SPWM控制方式实现,本章节采用SVPWM控制方式实现,也为后续章节的
    的头像 发表于 05-23 14:44 646次阅读
    <b class='flag-5'>永磁</b><b class='flag-5'>同步电机</b><b class='flag-5'>恒压</b>频比<b class='flag-5'>开环</b><b class='flag-5'>控制系统</b><b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b><b class='flag-5'>分析</b>(二)

    永磁同步电机FOC控制的基本原理及Matlab/Simulink仿真分析

    永磁同步电机控制绕不开FOC,本章节主要介绍FOC控制的基本原理、坐标变换以及永磁同步电机
    的头像 发表于 05-23 14:47 3194次阅读
    <b class='flag-5'>永磁</b><b class='flag-5'>同步电机</b>FOC<b class='flag-5'>控制</b>的基本原理及<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b><b class='flag-5'>分析</b>

    永磁同步电机流频比I/F控制原理及Matlab/Simulink仿真分析

    本章节采用流频比I/F控制方法驱动永磁同步电机的转动,首先分析流频比I/F的控制原理,然后在Matlab
    的头像 发表于 05-24 11:36 1428次阅读
    <b class='flag-5'>永磁</b><b class='flag-5'>同步电机</b>流频比I/F<b class='flag-5'>控制</b>原理及<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b><b class='flag-5'>仿真</b><b class='flag-5'>分析</b>