📄 liu_pinionave_gearvex_meshing_lineb.m
字号:
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 + -