感应(异步)电机磁场定向控制MATLAB/Simulink建模

目录

引言

大家在做电机控制的MATLAB模型仿真与实际实验时,有没有碰到下面的问题:
仿真中的控制参数用在实际实验中,效果很差甚至完全不能用
如果有上述问题,说明你对真实控制器(如DSP、FPGA)与MATLAB模型的关系理解的还不够深入。这篇文章将带你在MATLAB中建立合适的控制模型。
文章中的MATLAB版本为R2016b。

控制器与被控对象的采样周期

电机控制系统中被控对象为逆变器+电机,控制器核心为DSP、FPGA等控制芯片。被控对象是连续的,而控制器通常是周期触发的,也就是离散的。他们两者的采样周期是不一样的,控制系统的采样周期应大于被控对象,因此在仿真中应予以区分。
在Model Properties的Callbacks选项卡下的InitFcn里进行变量初始化,在这里做的好处是,模型中重复使用的参数可以在这里统一修改。
DSP做电机控制通常触发PWM中断来计算,如果是波峰触发或者波谷触发,则每个开关周期计算一次,开关周期就是控制周期。开关频率设为5kHz,则控制周期为200us。
系统仿真步长和被控对象采样周期设为2us,这个值比开关周期越小越好,这里设置相差100倍。但也不能很小,很小的话仿真速度很慢,主要取决于开关周期和电脑性能。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

系统解算器设置

在Model Configuration Parameters里面设置解算器类型为固定步长。由于本文所建立的模型都是离散的,因此解算器设置为离散(无连续状态)。固定步长设为上面提到的Ts。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

被控对象建模

被控对象为直流电源、逆变器和电机。从模型库里选常用的模型即可。需要注意powergui的设置,仿真类型设为离散,解算器类型默认Tustin/Backward Euler (TBE) 即可,有些老版本的MATLAB没有TBE,Tusin也可以。
感应(异步)电机磁场定向控制MATLAB/Simulink建模
感应(异步)电机磁场定向控制MATLAB/Simulink建模

控制器建模

下图是一个典型的间接磁场定向控制模型图,有AD采样、Clarke变换、Park变换、速度PI控制、d轴电流PI控制、q轴电流PI控制、间接磁场定向、反Park变换、SVPWM。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

AD采样

DSP每次进入PWM中断先进行AD采样,这里用了一个零阶保持器(Zero-Order Hold),零阶保持器的采样周期设为控制周期Tsc。从MATLAB的角度看,相当于是把采样周期为Ts的信号变为采样周期Tsc,方便后续信号以采样周期Tsc处理。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

PI控制

模型中采用离散PI控制器,采样周期设为Tsc。这里其实用默认的-1也可以,只要你能理解MATLAB模型里-1的含义,保证前面信号的采样周期为Tsc就行。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

滤波器

一阶低通滤波器的采样周期默认为0,需要改为Tsc。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

积分器

积分器也用离散积分,采样周期设为Tsc。这里其实用默认的-1也可以,只要你能理解MATLAB模型里-1的含义,保证前面信号的采样周期为Tsc就行。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

调制

调制需要特别注意。
如果DSP在载波波峰时触发PWM中断,DSP比较器载入方式设置为波峰载入,在这种情况下,计算需要时间,当前控制周期已经不能将调制波载入比较器,需要等到下个波峰到来才能载入比较器。
而MATLAB在一个采样周期内一次性都计算出来,可以理解为当前控制周期已经能载入调制波了。因此为模拟实际情况,在调制波与载波比较前加入一个开关周期的延时。
三角载波的采样周期,一定要设置为系统步长Ts或者0,这里采用的Repeating Sequence是一个连续模块,即采样周期为0,不需要设置。
感应(异步)电机磁场定向控制MATLAB/Simulink建模

常数及阶跃信号

常数的采样周期默认为inf,可以不用改。阶跃信号的采样周期默认为0,需要改为Tsc。

小技巧

想必大家已经注意到我的模型里模块有不同的颜色,是因为我打开了Display->Sample Time->Colors,不同的颜色代表不同的采样周期,点击Sample Time Legend显示每种颜色代表多少采样周期。
感应(异步)电机磁场定向控制MATLAB/Simulink建模
感应(异步)电机磁场定向控制MATLAB/Simulink建模

总结

本文适合对感应电机FOC有一定基础,对MATLAB仿真与实际控制器的关系有困惑的人。本文的模型只是一个示例,大家需要对自己的控制器处理流程理解清楚,才能建立适合自己系统的模型。尤其要注意调制与主控制的关系。

上一篇:TSC二次开发调用问题


下一篇:vscode 配置typescript环境