您的当前位置:首页正文

simulink中异步电机VVVF+PWM启动,同步电机空间矢量控制

2023-11-17 来源:九壹网
机电动力系统分析与仿真作业题目

一、一台三相异步电动机,PN3kW,UN380V,IN5.4A,f1N50Hz,nN960r/min,定子Y接,Ls。试0.306H,Lr0.310H,Lm0.296H,rs2.08,rr1.525,J0.25kg.m2(含轴系)

针对不同负载工况

Ⅰ:理想空载(TL0)

Ⅱ: 恒定负载(TL0.5TN) 和不同电流控制模式

Ⅰ:定子电流自由变化(不限幅)

*3 Ⅱ:定子电流限幅控制,I1max 分别考察以下三种起动方案

Ⅰ:直接起动,普通交流电源供电(正弦波,恒幅恒频)

Ⅱ:变频起动,理想VVVF电源供电(正弦波,调幅调频)

** * 设频率变化规律为f1*nf1n1k1t(f1nmax1,k1为斜率,自定)

且电压与频率关系为U1*k21k2f1*n(k2为补偿电压,亦自定) Ⅲ:变频起动,SPWM逆变器供电(DC-AC,脉宽调制波,调幅调频) * 建议载波频率>=1000Hz,调制频率及基波电压变化规律方案Ⅱ * 建议进而尝试转子恒磁链矢量控制方案

的机电动态过程(组合=工况2模式2方案312)。要求给出仿真分析模型,图示并讨论仿真结果,综述结论与体会。

二、结合一篇介绍机电控制系统仿真研究结果的论文(建议优先选择国外知名期刊最新发表的文章),尝试:

①重复仿真过程,再现仿真结果。

②对模型、算法、结果和结论进行综合评述。

答:

一、三相异步电动机实验及探讨其13种情况 1.建立电机的数学模型

为了消除分析过程中出现的电感矩阵的时变因素,简化电机的分析。首先,我们需要建立绕线式异步电机矢量控制变速恒频发电系统的分析模型。选定同步速参照系,并假定定子侧正方向服从发电机惯例,转子侧服从电动机惯例。假定电机气隙均匀,定转子三相对称。

1.1 参照系理论(坐标变换)

三相静止参照系(a-b-c)和任意速旋转参照系(d-q-n)之间的关系如图1所示。

b q  n d a  c

图 1 三相静止参照系(a-b-c)与任意速旋转(d-q-n)参照系之间的关系

不失一般性,设参照系d、q轴在abc平面以任意速旋转,d轴与a轴之间的夹角为(见图 ),初始角为(0),则a-b-c到d-q-n参照系变换(这里的变换为等幅变换)为

cosfd2fq3sinfn12t022)cos()33fa22 (1-1)

sin()sin()fb33fc1122cos((t)(0)()d (1-2)

以上式中,为积分变量,fn称为中轴分量,与三相不对称有中线系统相关。

不难导出,d-q-n轴系到a-b-c静止坐标系的反变换为

- 1 -

cossin1fafdfcos(2)sin(2)1f (1-3) bq33ffcn22cos()sin()1331.2 电机在同步旋转坐标系d-q-n下的数学模型

本题采用的是同步旋转坐标系,假定电机气隙均匀,定转子三相对称,则电机的磁链方程和电压方程为:

dsLsidsLmiqr (1-4)

qsLsiqsLmiqr (1-5)

drLmidsLridr (1-6)

qrLmiqsLriqr (1-7)

udspds1qsrsids (1-8)

uqspds1dsrsiqs (1-9)

udrpdr2qrrridr (1-10) uqrpqr2drrriqr (1-11)

式中,2为转差角频率,其定义为2电机的电磁转矩和转子运动方程为:

1rs1 (1-12)

Te1.5pLm(iqsiqridsiqr) (1-13)

p2p(TeTm)/J (1-14)

接着,我们建立该系统的数值仿真模型。将电压方程变成标准状态方程形式,综合(1-1)到(1-14)式,变速恒频发电机的状态方程为:

XAXBU (1-15)

式中,

t(,,,,)Xiiiidsqsdrqr2 (1-16) ttU(uds,uqs,udr,uqr,Tm)(0,Us,udr,uqr,Tm) - 2 -

0LrLm00000LrLm1BLm0Ls00000LLms000b50a1r1Lma2rsLra1a2rrLmrsLr1ArsLma3rrLsa4a4rrLsa3rsLm00a5iqra5idr上式中有

(1-17)

00000pb5J2LsLrLm2a11LsLr2Lm (1-18) a2LrLm(12)aLL()sm123a41L2m2LsLra51.5pLmb5

2.建立电机的仿真模型

2.1 异步电机仿真模型

综合(1-1)到(1-18)式,异步电机的matlab仿真模型如下:

图2 电机的仿真模型

这里根据上面提到的方程,用S函数编程编写了两个分别名为tongyong2和ybdj的M文件来表示电机仿真模型(具体程序见附录1).

从图2中可以看出,这个模型有五个输入,分别为输入的定子三相电压,参照系的旋转速度,

- 3 -

负载转矩;有6个输出,分别为定子,转子的d,q轴电流,转子旋转的电气角速度,电磁转矩。另外为了便于修改参数,将图2中整个模型用S函数模块封装起来,其封装后的电机参数课可通过图3所示的对话框输入。

图3 封装后的电机参数输入框

2.2 理想的VVVF电源模型

一般大电机直接起动时,对电机会造成很大的电流冲击,大的起动电流会造成线路和电机内部产生损耗而引起发热,严重时会烧坏电机。而理想VVVF电源可以减小电机的起动电流,使电机缓慢起动,可以改善电机的启动性能。

实际中的理想电源是通过机组获得的,如可以用一个异步电动机-直流发电机机组去带动一个直流电动机-同步发电机机组,通过改变直流电动机的电枢电压和同步发电机的励磁电压按一定规律变化,就可以得到理想的VVVF电源。

理想VVVF电源是这样一个电源,它的电源按某个规律变化,如本题中加在电机上的电源频率是按变化的,其中为电源频率变化的斜率,而输出的电源的电压幅值跟电源的频率又有一个对应关系,如本题中的Kf。因此,变频电源,是一个频率随着时间变化的,当然这个频率一般是有个上限的,而电源的电压幅值又是随着频率,或者说是时间的变化而变化,并最终达到某个值的一个正弦变压变频电源。

有了上面电压幅值和频率的关系,我们就可以在simulink中搭出这样的一个功能模块,这个模块实现的生成一个可变的频率和一个与这个频率成某一关系的电源幅值,然后通过正弦和余弦模块,将电源的幅值和频率合成一个相电源,而其他两相电源形式也是一样的,只是在相位上相差一个固定的角度(120o),这种方法是搭模块的方法,而本题用S函数编程编程生成电源的幅值和频率,然后用模块完成电源的生成。其仿真框图如图4所示。

- 4 -

图4 理想VVVF电源

图4中,VVVFnew模块是用S函数编程的,其实现的是电源电压幅值和频率的生成(S函数

程序详见附录2)。Uabc是一个子系统,其实现的是三相变压变频电源的生成。其子系统如图5所示。

图5 Uabc子系统框图

直接运行该模块得到如下直线上升的电压幅值和频率:

- 5 -

2.3 PWM变压变频电源

由于理想的VVVF变频电源一般是比较大型的机组,其占地面积大,不是随时随地都能得到的。而实际应用中,变频器一般都是经过PWM调节后得到的电源。

PWM变频电源,采用的是脉宽调制的方法,其依据是电力电子中学过的冲量定理,即用一系列等幅不等宽的脉冲去等效一个正弦电源,其等效的条件是二者作用在惯性环节上的效果是相同的。而这些等幅不等宽的脉冲,是通过调制波和载波比较,调制得来的。本题采用的是SPWM调制方式。

用S函数编程编写了SPWM信号发生器(具体程序见附录3).

图6 SPWM仿真框图

把普通交流电源作为输入,运行上图的s函数模型后,Ua0所的波形如下:

3.系统的主要仿真框图和控制部分

3.1 系统的仿真框图

对于题目中所提到的12种以上的条件,我用一些基础模型组合成这12种条件,基础模型有三个。第一个模型是,对电机进行直接加正弦电源起动(如图8所示),其目的是为了和下面两种模型进行对比。另外两种模型分别是理想电机在VVVF作用下的变频起动过程(如图9所示)以及PWM逆变器作用下的变频起动过程(如图10所示)。

- 6 -

图8 电机直接起动的仿真框图

图9 理想VVVF的变频起动过程

图10 PWM逆变器的变频起动过程

这里,要注意,图10中与图9中输入到电机的电压来源有所区别,其区别在于:图9中Uabc模块输出的电压是直接供给电机的,而图10中的相应模块,先送到SPWM模块中,通过SPWM函数生成SPWM信号给逆变器,再将逆变器输出的电压加到电机上。设置载波为三角波,载波频率为1KHz,幅值为1。

用S函数编程编写了SPWM信号发生器和逆变器inverter的M文件(具体程序见附录3和附录4).

3.2 控制部分介绍

图11为本题用到的电流闭环(变压变频)控制的原理框图。

图11 电流闭环变压变频控制原理框图

上图中的控制原理框图,其电流环实现电机电流的限幅。

电流环部分是为了限制电机的电流不超过额定值的三倍,为此可以设计一个反馈控制,将实时检测到的电机定子电流标幺值与三倍电流标幺值相减,当差值大于0时,将差值送到一个PI调节

- 7 -

器,产生一个差值电流所对应的电压信号,再将这个信号与输入的电源电压相作用,便可实现电流的限流,另外和一般的反馈控制不一样,这里有一点需要注意,当电机电流比3小的时候,系统是不调节的,也就是说上面说到的PI环节是不能起作用的。基于上面分析,给出如图13所示的电流的限幅环节,该图中那个名为xianliu的S函数模块就是为了实现,电机电流和给定值的比较,通过判断其输出的值是否大于0,决定电流限幅环节是否要起作用,其中PI调节器中Ki取27,Kp取5000其程序内容见附录5。

图13 电流限幅模块

4. 13种情况仿真结果与分析

4.1 普通交流电源供电,空载直接起动过程

普通交流电源供电的仿真框图如图8所示,选用ode45算法。之所以加了个delay环节,是为了将波形平移(波形在0位置处的信息量很大),把输入的负载设为0N.M,即空载启动 。

把电机输出的d、q轴定子电流标幺值分别平方,再开根号,得到定子电流综合矢量的幅值Im*。用它来观察和控制定子电流小于3.

其仿真结果如图14和图15所示。

图14. 空载启动时电流、电磁转矩、转子转速波形

- 8 -

图15. 空载启动时电磁转矩、转子转速波形放大图

从图15可以看出电机在普通交流电源供电,电机空载启动时,在0.66秒左右能达到1000r/min(由于这里取TL=0,且不考虑转子的阻尼作用,因此仿真的时候,电机的转速可以达到1000r/min,而实际中空载起动时转速是达不到1000的,而是接近这个值);起动过程中电机的转矩上下快速波动,最后稳定在到Te=0, 符合输入的负载TL=0 N.M,该过程中最大转矩在80N.M附近,是额定转矩(29.8416N.M)的2.7倍.

从图14可以看出起动过程中Im*最大值接近10,远远超过了规定的3,这是不允许的,会对设备和系统有不良损害。

4.2 普通交流电源供电,恒定负载0.5TN直接起动过程。

设输入负载为14.9208N.M,即 0.5TN ,选用ode45算法,其仿真结果如图16和图17所示。

图16. 0.5TN时电流、电磁转矩、转子转速波形

图17. 0.5TN时电磁转矩、转子转速波形放大图

从图16、17可知,电机在普通交流电源供电,半额定负载启动时,在1秒左右就能达到980r/min,

- 9 -

比空载时启动速度要慢,这是由于电机带载;起动过程中电机的转矩上下快速波动,最后稳定到到Te=15N.M, 符合其带载14.9208N.M。该过程中最大转矩在80N.M附近,是额定转矩(29.8416N.M)的2.7倍,和空载时的最大转矩几乎相同.

从图16可以看出起动过程中Im*最大值接近10,远远超过了规定的3,这是不允许的,会对设备和系统有不良损害。

4.3 理想VVVF(正弦波)供电,空载变频起动过程

VVVF正弦波电源供电的仿真框图如图9所示,选用ode45算法。在VVVFnew这个s函数中,设置K=0.88,K为电压幅值随频率变化系数;设置Kf=1,Kf为频率的上升斜率,把输入的负载设为0N.M,即空载启动 ,其仿真结果如图18和图19所示。

图18. 空载启动时电流、电磁转矩、转子转速波形

图19. 空载启动时电磁转矩、转子转速波形放大图

从图18、19可以看出电机在VVVF交流电源供电,电机空载启动时,在1.1秒左右就能达到1000r/min,启动速度比普通交流电源时的0.66s要慢,部分原因可能是Kf值较小。

起动过程中电磁转矩仍有波动,但整体变化较平稳,波动幅度和频率比普通交流电源供电时小很多,最后稳定在到Te=0, 符合输入的负载TL=0 N.M,该过程中最大转矩在50N.M附近,是额定转矩(29.8416N.M)的1.67倍,这个值相应比普通交流电源供电的2.7倍要低。虽然最大转矩没有

- 10 -

普通交流电源起动时大,但是提高了起动过程的平稳性。

从图14可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值可达20,远远超过规定值3。没有比普通交流电源供电的情况更好,这个系统还需要改进。

4.4理想VVVF(正弦波)供电,恒定负载0.5TN变频起动过程,无电流幅值限制

理想VVVF电源供电的仿真框图如图9所示,运用ode45算法。把输入的负载设为14.9208N.M,即半额定负载启动 ,其仿真结果如图20和图21所示。

图20. 0.5TN时电流、电磁转矩、转子转速波形

图21. 0.5TN时电磁转矩、转子转速波形放大图

从图20、21可知,电机在VVVF正弦波交流电源供电,半额定负载启动时,在1.1秒左右就能达到980r/min;起动过程中电磁转矩仍有波动,但整体变化较平稳,波动幅度和频率比普通交流电源供电时小很多,最后稳定到到Te=15N.M附近。该过程中最大转矩近60N.M,是额定转矩(29.8416N.M)的2倍。 虽然最大转矩没有普通交流电源起动时大,但是提高了起动过程的平稳性。

从图21可以看出起动过程中电机的电流综合矢量标幺值Im*最大为20,远远超过了规定的3,这是不允许的,会对设备和系统有不良损害。对比4.2中直接启动的情况,可知无限幅环节的VVVF电流幅值Im*和普通交流电源供电差别不大,这种VVVF系统仍需要改进。

- 11 -

4.5 普通交流电源+PWM逆变器供电,空载变频起动过程,无电流限幅

PWM逆变器供电的仿真框图如图10所示,采用ode45算法。普通交流电源输入到SPWM波发生器,设置载波为三角波,载波频率为1KHz,幅值为1。

图22. 空载启动时电流、电磁转矩、转子转速波形

图23. 空载启动时电磁转矩、转子转速波形放大图

从图22、23可以看出电机在PWM逆变器供电,电机空载启动时,在0.3秒左右就能达到1000r/min,启动速度比同情况下的VVVF供电的1.1s要快得多。

起动过程中电机的转矩上下快速波动,虽然相比VVVF启动Te不够稳定,但Te波动幅度比普通交流电源供电时小,最后稳定在到Te=0,该过程中最大转矩在200N.M附近,是额定转矩(29.8416N.M)的6.8倍,这个值也相应比VVVF电源供电的2.7倍要高。这里我们可看到,最大转矩明显增大了,但牺牲了启动过程的平稳性。

电机的转矩在微小时间内有小幅的毛刺波动,猜测是由于脉冲宽度调制的缘故。

从图14可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值可达50,远远超过规定值3。没有比VVVF供电的情况更好,这个系统还需要改进。

- 12 -

4.6普通交流电源+PWM逆变器供电,0.5TN变频起动过程,无电流限幅

采用ode45算法,把输入的负载设为14.9208N.M,即半额定负载启动 ,其仿真结果如图24和图25所示。

图24. 0.5TN时电流、电磁转矩、转子转速波形

图25. 0.5TN时电磁转矩、转子转速波形放大图

从图24、25可知,电机在PWM逆变电源供电,半额定负载启动时,在0.4秒左右就能达到980r/min,比VVVF供电启动时的0.98s要快速;起动过程中电机的转矩上下快速波动,最后稳定到到Te=15N.M附近,虽然相比VVVF启动Te不够稳定,但Te波动幅度比普通交流电源供电时小。该过程中最大转矩近180N.M,是额定转矩(29.8416N.M)的6倍,这个值相应比VVVF电源供电的2倍要高. 最大转矩明显增大了,但牺牲了启动过程的平稳性。

电机的转矩在微小时间内有小幅的毛刺波动,猜测是由于脉冲宽度调制的缘故。

从图21可以看出起动过程中电机的电流综合矢量标幺值Im*最大为20,远远超过了规定的3,这是不允许的,会对设备和系统有不良损害。

4.7 理想VVVF+PWM逆变器供电,空载变频起动过程,无电流限幅

电路仿真如图26所示,理想VVVF电源输入到SPWM波发生器,设置载波为三角波,载波频率为1KHz,幅值为1。采用ode45算法。

- 13 -

图26. 仿真模型

图27. 空载启动时电流、电磁转矩、转子转速波形

图28. 空载启动时电磁转矩、转子转速波形放大图

从图27,28可以看出电机在VVVF+PWM情况下,电机空载启动时,在0.6秒左右就能达到1000r/min,比用普通正弦波+PWM启动速度要慢,但比单独用VVVF启动要快。

起动过程中电机的转矩上下快速波动,相比单独用VVVF启动情况下Te不够稳定;在转速稳定后转矩仍有周期性波形,可能是SPWM的产生过程没有调节到最好效果的缘故;该过程中最大转矩在140N.M附近,是额定转矩(29.8416N.M)的4.67倍,这个值也相应比VVVF电源供电的2.7倍要高。这里我们可看到,最大转矩明显增大了,但牺牲了启动过程的平稳性。

电机的转矩在微小时间内有小幅的毛刺波动,猜测是由于脉冲宽度调制的缘故。

从图14可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值可达8,超过规定值3。这个系统还需要改进。

- 14 -

4.8 理想VVVF+PWM逆变器供电,0.5TN变频起动过程,无电流限幅

电路仿真如图26所示,理想VVVF电源输入到SPWM波发生器,设置载波为三角波,载波频率为1KHz,幅值为1。采用ode45算法。

图29. 空载启动时电流、电磁转矩、转子转速波形

图30. 空载启动时电磁转矩、转子转速波形放大图

从图29、30可知,电机半额定负载启动时,在0.82秒左右就能达到980r/min,比空载时慢,是由于电机带载;起动过程中电机的转矩上下波动,最后稳定到到Te=15N.M附近,相比单独VVVF启动Te不够稳定。在转速稳定后转矩仍有周期性波形,可能是SPWM的产生过程没有调节到最好效果的缘故。该过程中最大转矩近150N.M,是额定转矩(29.8416N.M)的5倍,这个值相应比VVVF电源供电的2倍要高. 最大转矩明显增大了,但牺牲了启动过程的平稳性。

电机的转矩在微小时间内有小幅的毛刺波动,猜测是由于脉冲宽度调制的缘故。

从图21可以看出起动过程中电机的电流综合矢量标幺值Im*最大为8,超过了规定的3,这是不允许的。

4.9 理想VVVF(正弦波)供电,电流限幅,空载变频起动过程

系统仿真模型如图31所示,选用ode45算法。在VVVFnew这个s函数中,设置K=0.88,K为电压幅值随频率变化系数;设置Kf=1,Kf为频率的上升斜率;设置PI控制器参数为Kp=500,Ki=5000. 把输入的负载设为0N.M,即空载启动 ,其仿真结果如图32和图33所示。

- 15 -

图31. VVVF电流限幅仿真模型

图32. 空载启动时电流、电磁转矩、转子转速波形

图33. 空载启动时定子电流幅值Im*、电磁转矩、转子转速波形放大图

从图32、33可以看出电机在VVVF交流电源供电,电流限幅电机空载启动时,在1.1秒左右就能达到1000r/min,这和VVVF供电无电流限幅时启动速度一样。

起动过程中电磁转矩仍有波动,但整体变化较平稳,能够较平稳启动;该过程中最大转矩在

- 16 -

50N.M附近。这些数据都和VVVF供电无电流限幅启动时一样,符合规律。

这个系统中,关键是要观察其定子电流幅值的标幺值是不是超过3倍,以验证限幅环节是否有效。从图33可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值等于3,并被限制在3这点,符合要求,验证了限幅环节的有效性。

4.10 理想VVVF(正弦波)供电,电流限幅,0.5TN变频起动过程

系统仿真模型如图31所示,选用ode45算法。在VVVFnew这个s函数中,设置K=0.88,K为电压幅值随频率变化系数;设置Kf=1,Kf为频率的上升斜率;设置PI控制器参数为Kp=500,Ki=5000. 把输入的负载设为14.9208N.M,即0.5TN启动 ,其仿真结果如图34和图35所示。

图34. 半额定负载启动时电流、电磁转矩、转子转速波形

图35. 半额定负载启动时定子电流幅值Im*、电磁转矩、转子转速波形放大图

从图34、35可以看出电机在VVVF交流电源供电,电流限幅电机半额定负载启动时,在1.2秒左右能达到980r/min,这和VVVF供电无电流限幅启动时启动速度一样。

起动过程中电磁转矩仍有波动,但整体变化较平稳,能够较平稳启动;该过程中最大转矩在60N.M附近。这些数据都和VVVF供电无电流限幅启动时一样,符合一般规律。

这个系统中,关键是要观察其定子电流幅值的标幺值是不是超过3倍,以验证限幅环节是否有效。从图33可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值等于3,并被限制在3这点,符合要求,验证了限幅环节的有效性。

- 17 -

4.11 理想VVVF+PWM,电流限幅,空载变频起动过程

系统仿真模型如图36所示,选用ode45算法。在VVVFnew这个s函数中,设置K=0.88,K为电压幅值随频率变化系数;设置Kf=1,Kf为频率的上升斜率;设置PI控制器参数为Kp=500,Ki=5000. 把输入的负载设为0N.M,即空载启动 ,其仿真结果如图32和图33所示。

图36. VVVF+PWM电流限幅仿真模型

图37. 空载启动时电流、电磁转矩、转子转速波形

- 18 -

图38. 空载启动时定子电流幅值Im*、电磁转矩、转子转速波形放大图

从图37、38可以看出电机在VVVF+PWM供电,电流限幅电机空载启动时,在0.7秒左右就能达到1000r/min,和4.7中VVVF+PWM供电无电流限幅时达到稳定时间几乎一样。

起动过程中电磁转矩的整体变化较平稳,能够较平稳启动;电机的转矩在微小时间内有小幅的毛刺波动,猜测是由于脉冲宽度调制的缘故;该过程中最大转矩在140N.M附近。这些数据都和VVVF供电无电流限幅启动时一样,符合规律。

这个系统的关键也是要观察其定子电流幅值的标幺值是不是超过3倍,以验证限幅环节是否有效。从图37可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值等于3,并被限制在3这点,符合要求,验证了限幅环节的有效性。

4.12 理想VVVF+PWM,电流限幅,0.5TN变频起动过程

系统仿真模型如图36所示,选用ode45算法。在VVVFnew这个s函数中,设置K=0.88,K为电压幅值随频率变化系数;设置Kf=1,Kf为频率的上升斜率;设置PI控制器参数为Kp=500,Ki=5000. 把输入的负载设为0.5TN ,其仿真结果如图39和图40所示。

图39. 0.5TN启动时电流、电磁转矩、转子转速波形

- 19 -

图40. 0.5TN启动时定子电流幅值Im*、电磁转矩、转子转速波形放大图

从图39、40可以看出电机在VVVF+PWM供电,电流限幅半额定负载启动时,在0.75秒左右就能达到980r/min,这比VVVF+PWM供电无电流限幅时的启动时间0.82s略短。

起动过程中电磁转矩的整体变化较平稳,能够较平稳启动;电机的转矩在微小时间内有小幅的毛刺波动,猜测是由于脉冲宽度调制的缘故;该过程中最大转矩在150N.M附近。这些数据都和VVVF供电无电流限幅启动时一样,符合规律。

这个系统的关键也是要观察其定子电流幅值的标幺值是不是超过3倍,以验证限幅环节是否有效。从图40可以看出起动过程中电机的电流综合矢量的标幺值Im*最大值等于3,并被限制在3这点,符合要求,验证了限幅环节的有效性。

4.13 转子恒磁链转差矢量控制,空载启动

该控制方式的模型总图如图41.

图41. 转子恒磁链转差矢量控制模型图

在这个模型中,其子系统

是关键部分,该子系统的展开图见下图42.

- 20 -

图42

由于这个系统的控制原理和之前的12种组合工况有较大不同,这里先从控制原理和数学模型上加以解释。

这种磁场开环的转差矢量控制特点在于,不计算实际转子磁链的大小和相位,保持转子磁链给定值不变的前提下,求出定子电流综合矢量的幅值大小和定子电流相对转子磁链的相位角(即相对于M轴的角度),以获得更好的动态性能。它实施起来比较简单。

在MT坐标系下,经过推导可得:

(2-1)

(2-2)

式(2-1),(2-2)表示,当转子磁链给定时,可由(2-1)式求出定子电流励磁分量iM1;电磁转矩大小由定子电流转矩分量iT1控制。这就是图41的数学解释。

选用ode5算法,仿真时间4s,仿真步长10-4。设置从0s起输入的给定值flux*=0.95,wr*=1 ,TL*=0。电机参数Lm=2.291H,T2=65.452,Lr=2.4564H,np=3。速度调节器的Kp=50,Ki=50。电流滞环的上下限是0.01和-0.01. 得到的仿真结果如下:

图43. wr*=1时电流合幅值Is*,电磁转矩Te*,转子角速度wr*和转差角速度ws*

- 21 -

从图43可以看出电机在转子恒磁链转差矢量控制系统中空载启动时,在3秒左右电机的wr*达到1,这比之前的12种情况都慢,动态相应下降。

从电流和转矩波形来看,毛刺比较多,PI参数设置没有能很好抑制这些问题。 这种间接磁场定向的方式虽然原理简单易于实现,但使得系统动态响应变差。

5. 仿真结果综合评述

比较VVVF和PWM两种电源供电模式下电机运行于各种工况下的仿真结果,可见在电机启动的整体过程上启动特性表现出高度的一致性。由于VVVF电源是理想的正弦电源,PWM电源是一系列SPWM脉冲波,所以在PWM电源供电方式下转矩和电流的脉动明显要比理想正弦VVVF电源供电方式下偏大一些。此外在各种运行工况下,PWM电源供电时似乎电机启动更快速,其实这与PWM逆变电源的参考直流电压有关,本文在仿真时设定逆变直流参考电压为310V。

从用间接磁场定向的启动过程和上述两种相比,可看出间接磁场定向虽然较为容易实现,但会影响系统动态响应速度。

通过该门课程的学习对电机动态过程有了更为清晰的了解,对电机建模仿真以及对仿真结果的分析有了很大提高。但是在建立仿真模型的过程中遇到不少的问题,而且在对仿真模块参数的调整和S函数编程过程中也都遇到很多麻烦。经过该门课程的训练个人学识虽有很大提高,但是仍有很多地方还很不明白,需要在接下来的时间了进行进一步的深入学习和研究。

- 22 -

附录1 三相异步电机S-function函数程序(含坐标变换)

function [sys,x0,str,ts] = tongyong2(t,x,u,flag)

switch flag, case 0,

[sys,x0,str,ts]=mdlInitializeSizes; case 1,

sys=mdlDerivatives(t,x,u); %case 2,

% sys=mdlUpdate(t,x,u); case 3,

sys=mdlOutputs(t,x,u); case{2,4,9}, sys=[]; %case 4,

% sys=mdlGetTimeOfNextVarHit(t,x,u); %case 9,

% sys=mdlTerminate(t,x,u); otherwise

error(['Unhandled flag = ',num2str(flag)]); end

function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes;

sizes.NumContStates = 1; sizes.NumDiscStates = 0; sizes.NumOutputs = 2; sizes.NumInputs = 4; sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1; % at least one sample time is needed

sys = simsizes(sizes); x0 = [0]; str = [];

ts = [0 0];

function sys=mdlDerivatives(t,x,u) dx(1)=u(4); sys=[dx(1)];

- 23 -

function sys=mdlUpdate(t,x,u) sys = [];

function sys=mdlOutputs(t,x,u)

Ud=2/3*(u(1)*cos(100*pi*x(1))+u(2)*cos(100*pi*x(1)-2*pi/3)+u(3)*cos(100*pi*x(1)+2*pi/3)); Uq=2/3*(-u(1)*sin(100*pi*x(1))-u(2)*sin(100*pi*x(1)-2*pi/3)-u(3)*sin(100*pi*x(1)+2*pi/3)); Un=1/3*(u(1)+u(2)+u(3)); sys=[Ud,Uq];

function [sys,x0,str,ts] = ybdj(t,x,u,flag,Ls,Lr,Lm,Rs,Rr,J,p,a)

switch flag, case 0,

[sys,x0,str,ts]=mdlInitializeSizes; case 1,

sys=mdlDerivatives(t,x,u,Ls,Lr,Lm,Rs,Rr,J,p,a); case 2, sys=[]; case 3,

sys=mdlOutputs(t,x,u,Lm,p); case 4, sys = []; case 9, sys=[]; otherwise

error(['Unhandled flag = ',num2str(flag)]); end %

function [sys,x0,str,ts]=mdlInitializeSizes

sizes = simsizes;

sizes.NumContStates = 5; sizes.NumDiscStates = 0; sizes.NumOutputs = 6; sizes.NumInputs = 4; sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1; % at least one sample time is needed

sys = simsizes(sizes);

ids0=0;iqs0=0;idr0=0;iqr0=0;wr0=0;

- 24 -

x0 = [ids0;iqs0;idr0;iqr0;wr0]; str = [];

ts = [0 0];

function sys=mdlDerivatives(t,x,u,Ls,Lr,Lm,Rs,Rr,J,p,a)

K=Ls*Lr-Lm*Lm; G1=x(5)*Lm*Lm+u(3)*K; G2=x(5)*Lr*Lm; G3=x(5)*Ls*Lm; G4=x(5)*Ls*Lr-u(3)*K;

A=-1/K*[Lr*Rs -G1 -Lm*Rr -G2 G1 Lr*Rs G2 -Lm*Rr -Lm*Rs G3 Ls*Rr G4 -G3 -Lm*Rs -G4 Ls*Rr]; B=1/K*[Lr 0 -Lm 0 0 Lr 0 -Lm -Lm 0 Ls 0 0 -Lm 0 Ls]; U=[u(1) u(2) 0 0 ];

sys(1:4)=(A*x(1:4)+B*U);

Te=3/2*p*Lm*(x(2)*x(3)-x(1)*x(4)); if(Te-u(4)<=0&&x(5)<=0) sys(5)=0; else

sys(5) =p/(J*(1+a*u(4)))*(3/2*p*Lm*(x(2)*x(3)-x(1)*x(4))-u(4)); end

function sys=mdlUpdate(t,x,u) sys=[];

function sys=mdlOutputs(t,x,u,Lm,p) Te=3/2*p*Lm*(x(2)*x(3)-x(1)*x(4)); sys(1)=x(1); sys(2)=x(2) sys(3)=x(3) sys(4)=x(4);

- 25 -

sys(5)=Te; sys(6)=x(5);

function sys=mdlTerminate(t,x,u) sys = [];

附录2 理想VVVF变频电源生成电压幅值和频率的S-function函数程序

function [sys,x0,str,ts] = VVVFnew(t,x,u,flag,K,Kf,a) K=0.88;Kf=1;a=1; switch flag, case 0,

[sys,x0,str,ts]=mdlInitializeSizes; case 1,

sys=mdlDerivatives(t,x,u); case 3,

sys=mdlOutputs(t,x,u,K,Kf,a); case{2,4,9}, sys=[]; otherwise

error(['Unhandled flag = ',num2str(flag)]); end

function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes;

sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 2; sizes.NumInputs =0; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); 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,K,Kf,a)

- 26 -

f=0; if(t<0.03) sys=[0,0]; elseif (t<=1/Kf+0.03) f=Kf*(t-0.03); else f=1; end

Um=(K*f^a+(1-K)); sys=[Um,f];

附录3 SPWM信号发生器 S-function函数程序

function [sys,x0,str,ts] =SPWM(t,x,u,flag) switch flag, case 0,

[sys,x0,str,ts]=mdlInitializeSizes; case 1,

sys=mdlDerivatives(t,x,u); case 3,

sys=mdlOutputs(t,x,u); case{2,4,9}, sys=[]; otherwise

error(['Unhandled flag = ',num2str(flag)]); end

function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes;

sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 3; sizes.NumInputs = 4; sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1; % at least one sample time is needed

sys = simsizes(sizes); x0 = []; str = []; ts = [0 0];

- 27 -

%============================================================================= function sys=mdlDerivatives(t,x,u) function sys=mdlUpdate(t,x,u) sys = [];

function sys=mdlOutputs(t,x,u) Sa=0;Sb=0;Sc=0; if(u(1)-u(4)>=0) Sa=1; else Sa=0; end

if(u(2)-u(4)>=0) Sb=1; else Sb=0; end

if(u(3)-u(4)>=0) Sc=1; else Sc=0; end

sys=[Sa,Sb,Sc];

附录4 逆变器inverter S-function函数程序

function [sys,x0,str,ts] =inventer(t,x,u,flag,Ud) switch flag, case 0,

[sys,x0,str,ts]=mdlInitializeSizes; case 1,

sys=mdlDerivatives(t,x,u); case 2,

sys=mdlUpdate(t,x,u); case 3,

sys=mdlOutputs(t,x,u,Ud); case 4,

sys=mdlGetTimeOfNextVarHit(t,x,u); case 9,

sys=mdlTerminate(t,x,u);

- 28 -

otherwise

DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end

%============================================================================= function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes;

sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 3; sizes.NumInputs =3; sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1; % at least one sample time is needed

sys = simsizes(sizes); 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,Ud) Ua=(2*u(1)-u(2)-u(3))*Ud/3; Ub=(-u(1)+2*u(2)-u(3))*Ud/3; Uc=(-u(1)-u(2)+2*u(3))*Ud/3; sys = [Ua,Ub,Uc];

function sys=mdlGetTimeOfNextVarHit(t,x,u)

sampleTime = 1; % Example, set the next hit to be one second later. sys = t + sampleTime;

function sys=mdlTerminate(t,x,u) sys = [];

- 29 -

附录5 电流限幅环节的S-function函数程序

function [sys,x0,str,ts] = xianliu(t,x,u,flag)

switch flag, case 0,

[sys,x0,str,ts]=mdlInitializeSizes; case 1,

sys=mdlDerivatives(t,x,u); case 3,

sys=mdlOutputs(t,x,u); case{2,4,9}, sys=[]; otherwise

error(['Unhandled flag = ',num2str(flag)]); end

function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 1; sizes.NumInputs = 1; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); 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>=3 sys=u-3; else sys=0; end

- 30 -

二. 结合文章《Modeling and Simulation of PMSM Control System Based on SVPWM》: 1、重复仿真过程,再现永磁电机SPVWM控制的仿真结果:

在Matlab/simulink环境下,采用矢量控制和经典的速度、电流双闭环控制方法,重新搭建了永磁同步电机控制系统的仿真模型。

图1 仿真模型总图

- 31 -

Inv park模块内部:从dq同步坐标系变换到静止坐标系

图2 从dq同步坐标系变换到静止坐标系

SVPWM调制波生成:

图3 SVPWM调制波的生成

图4 PWM触发信号的生成

- 32 -

选用ode23t算法,仿真时间为0.4s,令波形平移0.01s,最大步长设为10,载波频率为10kHz。设置速度调节器 Kp=0.22,Ki=30;设置 iq和id调节器 Kp=1.5,Ki=100. 直流电压设为550V。其他参数依次按原文中的参数设定:速度给定为200rad/s;Ld和Lq设为8.5mH;Rs为2.875欧姆。开始转矩为0,在0.2s时转矩变为3N.M。仿真结果如下:

-5

图5 定子电流Iabc(A)

图6 定子电流Idq(A)

图7 wm (rad/s)

图8 电磁转矩Te(N.M)

- 33 -

图9 . 转角thetam

可以看到,初始时刻转速震荡明显,超调比较严重,在加载后的0.02s后系统进入稳定状态,响应较迅速。

在0.2s转矩从0变为3N.M后,转速和电磁转矩也有较大震荡,在0.02s后也进入稳定状态,相应较为迅速。

2、对比原文的仿真波形图

原文里的结果图如下:

图10 . 定子三相电流,转速,转矩,转角(原文结果图)

- 34 -

图11 . 定子d、q电流(原文结果图)

3、对比原文结果后,对模型进行改进

可以看到,原文结果的转速和转矩超调也比较重,震荡后也在0.02s后达到稳定,我的仿真结果与其基本一致。但是原文的转矩和电流波形比较光滑没有毛刺,很好地抑制了脉宽调制造成的不良影响,但我的电流和转矩波形毛刺较大,从图6.Is_dq波形可看到似乎存在谐波,推测是我的模型载波频率比较低,且没有有效抑制谐波,PI参数还没有调整到最佳。

把载波频率改成100kHz,再次仿真,得到如下结果:可看到毛刺和谐波明显减少。

图11 定子电流Iabc(改变载波频率为100kHz)

图12 定子电流Idq(改变载波频率为100kHz)

- 35 -

图13. wm(改变载波频率为100kHz)

图14. 电磁转矩Te(改变载波频率为100kHz)

4、对控制模型、计算方法、仿真结果和结论进行综合评述。

空间矢量脉宽调制Space Vector Pulse Width Modulation, (SVPWM)是根据变频器空间电压矢量切换来控制变频器。电压空间矢量PWM控制策略由日本学者在20世纪80年代针对交流电机变频调速提出的,其主要思路是采用逆变器空间矢量电压的切换以获得准圆形旋转磁场,从而使逆变器输出适当波形的电压,这就是磁链轨迹跟踪脉宽调制的基本原理。电压空间矢量脉宽调制的出发点是与电机构成一个整体,形成完整的机电动力系统。空间参考矢量图:

- 36 -

对不同的电压矢量,经过扇区判断,选择相应的参考空间电压矢量,并计算每个矢量的作用时间,得出调制波信号,然后通过三角载波调制产生驱动IGBT的PWM开关信号,这就是SVPWM工作的基本原理。下为Ⅰ扇区的开关时间:

参考矢量作用时间计算公式:

SVPWM比SPWM的电压利用率高15%,这是SVPWM的优点。SVPWM是一种存SPWM的相调制波中加入了零序分量后进行规则采样得到的结果,SPWM易于硬件电路实现,而SVPWM更适合于数字化控制系统。

仿真结果验证了波形基本符合理论分析,系统能稳定运行,有较好的动、静态性能。

这次基本完成了论文的仿真任务,仿真结果和论文中的图形还有一定差别,分析是PI参数的问题,限于时间和精力,暂将仿真告一段落。

- 37 -

因篇幅问题不能全部显示,请点此查看更多更全内容