global Xa Ya Xc Yc
global L_cf L_cd L_bc L_cg L_fq L_ef L_qv L_kq L_hq L_nq L_hv L_hm L_1max L_1min L_2max L_2min L_3max L_3min L_4max L_4min
global L_ac L_df L_fg
global A1 A2 A3 A4 A5 A6 A7 A8
global B0 B1 B2
Xa=1960;Ya=1900;Xc=660;Yc=3000;
L_cf=5800;L_cd=2335;A1=0.14;L_bc=4800;A2=0.035;L_cg=5100;A3=0.0504; %动臂及其各铰点位置参数
L_fq=4400;L_ef=1320;A4=0.175; %斗杆及其各铰点位置参数
L_qv=2600;L_kq=800;L_hq=700;A5=2.53;L_nq=640;A6=0.7;
L_hv=2110;L_hm=300;A7=2.7; %铲斗及其各铰点位置参数
L_1max=5000;L_2max=4800;L_3max=4400;L_4max=1200;
L_1min=3000;L_2min=3000;L_3min=3300;L_4min=700; %液压油缸最大/小长度
B0=atan((Xa-Xc)/(Yc-Ya));
L_ac=sqrt((Xa-Xc).^2+(Yc-Ya).^2); %机座及其各铰点位置参数
L_df=sqrt(L_cd.^2+L_cf.^2-2*L_cd*L_cf*cos(A1));
B1=acos((L_cf.^2+L_df.^2-L_cd.^2)/2*L_cf*L_df);
L_fg=sqrt(L_cf.^2+L_cg.^2-2*L_cg*L_cf*cos(A3));
B2=acos((L_cf.^2+L_fg.^2-L_cg.^2)/2*L_cf*L_fg);
F1=acos((L_bc^2+L_ac^2-L_1^2)/2*L_bc*L_ac)+A2-B0;
Xf=Xc+L_cf*cos(F1);Yf=Yc+L_cf*sin(F1);
Xb=Xc+L_bc*cos(F1-A2);Yb=Yc+L_bc*sin(F1-A2);
Xd=Xc+L_cd*cos(F1-A1);Yb=Yc+L_cd*sin(F1-A1);
Xg=Xc+L_cg*cos(F1-A3);Yb=Yc+L_cg*sin(F1-A3);
F2=acos((L_df^2+L_ef^2-L_2^2)/2*L_df*L_ef)+B1+A4;
Xe=Xf+L_ef*cos(pi-F1-F2+A4);Ye=Yf-L_ef*sin(pi-F1-F2+A4);
Xq=Xf+L_fq*cos(pi-F1-F2);Yq=Yf-L_fq*sin(pi-F1-F2);
L_gq=sqrt(L_fg^2+L_fq^2-2*L_fg*L_fq*cos(F2-B2));
f0=acos((L_gq^2+L_kq^2-L_3^2)/2*L_gq*L_kq)+acos((L_gq^2+L_fq^2-L_fg^2)/2*L_gq*L_fq);
Xk=Xq-L_kq*cos(f0+F1+F2-pi);Yk=Yq-L_kq*sin(f0+F1+F2-pi);
Xn=Xq+L_nq*cos(2*pi-f0-F1-F2-A6);Yn=Yq-L_nq*sin(2*pi-f0-F1-F2-A6);
Xh=Xq+L_hq*cos(A5+f0+F1+F2-2*pi);Yh=Yq+L_hq*sin(A5+f0+F1+F2-2*pi);
L_hn=sqrt(L_nq^2+L_hq^2-2*L_nq*L_hq*cos(A5-A6));
f1=acos((L_hq^2+L_hv^2-L_qv^2)/2*L_hq*L_hv); %临时变量
f2=2*pi-f1-A7;
L_mq=sqrt(L_hm^2+L_hq^2-2*L_hm*L_hq*cos(f2));
L_mv=sqrt(L_hm^2+L_hv^2-2*L_hm*L_hv*cos(A7));
F3=2*pi-f0-A6-acos((L_mq^2+L_nq^2-L_4^2)/2*L_mq*L_nq)+acos((L_mq^2+L_qv^2-L_mv^2)/2*L_mq*L_qv);
Xv=Xq+L_qv*cos(F1+F2-F3);Yv=Yq+L_qv*sin(F1+F2-F3);
Xm=Xq+L_mq*cos(F1+F2-F3+acos((L_mq^2+L_qv^2-L_mv^2)/2*L_mq*L_qv));
Ym=Yq+L_mq*sin(F1+F2-F3+acos((L_mq^2+L_qv^2-L_mv^2)/2*L_mq*L_qv));
figure
axis equal
L_2=L_2max;L_3=L_3max;L_4=L_4max;
for L_1=L_1min:10:L_1max
plot(Xv,Yv)
end
hold on
L_1=L_1max;L_3=L_3max;L_4=L_4max;
for L_2=L_2min:10:L_2max
plot(Xv,Yv)
end
L_1=L_1max;L_2=L_2max;L_4=L_4max;
for L_3=L_3min:10:L_3max
plot(Xv,Yv)
end
L_1=L_1max;L_2=L_2max;L_3=L_3max;
for L_4=L_4min:10:L_4max
plot(Xv,Yv)
end
hold off