MPC双矢量调制怎么发波?

我现在做有限集mpc,在仿真一篇文章时,先选出了两个基本电压矢量和各自的持续时间,然后通过scm的方式进行合成后输入到逆变器,但是为什么反而用双矢量调制后的电流谐波反而比用单矢量的谐波还大呢?是不是我这个调制思路根本就不对啊,求指教?要是大家有这个类似的仿真模型,可以有偿购买,卡了好久了,真的难受

img

制(有限集模型预测控制)和无差拍预测控制,可以实现转速、电流、转矩等控制。其中,预测控制主要包括单矢量和双矢量,使用有限集模型预测控制可以达到更好的控制效果。

回答:

双矢量调制的思路是正确的,但是可能需要对具体实现进行优化。对于同步空间矢量调制技术,可以根据参考矢量位置分布、等效替代下基本电压矢量的时间计算和序列来选择合适的电压矢量,再根据占空比将其合成为最优电压矢量。具体实现方法可以参考参考资料中的模拟仿真模型,或者使用前述所提到的永磁同步电机(pmsm)模型预测控制(MPC)matlab/simulink仿真模型进行实现。

下面是一个简单的MATLAB代码示例,演示如何根据参考矢量位置分布、等效替代下基本电压矢量的时间计算和序列来选择合适的电压矢量:

% 基本电压矢量
Vb = sqrt(2)/3*400;

% 参考矢量位置分布(以图二对应的扇区为例)
theta1 = 30;
theta2 = 90;
theta3 = 150;

% 等效替代下的基本电压矢量时间计算
Ta = 3*sqrt(3)/(2*pi)*asin(Vb/(2*sqrt(2)*400));
Tb = Ta*(cos(theta2*pi/180)-cos(theta1*pi/180));
Tc = Ta*(cos(theta3*pi/180)-cos(theta2*pi/180));

% 选取电压矢量并合成最优电压矢量
Va = Vb*cos(30*pi/180) + 1j*Vb*sin(30*pi/180);
Vb_ = Vb*exp(1j*theta2*pi/180);
Vc = Vb*cos(210*pi/180) + 1j*Vb*sin(210*pi/180);

D_ratio = [Tb,Tc]/(Ta*3);
Duty_cycle = [1-D_ratio,D_ratio];
V_ref = [Va,Vb_,Vc];
V_bus = 400;
V_opt = (Duty_cycle*V_ref')'/V_bus;

% 输出最优电压矢量
disp(['最优电压矢量为:',num2str(V_opt)]);

需要根据具体场景和要求进行调整和优化。如果还遇到问题,可以进一步提供详细信息进行讨论,或者寻求专业人士的帮助。