⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 liu_pinionave_gearvex_meshing_lineb.m

📁 用于分析弧齿锥齿轮啮合轨迹的MATLAB程序。请大家分享。
💻 M
📖 第 1 页 / 共 2 页
字号:

K2=(RGmnr-RG1nr)/(LGmnr-LG1nr);
B2=RGmnr-K2*LGmnr;%………………工作齿根线

K3=(RG1nr-RG11)/(LG1nr-LG11);
B3=RG1nr-K3*LG1nr;%………………小端

K4=(RGmnr-RGm1)/(LGmnr-LGm1);
B4=RGmnr-K4*LGmnr;%………………大端
%………………计算小轮有效齿面四条边界线的参数(斜率、截距)
K5=(RPm1-RP11)/(LPm1-LP11);
B5=RPm1-K5*LPm1;%………………齿顶线

K6=(RPmnr-RP1nr)/(LPmnr-LP1nr);
B6=RPmnr-K6*LPmnr;%………………工作齿根线

K7=(RP1nr-RP11)/(LP1nr-LP11);
B7=RP1nr-K7*LP1nr;%………………小端

K8=(RPmnr-RPm1)/(LPmnr-LPm1);
B8=RPmnr-K8*LPmnr;%………………大端

LG0=LGmpr;
RG0=RGmpr;

LP0=LPmpr;
RP0=RPmpr;%……赋判断啮合点位置的初值(计算参考点)

%<<<<<<小轮转角以步长dpc10减小时对应的啮合点计算>>>>>>%

while RP0<=K5*LP0+B5 & RP0>=K7*LP0+B7 & RP0<=K8*LP0+B8 &RG0>K2*LG0+B2 & RG0>=K3*LG0+B3 & RG0<=K4*LG0+B4 %……判断啮合点是否在齿面内
    
    x0m=[thetaGmp;phic2mp;thetaPmp;phic1mp;0.0];%………………赋初值,pc20=0.0
    
    options=optimset('Display','off');
    xm=fsolve(@(xm) PINIONave_GEARvex_meshing_lineB(xm,pc10,thetaX0,thetaY0,thetaZ0,dxk20,dyk20,dzk20),x0m,options);
    thetaGm(e)=xm(1);
    phic2m(e)=xm(2);
    thetaPm(e)=xm(3);
    phic1m(e)=xm(4);

    thetaG=thetaGm(e);
    phic2=phic2m(e);
    
    x2m(e)=subs(x2);
    y2m(e)=subs(y2);
    z2m(e)=subs(z2);
    
    LGmrT(e)=z2m(e)
    RGmrT(e)=sqrt(x2m(e)^2+y2m(e)^2) %……大轮齿面啮合点坐标值
    
    LG0=LGmrT(e);
    RG0=RGmrT(e);
    
    thetaP=thetaPm(e);
    phic1=phic1m(e);
    
    x1m(e)=subs(x1);
    y1m(e)=subs(y1);
    z1m(e)=subs(z1);
    
    LPmrT(e)=z1m(e)
    RPmrT(e)=sqrt(x1m(e)^2+y1m(e)^2) %……小轮齿面啮合点坐标值
    
    LP0=LPmrT(e);
    RP0=RPmrT(e);
    
    pc10=pc10-dpc10;
    e=e+1;
    
end

for c=1:(e-2)
    LGmr(c)=LGmrT(c);
    RGmr(c)=RGmrT(c);
    LPmr(c)=LPmrT(c);
    RPmr(c)=RPmrT(c); 
end

clear x thetaG phic2 thetaP phic1 pc10;

pc10=0.0;  %……小轮转角初值

for f=1:2*e+1    
    x0m=[thetaGmp;phic2mp;thetaPmp;phic1mp;0.0];%……赋初值,pc20=0.0
    
    options=optimset('Display','off');
    xm=fsolve(@(xm) PINIONave_GEARvex_meshing_lineB(xm,pc10,thetaX0,thetaY0,thetaZ0,dxk20,dyk20,dzk20),x0m,options);
    pc2m(f)=xm(5);

    PC1m(f)=pc10;
    pc10=pc10-dpc10;
    
end

dPC2=pc2m-ZP*PC1m/ZG;

%<<<<<<小轮转角以步长dpc10增加时对应的啮合点计算>>>>>>%

clear e x thetaG phic2 thetaP phic1 pc10;

pc10=0.0;%………………小轮转角初值
e=1;     %………………计数初值

LG00=LGmpr;
RG00=RGmpr;

LP00=LPmpr;
RP00=RPmpr; %……赋判断啮合点位置的初值(计算参考点)

while RG00<K1*LG00+B1 & RG00>=K3*LG00+B3 & RG00<=K4*LG00+B4 & RP00>K6*LP00+B6 & RP00>=K7*LP00+B7 & RP00<=K8*LP00+B8
                                                                                                             %……判断啮合点是否在齿面内
    x0m1=[thetaGmp;phic2mp;thetaPmp;phic1mp;0.0];%………………赋初值,pc2=0.0
       
    options=optimset('Display','off');
    xm0=fsolve(@(x) PINIONave_GEARvex_meshing_lineB(x,pc10,thetaX0,thetaY0,thetaZ0,dxk20,dyk20,dzk20),x0m1,options);
    thetaGm0(e)=xm0(1);
    phic2m0(e)=xm0(2);
    thetaPm0(e)=xm0(3);
    phic1m0(e)=xm0(4);

    thetaG=thetaGm0(e);
    phic2=phic2m0(e);
    
    x2m0(e)=subs(x2);
    y2m0(e)=subs(y2);
    z2m0(e)=subs(z2);
    
    LGmrT0(e)=z2m0(e)
    RGmrT0(e)=sqrt(x2m0(e)^2+y2m0(e)^2) %……大轮齿面啮合点坐标值
    
    LG00=LGmrT0(e);
    RG00=RGmrT0(e);
    
    thetaP=thetaPm0(e);
    phic1=phic1m0(e);
    
    x1m0(e)=subs(x1);
    y1m0(e)=subs(y1);
    z1m0(e)=subs(z1);
    
    LPmrT0(e)=z1m0(e)
    RPmrT0(e)=sqrt(x1m0(e)^2+y1m0(e)^2) %……小轮齿面啮合点坐标值
    
    LP00=LPmrT0(e);
    RP00=RPmrT0(e);
    
    pc10=pc10+dpc10;
    e=e+1;
       
end

for c=1:(e-2)
    LGmr0(c)=LGmrT0(c);
    RGmr0(c)=RGmrT0(c);
    LPmr0(c)=LPmrT0(c);
    RPmr0(c)=RPmrT0(c); 
end

clear f x thetaG phic2 thetaP phic1 pc10;

pc10=0.0;%……小轮转角初值

for f=1:e   
    x0m0=[thetaGmp;phic2mp;thetaPmp;phic1mp;0.0];%……赋初值,pc2=0.0
   
    options=optimset('Display','off');
    xm0=fsolve(@(xm0) PINIONave_GEARvex_meshing_lineB(xm0,pc10,thetaX0,thetaY0,thetaZ0,dxk20,dyk20,dzk20),x0m0,options);
    pc2m0(f)=xm0(5);
 
    PC1m0(f)=pc10;
    pc10=pc10+dpc10;
    
end

dPC20=pc2m0-ZP*PC1m0/ZG;

%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>显示结果<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<%
%………………齿面各投影节点、计算参考点、啮合迹点在平面坐标系中的平移和旋转,便于图形显示………………%

LGr=[LG11 LGm1 LGmn0 LG1n0 LG11];
RGr=[RG11 RGm1 RGmn0 RG1n0 RG11];

LG=cos(gamaf2)*(LGr-LG1n0)+sin(gamaf2)*(RGr-RG1n0);
RG=-sin(gamaf2)*(LGr-LG1n0)+cos(gamaf2)*(RGr-RG1n0);

LG1n=cos(gamaf2)*(LG1nr-LG1n0)+sin(gamaf2)*(RG1nr-RG1n0);
RG1n=-sin(gamaf2)*(LG1nr-LG1n0)+cos(gamaf2)*(RG1nr-RG1n0);

LGmn=cos(gamaf2)*(LGmnr-LG1n0)+sin(gamaf2)*(RGmnr-RG1n0);
RGmn=-sin(gamaf2)*(LGmnr-LG1n0)+cos(gamaf2)*(RGmnr-RG1n0);

LGmp=cos(gamaf2)*(LGmpr-LG1n0)+sin(gamaf2)*(RGmpr-RG1n0);
RGmp=-sin(gamaf2)*(LGmpr-LG1n0)+cos(gamaf2)*(RGmpr-RG1n0);

LGm=cos(gamaf2)*(LGmr-LG1n0)+sin(gamaf2)*(RGmr-RG1n0);
RGm=-sin(gamaf2)*(LGmr-LG1n0)+cos(gamaf2)*(RGmr-RG1n0);

LGm0=cos(gamaf2)*(LGmr0-LG1n0)+sin(gamaf2)*(RGmr0-RG1n0);
RGm0=-sin(gamaf2)*(LGmr0-LG1n0)+cos(gamaf2)*(RGmr0-RG1n0);

LPr=[LP11 LPm1 LPmn0 LP1n0 LP11];
RPr=[RP11 RPm1 RPmn0 RP1n0 RP11];

LP=cos(gamaf1)*(LPr-LP1n0)+sin(gamaf1)*(RPr-RP1n0);
RP=-sin(gamaf1)*(LPr-LP1n0)+cos(gamaf1)*(RPr-RP1n0);

LP1n=cos(gamaf1)*(LP1nr-LP1n0)+sin(gamaf1)*(RP1nr-RP1n0);
RP1n=-sin(gamaf1)*(LP1nr-LP1n0)+cos(gamaf1)*(RP1nr-RP1n0);

LPmn=cos(gamaf1)*(LPmnr-LP1n0)+sin(gamaf1)*(RPmnr-RP1n0);
RPmn=-sin(gamaf1)*(LPmnr-LP1n0)+cos(gamaf1)*(RPmnr-RP1n0);

LPmp=cos(gamaf1)*(LPmpr-LP1n0)+sin(gamaf1)*(RPmpr-RP1n0);
RPmp=-sin(gamaf1)*(LPmpr-LP1n0)+cos(gamaf1)*(RPmpr-RP1n0);

LPm=cos(gamaf1)*(LPmr-LP1n0)+sin(gamaf1)*(RPmr-RP1n0);
RPm=-sin(gamaf1)*(LPmr-LP1n0)+cos(gamaf1)*(RPmr-RP1n0);

LPm0=cos(gamaf1)*(LPmr0-LP1n0)+sin(gamaf1)*(RPmr0-RP1n0);
RPm0=-sin(gamaf1)*(LPmr0-LP1n0)+cos(gamaf1)*(RPmr0-RP1n0);

%………………在坐标系S1中绘制小轮凹面的计算参考点、啮合迹………………%
subplot(2,1,1)
plot(LP,RP,'k');
hold on;
grid off;
axis([-1,21,-2,6])
xlabel('X1');ylabel('Y1');
plot([LP1n LPmn],[RP1n RPmn],'k');
plot(LPmp,RPmp,'r*');
plot(LPm,RPm,'k.-');
plot(LPm0,RPm0,'k.-');

text(7,-1,'小轮凹面啮合迹');

%………………在坐标系S2中绘制大轮凸面的计算参考点、啮合迹………………%
subplot(2,1,2)
plot(LG,RG,'k');
hold on;
grid off;
axis([-1,21,-2,6])
xlabel('X2');ylabel('Y2');

plot([LG1n LGmn],[RG1n RGmn],'k');
plot(LGmp,RGmp,'r*');
plot(LGm,RGm,'k.-');
plot(LGm0,RGm0,'k.-');

text(7,-1,'大轮凸面啮合迹');

%………………传动误差曲线………………%
figure(2);

plot(pc2m,dPC2,'k');
%axis([-0.2,0.2,-9e-4,1e-4])
title('传动误差曲线');
xlabel('大轮转角/rad');
ylabel('大轮转角误差/rad');
hold on;
grid off;
plot(pc2m0,dPC20,'k');

plot(pc2m-2*pi/ZG,dPC2,'k');
plot(pc2m+2*pi/ZG,dPC2,'k');
plot(pc2m0-2*pi/ZG,dPC20,'k');
plot(pc2m0+2*pi/ZG,dPC20,'k');

toc; %………………结束计时语句,与起始的tic配合

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -