悬置系统匹配设计优化
function fmin=Mounting_System_OPT_Program(x)%在整车坐标系下解耦,悬置点坐标均是在整车坐标系下
m=97.82 ;
m_x= 0.18 ; m_y= 0.10 ; m_z= 0.22 ;
Jxx= 2.29 ;Jxy= 0.28 ;Jxz=-0.06 ;
Jyx= 0.28 ;Jyy= 1.39 ;Jyz=-0.71 ;
Jzx=-0.06 ;Jzy=-0.71 ;Jzz= 2.87 ;
X_M1= 0.40 ;Y_M1= 0.04 ;Z_M1= 0.08 ;
X_M2= 0.17 ;Y_M2= 0.39 ;Z_M2= 0.09 ;
X_M3=-0.05 ;Y_M3= 0.02 ;Z_M3=-0.06 ;
X_M4= NaN ;Y_M4= NaN ;Z_M4= NaN ;
K_M1_X=x(1);K_M1_Y=x(2);K_M1_Z=x(3);
K_M2_X=x(4);K_M2_Y=x(5);K_M2_Z=x(6);
K_M3_X=x(7);K_M3_Y=x(8);K_M3_Z=x(9);
K_M4_X= NaN ;K_M4_Y= NaN ;K_M4_Z= NaN ;
ALFA_M1_u= 0.00 ;BETA_M1_u= 1.57 ;GAMA_M1_u= 1.57 ;
ALFA_M1_v= 1.57 ;BETA_M1_v= 0.00 ;GAMA_M1_v= 1.57 ;
ALFA_M1_w= 1.57 ;BETA_M1_w= 1.57 ;GAMA_M1_w= 0.00 ;
ALFA_M2_u= 0.00 ;BETA_M2_u= 1.57 ;GAMA_M2_u= 1.57 ;
ALFA_M2_v= 1.57 ;BETA_M2_v= 0.00 ;GAMA_M2_v= 1.57 ;
ALFA_M2_w= 1.57 ;BETA_M2_w= 1.57 ;GAMA_M2_w= 0.00 ;
ALFA_M3_u= 0.00 ;BETA_M3_u= 1.57 ;GAMA_M3_u= 1.57 ;
ALFA_M3_v= 1.57 ;BETA_M3_v= 0.00 ;GAMA_M3_v= 1.57 ;
ALFA_M3_w= 1.57 ;BETA_M3_w= 1.57 ;GAMA_M3_w= 0.00 ;
ALFA_M4_u= 0.00 ;BETA_M4_u= 1.57 ;GAMA_M4_u= 1.57 ;
ALFA_M4_v= 1.57 ;BETA_M4_v= 0.00 ;GAMA_M4_v= 1.57 ;
ALFA_M4_w= 1.57 ;BETA_M4_w= 1.57 ;GAMA_M4_w= 0.00 ;
%% 悬置系统模态计算主程序:
%在整车坐标系下进行解耦计算
%所有输入参数均是基于整车坐标系:1)质心位置 2)悬置点位置 3)动力总成惯量张量(需要考虑坐标系)
%安装角矩阵Tj
T_M1=[cos(ALFA_M1_u),cos(BETA_M1_u),cos(GAMA_M1_u);...
cos(ALFA_M1_v),cos(BETA_M1_v),cos(GAMA_M1_v);...
cos(ALFA_M1_w),cos(BETA_M1_w),cos(GAMA_M1_w)];
T_M2=[cos(ALFA_M2_u),cos(BETA_M2_u),cos(GAMA_M2_u);...
cos(ALFA_M2_v),cos(BETA_M2_v),cos(GAMA_M2_v);...
cos(ALFA_M2_w),cos(BETA_M2_w),cos(GAMA_M2_w)];
T_M3= [cos(ALFA_M3_u), cos(BETA_M3_u), cos(GAMA_M3_u);...
cos(ALFA_M3_v), cos(BETA_M3_v), cos(GAMA_M3_v);...
cos(ALFA_M3_w), cos(BETA_M3_w), cos(GAMA_M3_w)];
T_M4= [cos(ALFA_M4_u), cos(BETA_M4_u), cos(GAMA_M4_u);...
cos(ALFA_M4_v), cos(BETA_M4_v), cos(GAMA_M4_v);...
cos(ALFA_M4_w), cos(BETA_M4_w), cos(GAMA_M4_w)];
%参数输入完毕
%%%%%%%%%%%====================%%%%%%%%%%
%%%%%%%%%%%---能量表达式中的Fj和kj---%%%%%%%%%%
% 刚体位移转换为 悬置的压缩量
% 变化矩阵E
%M1
E_M1=[1, 0,0,0, (Z_M1-m_z), -(Y_M1-m_y);...
0, 1,0,-(Z_M1-m_z), 0, (X_M1-m_x);...
0, 0,1,(Y_M1-m_y), -(X_M1-m_x), 0];
%M2
E_M2=[1, 0,0,0, (Z_M2-m_z), -(Y_M2-m_y);...
0, 1,0,-(Z_M2-m_z), 0, (X_M2-m_x);...
0, 0,1,(Y_M2-m_y), -(X_M2-m_x), 0];
%M3
E_M3=[1, 0,0,0, (Z_M3-m_z), -(Y_M3-m_y);...
0, 1,0,-(Z_M3-m_z), 0, (X_M3-m_x);...
0, 0,1,(Y_M3-m_y), -(X_M3-m_x), 0];
%M4
E_M4=[1, 0,0,0, (Z_M4-m_z), -(Y_M4-m_y);...
0, 1,0,-(Z_M4-m_z), 0, (X_M4-m_x);...
0, 0,1,(Y_M4-m_y), -(X_M4-m_x), 0];
%%%原 每个悬置的刚度矩阵
k_M1=;
k_M2=;
k_M3=;
k_M4=;
%%%%%%%%%%%---振动方程中的M,D和K---%%%%%%%%%%
% 质量矩阵
M=[ m,0,0,0,0,0;...
0,m,0,0,0,0;...
0,0,m,0,0,0;...
0,0,0,Jxx,-Jxy,-Jxz;...
0,0,0,-Jyx,Jyy,-Jyz;...
0,0,0,-Jzx,-Jzy,Jzz];
% 刚度矩阵;
if isnan(K_M4_Z) || K_M4_Z==0
K=E_M1'*T_M1'*k_M1*T_M1*E_M1+...
E_M2'*T_M2'*k_M2*T_M2*E_M2+...
E_M3'*T_M3'*k_M3*T_M3*E_M3;
else
K=E_M1'*T_M1'*k_M1*T_M1*E_M1+...
E_M2'*T_M2'*k_M2*T_M2*E_M2+...
E_M3'*T_M3'*k_M3*T_M3*E_M3+...
E_M4'*T_M4'*k_M4*T_M4*E_M4;
end
%%%%%%%%%%%%%---下面计算系统固有特性---%%%%%%%%%%%%%
=eig(K,M);
% 特征值 特征向量重新排序
%按频率大小排序
v=zeros(6,6);d=zeros(6,6);
[~,ID]=sort(diag(d_t));
for i=1:6
d(i,i)=d_t(ID(i),ID(i));
v(:,i)=v_t(:,ID(i));
end
%%%%%%%%%%%
f=(sqrt(diag(d))/2/pi)';
% 初始化能量变量
ENERGY=zeros(6,6);EGEN=zeros(6,6);eper=zeros(1,6);
for j=1:6 %第j阶固有频率振动
for k=1:6 %第k个广义坐标
for l=1:6
ENERGY(k,l)=v(k,j)*M(k,l)*v(l,j);
end
end
qq=sum(transpose(ENERGY));
qqt=sum(qq);
dig=qq/qqt;
EGEN(:,j)=dig;
ep1=max(dig);
ep2=sum(dig);
eper(j)=ep1/ep2*100;
end
EGEN=EGEN*100;
%进行再次排序
EGEN_S=zeros(6,6);
f_S=zeros(1,6);
%若出现两个分量均在某个方向上能量最大,则出现问题,需处理
[~,d]=max(EGEN);
issort_f=zeros(1,6);%保存是否排序,0代表未排序,1代表已排序
for i=1:6
[~,d]=sort(EGEN(:,i),'descend');%逐列选择最大值进行排序
for j=1:6
if~issort_f(d(j))
f_S(1,d(j))=f(i);
EGEN_S(:,d(j))=EGEN(:,i);
issort_f(d(j))=1;
break;
end
end
end
%上述排序为按能量排序,则f_S为排完序的模态频率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 频率间隔不设置权重因子
f_Bounce_Roll_Seperation=2;
f_Bounce=f_S(3);
f_Roll=f_S(4);
fmin_Bounce_Roll_Sep=0;
f_Seperation=abs(f_Bounce-f_Roll);
if f_Seperation<=f_Bounce_Roll_Seperation
fmin_Bounce_Roll_Sep=10^(10*(1-f_Seperation/f_Bounce_Roll_Seperation));
end
%模态频率间要求
f_All_Seperation=1;
f_sort=sort(f_S);%频率排序
% 依次整理并增加惩罚因子,10%--10倍,20%对应100倍
fmin_Seperation=0;
for i=1:5
if abs(f_sort(i)-f_sort(i+1))<1
fmin_Sep_tmp=10^(10*(1-abs(f_sort(i)-f_sort(i+1))/f_All_Seperation));
fmin_Seperation=fmin_Seperation+fmin_Sep_tmp;
end
end
%定义目标函数,fmin_str(ij),i为两种约束函数,j为约束变量,如roll
fmin=0;
fmin_str11=-1*sign(EGEN_S(1,1)-80)*(abs(EGEN_S(1,1)-80))*0.1*1/100;
if f_S(1)<=20 && f_S(1)>=5
fmin_str21=0;
elseif f_S(1)>=20;
fmin_str21=abs(f_S(1)-20)*0.1;
elseif f_S(1)<=5;
fmin_str21=abs( f_S(1)-5)*0.1;
end
fmin_1=fmin_str11+fmin_str21;
fmin=fmin+fmin_1;
fmin_str12=-1*sign(EGEN_S(2,2)-80)*(abs(EGEN_S(2,2)-80))*0.1*1/100;
if f_S(2)<=15 && f_S(2)>=5
fmin_str22=0;
elseif f_S(2)>=15;
fmin_str22=abs(f_S(2)-15)*0.1;
elseif f_S(2)<=5;
fmin_str22=abs( f_S(2)-5)*0.1;
end
fmin_2=fmin_str12+fmin_str22;
fmin=fmin+fmin_2;
fmin_str13=-1*sign(EGEN_S(3,3)-90)*(abs(EGEN_S(3,3)-90))*0.8*1/100;
if f_S(3)<=20 && f_S(3)>=8
fmin_str23=0;
elseif f_S(3)>=20;
fmin_str23=abs(f_S(3)-20)*1000;
elseif f_S(3)<=8;
fmin_str23=abs( f_S(3)-8)*1000;
end
fmin_3=fmin_str13+fmin_str23;
fmin=fmin+fmin_3;
fmin_str14=-1*sign(EGEN_S(4,4)-80)*(abs(EGEN_S(4,4)-80))*0.8*1/100;
if f_S(4)<=50 && f_S(4)>=30
fmin_str24=0;
elseif f_S(4)>=50;
fmin_str24=abs(f_S(4)-50)*0.1;
elseif f_S(4)<=30;
fmin_str24=abs( f_S(4)-30)*0.1;
end
fmin_4=fmin_str14+fmin_str24;
fmin=fmin+fmin_4;
fmin_str15=-1*sign(EGEN_S(5,5)-85)*(abs(EGEN_S(5,5)-85))*1*1/100;
if f_S(5)<=70 && f_S(5)>=30
fmin_str25=0;
elseif f_S(5)>=70;
fmin_str25=abs(f_S(5)-70)*10;
elseif f_S(5)<=30;
fmin_str25=abs( f_S(5)-30)*10;
end
fmin_5=fmin_str15+fmin_str25;
fmin=fmin+fmin_5;
fmin_str16=-1*sign(EGEN_S(6,6)-80)*(abs(EGEN_S(6,6)-80))*0.1*1/100;
if f_S(6)<=50 && f_S(6)>=30
fmin_str26=0;
elseif f_S(6)>=50;
fmin_str26=abs(f_S(6)-50)*0.1;
elseif f_S(6)<=30;
fmin_str26=abs( f_S(6)-30)*0.1;
end
fmin_6=fmin_str16+fmin_str26;
fmin=fmin+fmin_6;
end
页:
[1]