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