印度人Torque Minimum 方式的改进

1 局限性分析

印度人Torque Minimum 复现

上一篇文章分析了印度人那篇Torque Minimum文章的方法,他的方法存在一些局限性;

1:第一个就是6次转矩脉动的抑制,导致了较大的电流谐波畸变率;

2:第二个就是6次转矩脉动虽然被抑制了,但是相对于其他开关角总的转矩脉动却增大的了。

3:该方法只能针对调制的某一个范围,高于这个调制度就无法实现该功能;

他的优化原则是这样的;

该方法的整体思如下所示:

(1)最小化 Un ;

(2)满足下面三个约束条件;

2 改进的分析与探索

2.1 改进策略的分析

我想改进的思路可以被分为几种:

1、可直接达到理想效果的目标,不存在逼近过程,改进思路是使用更好的方法;比如利用优化调制消除6次谐波的方法,该方法达到的目标就是6次谐波的完全消除。改进的出路就在于更快捷的计算速度、更简单的分析方法、离线计算改为在线实现等等;

2、不可达到理想效果的目标,理想效果无法直接达到,改进思路是使用更好的方法逼近目标;比如观测电机角度,不可能完全的跟踪,就需要新的方法去更快速、更接近的观测电机角度;比如基于控制的转矩脉动抑制,有用谐波电流控制器的、有用前馈的、有用学习+前馈的。这些都是应用更加优秀的方法逼近目标。

3、拓展特性,包括 抗参数扰动、鲁棒性、准确性等;

一个文章的贡献一定是针对已有方法所存在的局限性进行一定程度的改善的。

在电控领域离不开稳、准、快三个方面。稳可拓展为稳定性、参数鲁棒性、抗干扰性能;准一般都被定义为准确性,包括指令跟随的准确性、观测结果与真实结果之间的准确性,体现的一个就是误差小,误差越小方法越优秀;快一般可被拓展为响应速度、收敛速度、跟随速度、恢复速度,这些速率上的提升都能被定义为贡献;

在调制领域则多出来一个非控制指标的优化,例如电流THD、转矩THD、系统效率、热损耗等等;这些指标的优化得越低这个方法就越好。或者达到相同的指标,方法更简单,方法执行速度更快,方法兼容性更强等等,它同样存在准确性、快速性、稳定性等指标的衡量,但是更为注重指标本身的优化。

如何将这些改进的思路应用到这篇文章呢?

局限性一定是最为关键的突破点,

优点:实现了6次转矩脉动的完全消除;

局限性1:6次转矩脉动的抑制,导致了较大的电流谐波畸变率;

局限性2:6次转矩脉动虽然被抑制了,但是相对于其他开关角总的转矩脉动却增大的了。

2.2 方法的优化

针对局限性1:怎么在优化转矩基础上,再优化电流THD?

 首先是不可否认的是他存在的优越性,就是他将6次转矩脉动谐波完全的抑制为0了。这是其他方法完全无法比较的点。在这个基础上再去进行优化,寻找这个空间。

如下图所示,红色为不同调制度开关角的解集,紫色为六次转矩谐波为0的解集。每个红线与紫线的交集只有2-3个交点,这个解是非常的有限的。换句话说,要想实现6次转矩谐波为0,能够做的选择就只能在这2-3个交点中间去选择,这两三个点非常好对比谁的电流THD更小,选择一个就行了。针对固定的2-3点的改进是非常难以进行的。

由于满足六次转矩谐波为0这个目标所存在的解集空间非常有限,只有2-3个,在这个基础上再去优化电流THD实际上非常困难。甚至可以翻译过来,在解集只有2-3个的情况下,电流THD是无法被优化的;

针对局限性2:针对六次转矩谐波为0这个目标,在解集只有2-3个的情况下,整体输出转矩脉动大小是无法被进一步压缩的。

所以结论是,针对六次转矩谐波为0这个目标,印度人这篇论文已经是最优的方法了,没有更优秀的方法。目标已定,方法最优,没有任何优化空间。

既然方法无法更改,就寻找一个更为合理的目标。

2.3 目标的优化

既然无法完成方法上的优化,就要针对目标设定上进行改进,也就是目标的优化;

针对局限性1:6次转矩脉动的抑制,导致了较大的电流谐波畸变率;

此时的目标是6次转矩脉动为0,那要是不是0,而是一个范围,这个可能性是不是就大了更多了,是不是就可以寻找电流谐波畸变率更小的点了?

针对局限性2:6次转矩脉动虽然被抑制了,但是相对于其他开关角总的转矩脉动却增大的了。

此时的目标是6次转矩为0,也就是特定转矩谐波消除,却导致了整体转矩波动幅值的增大;那我能不能把目标更改为总体转矩振荡的幅值呢?

上述这两种针对局限性的优化都是可以进行尝试的。

3 优化的探索

3.1 针对局限性1:(6次转矩脉动的抑制,导致了较大的电流谐波畸变率)的探索

假如针对6次脉动的抑制并不是完全消除,而是和电流THD进行均衡呢?

先把6次转矩波动的范围扩大一些,从0.001扩大到0.01;查看解集的变化;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%  在图像上绘制5次和7次相等的曲线  %%%%%%%%%%%%%
%  for i = 1:10
% 选择一些范围内的 x 和 y 值
clear
x_values = 0:0.01:1.57;
y_values = 0:0.01:1.57;% 初始化解的列表
solutions = [];
% 计算方程的左边与右边之间的差异,并判断是否小于一个很小的阈值
threshold = 0.01;for x = x_valuesfor y = y_valuesleft_side  = (1 - 2*cos(5*x) + 2*cos(5*y))/25;right_side = (1 - 2*cos(7*x) + 2*cos(7*y))/49;if abs(left_side - right_side)< thresholdsolutions = [solutions; x, y]; % 添加解到解的列表中             endendend
% 提取解的 x 和 y 坐标
x_values = solutions(:, 1);
y_values = solutions(:, 2);
figure(1)
% 绘制图像
scatter(x_values*180/pi, y_values*180/pi,2,'m');
xlabel('x');
ylabel('y');
title('Distribution of Solutions');
grid on;
hold on%%%%%%%%%%%%%%%%%%%%%%%%%%%%  在图像上绘制调制度曲线  %%%%%%%%%%%%%
%  for i = 1:10
% 选择一些范围内的 x 和 y 值
clear
x_values = 0:0.001:1.57;
y_values = 0:0.001:1.57;% 初始化解的列表
solutions = [];
m = 0.5;
% 计算方程的左边与右边之间的差异,并判断是否小于一个很小的阈值
threshold = 0.001;for x = x_valuesfor y = y_valuesleft_side = 1 - 2*cos(x) + 2*cos(y);right_side =m;if abs(left_side - right_side) < thresholdsolutions = [solutions; x, y]; % 添加解到解的列表中endendend
% 提取解的 x 和 y 坐标
x_values = solutions(:, 1);
y_values = solutions(:, 2);
figure(1)
% 绘制图像
scatter(x_values*180/pi, y_values*180/pi,1,'r');
xlabel('x');
ylabel('y');
title('Distribution of Solutions');
grid on;
hold on%%%%%%%%%%%%%%%%%%%%%%%%%% 绘制电流THD 2d 曲线 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 初始化解的列表
L = length(x_values);
for i = 1:Lx = x_values(i);y = y_values(i);%%%%%%%%%%%%%%%%%% 谐波电压标幺 %%%%%%%%%%%%%%%%%%%%%%%%%%%n =50;V1_pu = (1-2*cos(1*x)+ 2*cos(1*y))/1;for j  = 1:nlow = 6*j-1;up = 6*j+1;Vlow_pu(j) = (1 - 2*cos(low*x) + 2*cos(low*y) )/low;Vup_pu(j) =(1 - 2*cos(up*x) + 2*cos(up*y) )/up;In(j) = abs(Vlow_pu(j)/low)^2 + abs(Vup_pu(j)/up)^2  ;Tn(j) = abs(Vlow_pu(j)/low  - Vup_pu(j)/up) + 0*abs(Vlow_pu(j)/low + Vup_pu(j)/up);           endF_Cthd(i) = sqrt(sum(In))/m;F_Ten(i) = sum(Tn); end% 绘制图像figure(3)
t=  1:1:L;
plot(F_Cthd);
xlabel('x');
ylabel('y');
hold on figure(3)
t=  1:1:L;
plot(F_Ten);
xlabel('x');
ylabel('y');
hold on [min_value, min_index] = min(F_Cthd)
disp(['电流THD最小的开关角a1:', num2str(x_values(min_index)*180/pi)]);
disp(['电流THD最小的开关角a2:', num2str(y_values(min_index)*180/pi)]);
disp(['电流THD为:', num2str(F_Cthd(min_index))]);
[min_value, min_index] = min(F_Ten)
disp(['转矩THD最小的开关角a1:', num2str(x_values(min_index)*180/pi)]);
disp(['转矩THD最小的开关角a2:', num2str(y_values(min_index)*180/pi)]);
disp(['转矩THD为:', num2str(F_Ten(min_index))]);
% alpha_a1 =  x_values(351)*180/pi
% alpha_a2 =  y_values(351)*180/pi

脚本运行结果如下图所示:

假如选择解集中电流THD最小的点作为开关角,即可实现在这个限幅值目标下电流THD的优化;可以试试这个效果;

针对这个公式:

解算代码;


% alpha_init=[60*pi/180,90*pi/180];   %开关角初值给定  60-90°
alpha_init=[60*pi/180,90*pi/180];   %开关角初值给定  0-60°
t = 1:1:100;
L = length(t);
for i = 1:Lm = i /L; 
A=[];b=[];Aeq=[];beq=[];lb=[];ub=[];
options=optimset('Display','none');
nonlcon=@(x)mycon(x,m);
[alpha_tmp,fval,exitflag]=fmincon(@(x)myfun(x),alpha_init,A,b,Aeq,beq,lb,ub,nonlcon,options);
alpha1_save(i) = alpha_tmp(1)*180/pi;
alpha2_save(i) = alpha_tmp(2)*180/pi;
alpha=alpha_tmp;
alpha=(180/pi)*alpha ;  %弧度转换为角度
% figure(1)
% scatter(alpha(1),alpha(2),80,'filled');
hold on 
end
figure(2)
plot(t/L,alpha1_save);
ylim([0, 90]);
hold on 
plot(t/L,alpha2_save);
ylim([0, 90]);
hold on 
alpha1_save(90)
alpha2_save(90)%%%%%%%%%%%% 电流THD 最小化目标 %%%%%%%%%%%%%
function F=myfun(x)
Uk_sum=0;
Qk_sum=0;
U1=1-2*cos(x(1))+2*cos(x(2));
sigma = 1;
for k=1:100Uk_1=( 1-2*cos((6*k-1)*x(1))+2*cos((6*k-1)*x(2)) )/(6*k-1);Uk_2=( 1-2*cos((6*k+1)*x(1))+2*cos((6*k+1)*x(2)) )/(6*k+1);Uk =(Uk_1/(6*k-1)/U1)^2+(Uk_2/(6*k+1)/U1)^2 ;Uk_sum=Uk+Uk_sum;endF=sigma*sqrt(Uk_sum);
endfunction [c,ceq]= mycon(x,t)%%%%%%  调制度约束    V1 = 1-2*cos(x(1))+2*cos(x(2));U1 = V1;ceq(1)= U1 - t;%%%%%% 开关角大小的约束 %%%%%%%%%c(1)=0/180*pi-x(1);c(2)=x(1)-x(2);c(3)=x(2)-pi/2;%%%%%% 转矩抑制  Q6 < 0.01 约束,注意等式要用 c  V5 = ( 1-2*cos(5*x(1))+2*cos(5*x(2)) ) /5 ;V7 = ( 1-2*cos(7*x(1))+2*cos(7*x(2)) ) /7 ;Q6 = abs(V5/5 - V7/7);c(4) = Q6 - 0.01;end

解算结果如下图所示;

在调制度为0.9时刻进行仿真验证;此时求得的开关角为

a1 = 79.1114;  a2 = 82.0158; 这个值和印度人那个方法解出来的值一摸一样;

尝试将范围放大;

再次计算:

a1 = 78.4423;  a2 = 81.3523;  Q6=8.07;Tr = 12.42;THD=65.93

a1 = 79.1114;  a2 = 82.0158; Q6=2.31;Tr = 11.47;THD=65.98;这个值和印度人那个方法解出来的;

从结果来看,有优化但是效果不是很大,可能是这个调制度恰好这个点就是THD比较小的,或许其他调制的效果更好一些;

测试在调制度为0.8的值;两者计算值一致;

测试在调制度为0.7的值;两者计算值一致;

测试在调制度为0.6的值;两者计算值一致;

测试在调制度为0.92的值;两者计算值不一致;

a1 = 79.4693; a2 = 81.7923;  Q6=14.172;Tr = 10.43;THD=65.37

a1 = 81.2482;  a2 = 83.5605; Q6=2.13 ;Tr = 8.362;THD=65.59 ;这个值和印度人那个方法解出来的;

从结果来看,有优化但是效果不是很大,可能是这个调制度恰好这个点就是THD比较小的,或许其他调制的效果更好一些;在低调制度区间没有很好的效果,按照印度人解算出来的值就是比较优选的方案。

这种设置限制大小的方式或者更适合没有解区间的调制度,即调制度在0.94 - 1之间时;

图中红色区域全是没有解的区间,在这个区间可以将6次转矩脉动的幅值放宽,这个宽度要正好覆盖这个区域。并且结合新的约束目标,整体的思想:

这个约束值就是包含 m=1的极限情况;

代码实现:


% alpha_init=[60*pi/180,90*pi/180];   %开关角初值给定  60-90°
alpha_init=[00*pi/180,60*pi/180];   %开关角初值给定  0-60°
t = 1:1:100;
L = length(t);
for i = 1:Lm = i /L; 
A=[];b=[];Aeq=[];beq=[];lb=[];ub=[];
options=optimset('Display','none');
nonlcon=@(x)mycon(x,m);
[alpha_tmp,fval,exitflag]=fmincon(@(x)myfun(x),alpha_init,A,b,Aeq,beq,lb,ub,nonlcon,options);
alpha1_save(i) = alpha_tmp(1)*180/pi;
alpha2_save(i) = alpha_tmp(2)*180/pi;
alpha=alpha_tmp;
alpha=(180/pi)*alpha ;  %弧度转换为角度
% figure(1)
% scatter(alpha(1),alpha(2),80,'filled');
hold on 
end
figure(2)
plot(t/L,alpha1_save);
ylim([0, 90]);
hold on 
plot(t/L,alpha2_save);
ylim([0, 90]);
hold on 
alpha1_save(98)
alpha2_save(98)%%%%%%%%%%%% 电流THD 最小化目标 %%%%%%%%%%%%%
function F=myfun(x)
Uk_sum=0;
Qk_sum=0;
U1=1-2*cos(x(1))+2*cos(x(2));
sigma = 1;
for k=1:100Uk_1=( 1-2*cos((6*k-1)*x(1))+2*cos((6*k-1)*x(2)) )/(6*k-1);Uk_2=( 1-2*cos((6*k+1)*x(1))+2*cos((6*k+1)*x(2)) )/(6*k+1);Uk =(Uk_1/(6*k-1)/U1)^2+(Uk_2/(6*k+1)/U1)^2 ;Uk_sum=Uk+Uk_sum;endF=sigma*sqrt(Uk_sum);
endfunction [c,ceq]= mycon(x,t)%%%%%%  调制度约束    V1 = 1-2*cos(x(1))+2*cos(x(2));U1 = V1;ceq(1)= U1 - t;%%%%%% 开关角大小的约束 %%%%%%%%%c(1)=0/180*pi-x(1);c(2)=x(1)-x(2);c(3)=x(2)-pi/2;if t>0.94V5 = ( 1-2*cos(5*x(1))+2*cos(5*x(2)) ) /5 ;V7 = ( 1-2*cos(7*x(1))+2*cos(7*x(2)) ) /7 ;Q6 = abs(V5/5 - V7/7);c(4) = Q6 - 0.02;elseV5 = ( 1-2*cos(5*x(1))+2*cos(5*x(2)) ) /5 ;V7 = ( 1-2*cos(7*x(1))+2*cos(7*x(2)) ) /7 ;Q6 = abs(V5/5 - V7/7);ceq(2) =0- Q6;endend

进行仿真复现,开关角解算结果;

原始论文的结果;

这是利用THD的方法进行解决的;但是这里有个东西站不住,就是覆盖的范围内的电流THD求最优是否就等价于CHMPWM了呢?至少在开关角等于2的时候,完全是包含的关系。开关角等于3和等于4的时候就不一定了,这个需要证明一下。

另一条路径:

那么能否利用更加优选的,时刻保持最优Q6的方式解决呢?

那么实际上是寻优的过程,整体思想为:

执行代码:


% alpha_init=[60*pi/180,90*pi/180];   %开关角初值给定  60-90°
alpha_init=[0*pi/180,60*pi/180];   %开关角初值给定  0-60°
t = 1:1:100;
L = length(t);
for i = 1:Lm = i /L; 
A=[];b=[];Aeq=[];beq=[];lb=[];ub=[];
options=optimset('Display','none');
nonlcon=@(x)mycon(x,m);
[alpha_tmp,fval,exitflag]=fmincon(@(x)myfun(x),alpha_init,A,b,Aeq,beq,lb,ub,nonlcon,options);
alpha1_save(i) = alpha_tmp(1)*180/pi;
alpha2_save(i) = alpha_tmp(2)*180/pi;
alpha=alpha_tmp;
alpha=(180/pi)*alpha ;  %弧度转换为角度
% figure(1)
% scatter(alpha(1),alpha(2),80,'filled');
hold on 
end
figure(2)
plot(t/L,alpha1_save);
ylim([0, 90]);
hold on 
plot(t/L,alpha2_save);
ylim([0, 90]);
hold on 
alpha1_save(96)
alpha2_save(96)%%%%%%%%%%%% 电流THD 最小化目标 %%%%%%%%%%%%%
function F=myfun(x)V5 = ( 1-2*cos(5*x(1))+2*cos(5*x(2)) ) /5 ;V7 = ( 1-2*cos(7*x(1))+2*cos(7*x(2)) ) /7 ;Q6 = abs(V5/5 - V7/7);  
%     U6 = abs(V5/5 + V7/7);%     F=Q6+U6;F = Q6;
endfunction [c,ceq]= mycon(x,t)%%%%%%  调制度约束    V1 = 1-2*cos(x(1))+2*cos(x(2));U1 = V1;ceq(1)= U1 - t;%%%%%% 开关角大小的约束 %%%%%%%%%c(1)=0/180*pi-x(1);c(2)=x(1)-x(2);c(3)=x(2)-pi/3;end

仿真验证,是不是时刻保证最优的Q6的;把集中方法对比一下,其数据如下图所示:

(1)THDMIN+ 转矩波动限制的0.02时 :  Tr = 8.2    THD 36.8   6次转矩分量为67.63

(2)THDMIN+加了转矩波动限制的0.01时 :  Tr = 6.053   THD 60.25   6次转矩分量为46.11

(2) Q6最小 %:  Tr = 6.132   THD 62.63   6 次转矩分量为50.77

3.2 针对局限性2:(6次转矩脉动的抑制,整体转矩振荡幅值增大)的探索

假如优化的目标不再是针对6次转矩脉动的抑制,而是整体转矩振荡幅值最小呢?

4 应用遍历思想的探索

在应用fmincon函数的过程中,一直都存在初值设置不准的问题,不同的初值设置,得到的结果完全不相同。为了能够得到更为直接的结果,且不受到初值的影响,探索应用遍历的方法对所有角度的信息进行求解。

4.1 目标函数为电流THD,求其最小值;

公式原理:

求解CHMPWM开关角代码;全部调制度的求解,并保存开关角;

% 定义函数 0.9 = 1 - 2*cos(x) + 2*cos(y)
% 通过重排可以得到 2*cos(y) = 0.1 + 2*cos(x)
% 解出 y
% y = acos(0.1/2 + cos(x))% 创建一系列 x 值
m_div = 1000;
t = 1:1:m_div;
for a = 1:m_divm = a /m_divx_values = linspace(0, pi/2, 10000);% 计算对应的 y 值y_values = acos((1-m)/2 + cos(x_values));%%%%%%%%%%%对求解结果的非实数解进行去除 %%%%%%%%%%%%%L = length(y_values);for i=1:Lis_z_real = isreal(y_values(i));if is_z_real == 0y_values(i) = 0;end endalpha1 = y_values(2020:10000);
alpha2 = x_values(2020:10000);% figure(1)
% 绘制 y 关于 x 的图像
% plot(alpha1*180/pi, alpha2*180/pi,'linewidth',5);
% xlabel('a1');
% ylabel('a2');
% title('a2 关于 a1 的函数图像');
% hold on %%%%%%%%%%%%%%%%%%%%%%%%%% 绘制电流THD 2d 曲线 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 初始化解的列表
L_in = length(alpha1);for i = 1:L_inx = alpha1(i);y = alpha2(i);%%%%%%%%%%%%%%%%%% 谐波电压标幺 %%%%%%%%%%%%%%%%%%%%%%%%%%%n =50;V1_pu = (1-2*cos(1*x)+ 2*cos(1*y))/1;for j  = 1:nlow = 6*j-1;up = 6*j+1;Vlow_pu(j) = (1 - 2*cos(low*x) + 2*cos(low*y) )/low; % 6k-1次数电压Vup_pu(j) =(1 - 2*cos(up*x) + 2*cos(up*y) )/up;      % 6k+1次数电压In(j) = abs(Vlow_pu(j)/low)^2 + abs(Vup_pu(j)/up)^2  ;% 6k-+1次电流        endF_Cthd(i) = sqrt(sum(In))/m;% 然后所有的平方和 ,开方,除以调制度   end
[min_value, min_index] = min(F_Cthd);
% disp(['电流THD最小的开关角a1:', num2str(alpha1(min_index)*180/pi)]);
% disp(['电流THD最小的开关角a2:', num2str(alpha2(min_index)*180/pi)]);
% disp(['电流THD为:', num2str(F_Cthd(min_index))]);
alpha1_out(a) =  alpha1(min_index);
alpha2_out(a) =  alpha2(min_index);
F_Cthd_out(a) =     min(F_Cthd);
end 
figure(2)
t = 1:1:m_div;
plot(t/m_div,alpha1_out*180/pi);
hold on 
plot(t/m_div,alpha2_out*180/pi);
hold on
figure(3)
plot(t/m_div,F_Cthd_out);
hold on % 
% figure
% t=  1:1:L;
% plot(F_Cthd);
% xlabel('x');
% ylabel('y');
% hold on 
4.2 目标函数为转矩THD,求其最小值;

定点的M,时变的m还没调通;

对上式进行编程求解:

% 定义函数 0.9 = 1 - 2*cos(x) + 2*cos(y)
% 通过重排可以得到 2*cos(y) = 0.1 + 2*cos(x)
% 解出 y
% y = acos(0.1/2 + cos(x))% 创建一系列 x 值
clear m = 0.9;x_values = linspace(0, pi/2, 10000);% 计算对应的 y 值y_values = acos((1-m)/2 + cos(x_values));%%%%%%%%%%%对求解结果的非实数解进行去除 %%%%%%%%%%%%%L = length(y_values);for i=1:Lis_z_real = isreal(y_values(i));if is_z_real == 0y_values(i) = 0;end endalpha1 = y_values(2020:10000);
alpha2 = x_values(2020:10000);% figure(1)
% 绘制 y 关于 x 的图像
% plot(alpha1*180/pi, alpha2*180/pi,'linewidth',5);
% xlabel('a1');
% ylabel('a2');
% title('a2 关于 a1 的函数图像');
% hold on %%%%%%%%%%%%%%%%%%%%%%%%%% 绘制电流THD 2d 曲线 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 初始化解的列表
L_in = length(alpha1);for i = 1:L_inx = alpha1(i);y = alpha2(i);%%%%%%%%%%%%%%%%%% 谐波电压标幺 %%%%%%%%%%%%%%%%%%%%%%%%%%%n =50;V1_pu = (1-2*cos(1*x)+ 2*cos(1*y))/1;for j  = 1:nlow = 6*j-1;up = 6*j+1;Vlow_pu(j) = (1 - 2*cos(low*x) + 2*cos(low*y) )/low; % 6k-1次数电压Vup_pu(j) =(1 - 2*cos(up*x) + 2*cos(up*y) )/up;      % 6k+1次数电压In(j) = abs(Vlow_pu(j)/low)^2 + abs(Vup_pu(j)/up)^2  ;% 6k-+1次电流     Tn(j) = abs( Vlow_pu(j)/low  - Vup_pu(j)/up) + 0*abs(Vlow_pu(j)/low + Vup_pu(j)/up);  endF_Cthd(i) = sqrt(sum(In))/m;% 然后所有的平方和 ,开方,除以调制度   F_Ten(i) = sum(Tn); endfigure(1);plot(F_Ten)%%%%%%%%%%%%%%%% 电流求THD最小 %%%%%%%%%%%%%%%%%%%%        
[min_value, min_index] = min(F_Cthd);
% disp(['电流THD最小的开关角a1:', num2str(alpha1(min_index)*180/pi)]);
% disp(['电流THD最小的开关角a2:', num2str(alpha2(min_index)*180/pi)]);
% disp(['电流THD为:', num2str(F_Cthd(min_index))]);
alpha1_THD =  alpha1(min_index);
alpha2_THD =  alpha2(min_index);
F_Cthd_out =     min(F_Cthd);%%%%%%%%%%%%%%%% 转矩求THD最小 %%%%%%%%%%%%%%%%%%%%       
[min_value, min_index] = min( F_Ten)
disp(['转矩THD最小的开关角a1:', num2str(alpha1(min_index)*180/pi)]);
disp(['转矩THD最小的开关角a2:', num2str(alpha2(min_index)*180/pi)]);
disp(['转矩THD为:', num2str(F_Cthd(min_index))]);
alpha1_Tr =  alpha1(min_index);
alpha2_Tr =  alpha2(min_index);
F_Ten_Tr =     min( F_Ten);

此时输出转矩THD波形如下所示:

matlab的指令行输出如下所示:

代入解算结果中的几个点仿真试一下;

%%%%%%%%%%%% 108 %%%%%%%%%%%% Tr = 7.47    THD 94.31 

% %%%%%%%%%%%%  711 %%%%%%%%%%%% Tr = 10.83 THD 64.92

%%%%%%%%%%%% 1429 %%%%%%%%%%%% Tr =  17.68  THD 67.06 

%%%%%%%%%%%% 1642 %%%%%%%%%%%% Tr =  19.51  THD 72.82  

%%%%%%%%%%%%  1911 %%%%%%%%%%%% Tr =  14.57  THD  86.58

%%%%%%%%%%%%   2424 %%%%%%%%%%%% Tr =  10.19 THD 104.31

%%%%%%%%%%%%    2686 %%%%%%%%%%%% Tr =  14.26  THD 109.77

%%%%%%%%%%%%   3134 %%%%%%%%%%%% Tr =  20.07  THD 114.62

%%%%%%%%%%%%  3203%%%%%%%%%%%% Tr =  20.87 THD 115.67

%%%%%%%%%%%%   3253 %%%%%%%%%%%% Tr =  21.66  THD 115.98

这些数据基本是按照遍历出来的结果显示的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671948.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】整数,浮点数数据在内存中的存储

Tiny Spark get dazzling some day. 目录 1. 整数在内存中的存储1.1 原码、反码、补码1.1 大小端存储1.2.1 字节序分类1.2.2 判断字节序 2. 浮点数在内存中的存储2.1 浮点数的存储形式2.2 浮点数的 “ 存 ”2.2.1 S2.2.2 E2.2.3 F 2.3 浮点数的 “ 取 ”2.3.1 S2.3.2 E、F 3. 浮…

爱普生S2D13V52快速实现车载显示屏高分辨率显示系统

随着时代的发展&#xff0c;汽车驾驶位前中央的显示屏承担的功能也越来越多&#xff0c;从一开始仅仅是显示仪表盘的信息&#xff0c;再到作为显示屏辅助倒车&#xff0c;再到如今和一块平板一样可公认娱乐&#xff0c;显示屏的大小有些时候成为了一辆车够不够好的体现。随着汽…

【前端】HTML基础(3)

文章目录 前言一、HTML基础1、表格标签1.1 基本使用1.2 合并单元格 2、列表标签2.1 无序列表2.2 有序列表2.3 自定义列表 3、 表单标签2.1 form标签2.2 input标签2.3 label标签2.4 select标签2.5 textarea标签 4、无语义标签5、HTML特殊字符 前言 这篇博客仅仅是对HTML的基本结…

Apache POI入门学习

Apache POI入门学习 官网地址 excel中使用到的类读取excel表格内容表格内容maven依赖方式一测试结果 方式二测试结果 向excel中写入数据方式一方式二方式三测试结果 从 Excel 工作表中的公式单元格读取数据测试结果 Excel 工作表中写入公式单元格从受密码保护的Excel中读取数据…

2024年03月 Scratch 图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共18题,共50分) 第1题 运行程序后,角色一定不会说出的数字是?( ) A:2 B:4 C:6 D:8 答案:A 程序中随机数的取值最小为 2,最大为 20 ,那么随机数加上 2 之后的结果的最小值为 4 ,最大值为 22 。所…

查看微信小程序主包大小

前言 略 查看微信小程序主包大小 在微信开发者工具右上角找到“详情->基本信息” 查看微信小程序主包构成 通过微信开发者工具中的“代码依赖分析”工具查看

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层&#xff1a;中继器&#xff0c;集线器(多路中继器) 数据链路层&#xff1a;网桥&#xff0c;交换机(多端口…

Java常用5大集合类详解(实战)

文章目录 1、Collection1.1 iterator 迭代器 2、List 有序集合2.1 ArrayList ⭐2.2 LinkedList2.3 Queue 3、Set 无序集合3.1 HashSet ⭐3.2 TreeSet3.3 LinkedHashSet 4、Map 键值集合4.1 HashMap ⭐4.2 TreeMap / LinkedHashMap 5、工具类5.1 Collections5.2 Arrays 【拓展】…

多组间比较散点图+误差棒(自备)

目录 数据 计算四分位值 作图 数据 rm(list ls()) library(ggplot2) library(dplyr) library(ggpubr) library(reshape2) library(tidyverse)data <- iris##鸢尾花数据集 dat <- data[,c(5,1)]#单个数据进行分析 计算四分位值 #根据分组计算四分位及中位数 dat1 …

SegFix:预测边界和预测方向来修正边界

论文标题&#xff1a;SegFix: Model-Agnostic Boundary Refinement for Segmentation 论文地址&#xff1a;https://arxiv.org/pdf/2007.04269.pdf 代码地址&#xff1a;https://github.com/openseg-group/openseg.pytorch 两种loss监督 八种方向变回归问题为分类问题 代码地…

GitOps介绍

基础设施即代码 IaC 在理解 GitOps 之前&#xff0c;需要先理解什么是基础设施即代码。 基础设施即代码&#xff08;Infrastructure as Code&#xff0c;简称IaC&#xff09;是一种软件工程实践&#xff0c;它将基础设施的管理和配置过程像管理代码一样进行版本控制、自动化和…

电源小白入门学习7——USB充电、供电、电源路径管理

电源小白入门学习7——USB充电、供电、电源路径管理 USB充电系统需要考虑的因素开关充电和线性充电充电路径管理输入限流路径管理&#xff08;动态功率管理&#xff09;理想二极管帮助提高电池利用率输入过充抑制 上期我们介绍了锂离子电池的电池特性&#xff0c;及充电电路设计…