1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
传统的交-直-交变换器由于存在中间储能 环节,因而动态响应较慢,输入电流中含有大量的 谐波,容易造成对电网的污染,同时也难以实现能 量的双向流动等缺点。交-交矩阵式变换器(Ma trix Converter,MC)体积小、自身结构简单,具有能 量双向流通、输出电流正弦性良好、输入功率因数 可控等特点。永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)以其高效率、高转矩惯 量比、高功率密度和低维护费用等特点,使其在现 代交流调速系统中成为了异步电机强有力的竞争 对手 。国内外许多学者提出了很多关于矩阵式变换器供电的IM的直接转矩控制(Direct Torque Control,DTC)的控制策略,但把MC与永磁同 步电动机DTC相结合的应用研究则相对较少。
矩阵式变换器的换流控制必须严格遵循两个 基本原则:一是三相输入侧任意两相电路没有短 路;二是输出侧任意一相电路没有断路。因为这 两个基本原则的限制,所以在矩阵式变换器一共 允许的27种可能的开关组合中,DTC只可以使用 其中的21种(见表1)。其中|u0|和α 0 分别为对 应开关组合的输出电压矢量在定子静止坐标系中 幅值和辐角;表1中前18种开关组合(分别命名 为+1,-1,+2,-2,…,+9,-9,)均为有两输出 相同时连接到同一输入相上,称为运动矢量。表1 中后3种开关组合均实现了输出三相的短路,输 出电压和输入电流均为零,称为零矢量。
矩阵式变换器的调制策略可以主要分为以下三种:
(1) 直接变换法:直接变换法是通过对输入电压的连续斩波来合成“输出电压”的,它可以分为坐标变换法、谐波注入法、等效电导法及标量法,所有这些方法虽各有一定的优越性,但也存在一定的问题,限制了它们的应用范围。如标量法的输入相电流波形较好,但输出谐波较大。
(2) 电流跟踪法。这种方法将三相输出电流信号与实测的输出电流信号相比较,根据比较结果和当前的开关电源状态决定开关动作,它具有容易理解、实现简单、响应快、鲁棒性好等特点,但也有滞环电流共有的缺点:开关频率不够稳定、谐波随机分布,且输入电流波形不够理想、存在较大的谐波等。
(3) 空间矢量调制技术,又称为间接变换法、交—直—交等效变换法,是基于空间矢量变换的一种方法,它将交—交变换虚拟为交直和直交变换,这样便可采用流行的高频整流和高频PWM波形合成技术,变换器的性能可以得到较大的改善。当然具体实现时是将整流和逆变一步完成的,低次谐波得到了较好的抑制,但控制方案较为复杂,缺少有效的动态理论分析支持。它是在矩阵式变换器中研究较多也是较为成熟的一种控制策略,比较有发展前途。这种调制策略既能控制输出波形,又能控制输入电流波形,可改变输入功率因数,是最具有前途的一种调制策略。
3.MATLAB核心程序
x0 = []; str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u) sys = []; function sys=mdlUpdate(t,x,u) sys = []; function sys=mdlOutputs(t,x,u) if u==+1 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=0; S_Bb=1; S_Bc=0; S_Ca=0; S_Cb=1; S_Cc=0; elseif u==-1 S_Aa=0; S_Ab=1; S_Ac=0; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=1; S_Cb=0; S_Cc=0; elseif u==+2 S_Aa=0; S_Ab=1; S_Ac=0; S_Ba=0; S_Bb=0; S_Bc=1; S_Ca=0; S_Cb=0; S_Cc=1; elseif u==-2 S_Aa=0; S_Ab=0; S_Ac=1; S_Ba=0; S_Bb=1; S_Bc=0; S_Ca=0; S_Cb=1; S_Cc=0; elseif u==+3 S_Aa=0; S_Ab=0; S_Ac=1; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=1; S_Cb=0; S_Cc=0; elseif u==-3 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=0; S_Bb=0; S_Bc=1; S_Ca=0; S_Cb=0; S_Cc=1; elseif u==+4 S_Aa=0; S_Ab=1; S_Ac=0; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=0; S_Cb=1; S_Cc=0; elseif u==-4 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=0; S_Bb=1; S_Bc=0; S_Ca=1; S_Cb=0; S_Cc=0; elseif u==+5 S_Aa=0; S_Ab=0; S_Ac=1; S_Ba=0; S_Bb=1; S_Bc=0; S_Ca=0; S_Cb=0; S_Cc=1; elseif u==-5 S_Aa=0; S_Ab=1; S_Ac=0; S_Ba=0; S_Bb=0; S_Bc=1; S_Ca=0; S_Cb=1; S_Cc=0; elseif u==+6 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=0; S_Bb=0; S_Bc=1; S_Ca=1; S_Cb=0; S_Cc=0; elseif u==-6 S_Aa=0; S_Ab=0; S_Ac=1; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=0; S_Cb=0; S_Cc=1; elseif u==+7 S_Aa=0; S_Ab=1; S_Ac=0; S_Ba=0; S_Bb=1; S_Bc=0; S_Ca=1; S_Cb=0; S_Cc=0; elseif u==-7 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=0; S_Cb=1; S_Cc=0; elseif u==+8 S_Aa=0; S_Ab=0; S_Ac=1; S_Ba=0; S_Bb=0; S_Bc=1; S_Ca=0; S_Cb=1; S_Cc=0; elseif u==-8 S_Aa=0; S_Ab=1; S_Ac=0; S_Ba=0; S_Bb=1; S_Bc=0; S_Ca=0; S_Cb=0; S_Cc=1; elseif u==+9 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=0; S_Cb=0; S_Cc=1; elseif u==-9 S_Aa=0; S_Ab=0; S_Ac=1; S_Ba=0; S_Bb=0; S_Bc=1; S_Ca=1; S_Cb=0; S_Cc=0; elseif u==0 S_Aa=1; S_Ab=0; S_Ac=0; S_Ba=1; S_Bb=0; S_Bc=0; S_Ca=1; S_Cb=0; S_Cc=0; end sys = [S_Aa;S_Ab;S_Ac;S_Ba;S_Bb;S_Bc;S_Ca;S_Cb;S_Cc]; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = [];
标签:Ac,Ab,PMSM,Bb,Bc,Ca,simulink,矩阵式,Ba From: https://www.cnblogs.com/51matlab/p/17417038.html