关于磁链矢量所在扇区及最优开关表的选择的思路分析和matlab/simulink实现
仿真参考袁雷老师的《现代永磁同步电机控制原理及MATLAB仿真》,但是由于书中所附代码和书中第四章中讲的实现不同,因此根据自己看的资料和理解重新整理并实现了一下。
这里采用的电压矢量与袁老师书中不同,定义为
附最优矢量开关表如图
2.思路分析
3.Matlab/Simulink相关代码实现
sector
-
function sys
=mdlOutputs(t,x,u)
-
if(u(
2)
=
=
0)
-
N
=
1; %如果输入值为
0,电压参考量在第一扇区
-
else
-
a
1
=u(
1);
-
b
1
=u(
1)
*(-
0.5)
+(sqrt(
3)
/
2)
*u(
2); %%根据文章的计算公式得到
-
c
1
=u(
1)
*(-
0.5)-(sqrt(
3)
/
2)
*u(
2);
-
if a
1
>
0
-
a
=
0;
-
else
-
a
=
1;
-
end
-
if b
1
>
0
-
b
=
0;
-
else
-
b
=
1;
-
end
-
if c
1
>
0
-
c
=
0;
-
else
-
c
=
1;
-
end
-
N
=
4
*a
+
2
*b
+c; %扇区计算
-
end
-
Sector_
table
=[
2
6
1
4
3
5];
-
sys
=Sector_
table(N);
PMSM_switch
-
function sys
=mdlOutputs(t,x,u)
-
%%根据文章的表格计算得到
-
% V_
Table
=[
2
4
6
1
3
5;
4
1
5
2
6
3;
3
6
2
5
1
4 ;
5
3
1
6
4
2];
-
V_
Table
=[
5
6
1
2
3
4;
6
1
2
3
4
5;
3
4
5
6
1
2;
2
3
4
5
6
1];
-
% x
=
2
*u(
1)
+u(
2)
+
1;
-
x
=u(
1)
+u(
2)
+
2;
-
sector
=u(
3);
-
sys
=V_
Table(x,sector);