?? jisuan.m
字號:
function T_SimulationData = jisuan( T_SimulationData ) ;
% this module simulate the data .
%計算舉升中各點坐標,及桿件受力,速度,加速度
% February 2004
% $Revision: 1.00 $
x1 = T_SimulationData.Position(1).x1;
x2 = T_SimulationData.Position(1).x2;
x3 = T_SimulationData.Position(1).x3;
x4 = T_SimulationData.Position(1).x4;
x5 = T_SimulationData.Position(1).x5;
x6 = T_SimulationData.Position(1).x6;
x7 = T_SimulationData.Position(1).x7;
x8 = T_SimulationData.Position(1).x8;
x9 = T_SimulationData.Position(1).x9;
x10 = T_SimulationData.Position(1).x10;
x11 = T_SimulationData.Position(1).x11;
x12 = T_SimulationData.Position(1).x12;
angel = T_SimulationData.Jiaodu;
Sudu = T_SimulationData.Sudu;
Zhongliang = T_SimulationData.Zhongliang;
Julidizuo = T_SimulationData.Julidizuo;
Zhijing = T_SimulationData.Zhijing;
%調用位置計算函數
for i=1:(angel+1);
[xa(i),ya(i),xb(i),yb(i),xc(i),yc(i),xm(i),ym(i),xg(i),yg(i),d1(i),d2(i),d3(i),d4(i),d5(i),d6(i),fo(i),fa(i),fj(i)] = shouli(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,(i-1));
%v1 v2 v3 v4 表示構件轉速; a1 a2 a3 a4 表示構件加速度;
L(i)=D_2point(xc(i),yc(i),x5,x6);
xx1 = -Julidizuo*sin((i-1)*pi/180);
yy1 = Julidizuo*cos((i-1)*pi/180);
xx2 = 100;
yy2 = tan((i-1)*pi/180)*(xx2-xx1)+yy1;
D(i) = DDX(xc(i),yc(i),xx1,yy1,xx2,yy2);
P(i) = Zhongliang*fo(i)/(pi*((Zhijing/2)^2));
Position(i).fo =fo(i);
Position(i).fa =fa(i);
Position(i).fj =fj(i);
Position(i).L = L(i);
Position(i).D = D(i);
Position(i).P = P(i);
Position(i).aco2 = cdjiao(xc(i),xa(i),x5,yc(i),ya(i),x6);
Position(i).abo1 = cdjiao(xb(i),xa(i),x3,yb(i),ya(i),x4);
%調用鉸支點受力計算函數
[fxo(i),fyo(i),fxa(i),fya(i),fxb(i),fyb(i),fxc(i),fyc(i),fxo1(i),fyo1(i),fxo2(i),fyo2(i),ffa(i),ffb(i),ffc(i),ffo(i),ffo1(i),ffo2(i)] =jiaozhishouli(x3,x4,x5,x6,xa(i),ya(i),xb(i),yb(i),xc(i),yc(i),xg(i),yg(i))
Zhizuo(i).fxo=fxo(i);
Zhizuo(i).fyo=fyo(i);
Zhizuo(i).fxa=fxa(i);
Zhizuo(i).fya=fya(i);
Zhizuo(i).fxb=fxb(i);
Zhizuo(i).fyb=fyb(i);
Zhizuo(i).fxc=fxc(i);
Zhizuo(i).fyc=fyc(i);
Zhizuo(i).fxo1=fxo1(i);
Zhizuo(i).fyo1=fyo1(i);
Zhizuo(i).fxo2=fxo2(i);
Zhizuo(i).fyo2=fyo2(i);
Zhizuo(i).ffa=ffa(i);
Zhizuo(i).ffb=ffb(i);
Zhizuo(i).ffc=ffc(i);
Zhizuo(i).ffo=ffo(i);
Zhizuo(i).ffo1=ffo1(i);
Zhizuo(i).ffo2=ffo2(i);
end
%優化后計算結果
x111 = T_SimulationData.x(1);
x222 = T_SimulationData.x(2);
x333 = T_SimulationData.x(3);
x444 = T_SimulationData.x(4);
x555 = T_SimulationData.x(5);
x666 = T_SimulationData.x(6);
x777 = T_SimulationData.x(7);
x888 = T_SimulationData.x(8);
x999 = T_SimulationData.x(9);
x1000 = T_SimulationData.x(10);
for i=1:(angel+1);
[xay(i),yay(i),xby(i),yby(i),xcy(i),ycy(i),xmy(i),ymy(i),xgy(i),ygy(i),d1(i),d2(i),d3(i),d4(i),d5(i),d6(i),foy(i),fay(i),fjy(i)] = shouli(x111,x222,x333,x444,x555,x666,x777,x888,x999,x1000,x11,x12,(i-1));
%v1 v2 v3 v4 表示構件轉速; a1 a2 a3 a4 表示構件加速度;
L(i)=D_2point(xcy(i),ycy(i),x5,x6);
xx1 = -Julidizuo*sin((i-1)*pi/180);
yy1 = Julidizuo*cos((i-1)*pi/180);
xx2 = 100;
yy2 = tan((i-1)*pi/180)*(xx2-xx1)+yy1;
D(i) = DDX(xcy(i),ycy(i),xx1,yy1,xx2,yy2);
P(i) = Zhongliang*foy(i)/(pi*((Zhijing/2)^2));
Position_yh(i).x1 =xay(i);
Position_yh(i).x2 =yay(i);
Position_yh(i).x3 =x333;
Position_yh(i).x4 =x444;
Position_yh(i).x5 =x555;
Position_yh(i).x6 =x666;
Position_yh(i).x7 =x777;
Position_yh(i).x8 =x888;
Position_yh(i).x9 =x999;
Position_yh(i).x10 =x1000;
Position_yh(i).x11 =xgy(i);
Position_yh(i).x12 =ygy(i);
Position_yh(i).fo =foy(i);
Position_yh(i).fa =fay(i);
Position_yh(i).fj =fjy(i);
Position_yh(i).xc =xcy(i);
Position_yh(i).yc =ycy(i);
Position_yh(i).xb =xby(i);
Position_yh(i).yb =yby(i);
Position_yh(i).xm =xmy(i);
Position_yh(i).ym =ymy(i);
Position_yh(i).L = L(i);
Position_yh(i).D = D(i);
Position_yh(i).P = P(i);
Position_yh(i).aco2 = cdjiao(xcy(i),xay(i),x5,ycy(i),yay(i),x6);
Position_yh(i).abo1 = cdjiao(xby(i),xay(i),x3,yby(i),yay(i),x4);
%調用鉸支點受力計算函數
[fxoy(i),fyoy(i),fxay(i),fyay(i),fxby(i),fyby(i),fxcy(i),fycy(i),fxo1y(i),fyo1y(i),fxo2y(i),fyo2y(i),ffay(i),ffby(i),ffcy(i),ffoy(i),ffo1y(i),ffo2y(i)] =jiaozhishouli(x333,x444,x555,x666,xay(i),yay(i),xby(i),yby(i),xcy(i),ycy(i),xg(i),yg(i))
Zhizuo_yh(i).fxo=fxoy(i);
Zhizuo_yh(i).fyo=fyoy(i);
Zhizuo_yh(i).fxa=fxay(i);
Zhizuo_yh(i).fya=fyay(i);
Zhizuo_yh(i).fxb=fxby(i);
Zhizuo_yh(i).fyb=fyby(i);
Zhizuo_yh(i).fxc=fxcy(i);
Zhizuo_yh(i).fyc=fycy(i);
Zhizuo_yh(i).fxo1=fxo1y(i);
Zhizuo_yh(i).fyo1=fyo1y(i);
Zhizuo_yh(i).fxo2=fxo2y(i);
Zhizuo_yh(i).fyo2=fyo2y(i);
Zhizuo_yh(i).ffa=ffay(i);
Zhizuo_yh(i).ffb=ffby(i);
Zhizuo_yh(i).ffc=ffcy(i);
Zhizuo_yh(i).ffo=ffoy(i);
Zhizuo_yh(i).ffo1=ffo1y(i);
Zhizuo_yh(i).ffo2=ffo2y(i);
end
T_SimulationData.Position_yh = Position_yh;
T_SimulationData.Zhizuo_yh = Zhizuo_yh;
T_SimulationData.Position = Position ;
T_SimulationData.Zhizuo = Zhizuo ;
%計算速度,加速度函數
function [j1,j2,j3,j4,j30,L1,L2,L3,L4,L30,v1,v2,v3,v4,a1,a2,a3,a4]=sudu(xa,ya,xb,yb,xc,yc,xm,ym,xg,yg,x3,x4,x5,x6,x7,x8,x9,x10,angel,Sudu)
if x5==xc;
j1=90;
else j1=atan((yc-x6)/(xc-x5))*180/pi;
end
if xb==x3;
j2=90;
else j2=atan((yb-x4)/(xb-x3))*180/pi;
end
if xa==xb;
j3=90;
else j3=atan((yb-ya)/(xb-xa))*180/pi;
end
j4=(atan(ya/xa)-atan(x6/x5))*180/pi;
if xc==xa;
j30=90;
else j30=atan((yc-ya)/(xc-xa))*180/pi;
end
L1=D_2point(xc,yc,x5,x6);
L2=D_2point(xb,yb,x3,x4);
L3=D_2point(xa,ya,xb,yb);
L4=D_2point(xa,ya,0,0);
L30=D_2point(xa,ya,xc,yc);
m1=cos((j3-j2)*pi/180);m2=sin((j3-j2)*pi/180);m3=cos((j4-j2)*pi/180);
m4=sin((j4-j2)*pi/180);m5=cos((j30-j1)*pi/180);m6=sin((j30-j1)*pi/180);
m7=cos((j4-j1)*pi/180);m8=sin((j4-j1)*pi/180);
v4=Sudu*L3*m2/(L30*L4*m6*m4-L3*L4*m2*m8);
v3=-L4*m4*v4/(L3*m2);
v1=(L30*v3*m5+L4*v4*m7)/L1;
v2=(L3*v3*m1+L4*v4*m3)/L2;
a4=(L3*m2*(L1*v1*v1-L30*v3*v3*m5-L4*v4*v4*m7)+m6*L30*(L3*v3*v3*m1+L4*v4*v4*m3-L2*v2*v2))/(L3*L4*m2*m8-L4*L30*m4*m6);
a3=(L2*v2*v2-L3*v3*v3*m1-L4*v4*v4*m3-L4*m4*a4)/(L3*m2);
a1=(L30*a3*m5-L30*v3*v3*m6+L4*a4*m7-L4*v4*v4*m8-2*Sudu*v1)/L1;
a2=(L3*a3*m1-L3*v3*v3*m2+L4*a4*m3-L4*v4*v4*m4)/L2;
%--------------------------------------------------------------------------
function [xa,ya,xb,yb,xc,yc,xm,ym,xg,yg,d1,d2,d3,d4,d5,d6,fo,fa,fj]=shouli(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x0g,y0g,angel)
%fo 油缸舉升力,fa拉桿,fj舉升機構舉升力
a=0;b=0;c=0;d=0;e=0;f=0; h=0;k=0;
m=0;n=0;p=0;q=0;r=0;s=0;t=0;u=0; % A點坐標 a,b xa,ya
Fo=0;Fa=0;Fj=0; % B點坐標 c,d xb,yb
[a,b]=ZJ(x1,x2,angel); % C點坐標 e,f xc,yc
[c,d]=JDC1(a,b,x3,x4,x9,x10); % M點坐標 m,n xm,ym
[e,f]=JDC2(a,b,c,d,x8,x7); % G點坐標 h,k xg,yg
[h,k]=ZJ(x0g,y0g,angel); % d1 質心到原點距離
[m,n]=JFC(c,d,x3,x4,e,f,x5,x6); % d2 原點到舉升力距離
r=DDX(c,d,a,b,m,n); % d3 B點到舉升力距離
s=DDX(c,d,e,f,m,n); % d4 B點到油缸力距離
p=h;
% d5 C點到舉升力距離
q=DDX(0,0,a,b,m,n); % d6 C點到拉桿力距離
t=DDX(e,f,a,b,m,n); % fj 舉升機構舉升力
u=DDX(e,f,c,d,x3,x4); % fo 油缸靜態舉升力
Fj=p/(q+eps); % fa 拉桿力
Fo=(Fj*r)/(s+eps);
Fa=(Fj*t)/(u+eps);
xa=a;ya=b;
xb=c;yb=d;
xc=e;yc=f;
xm=m;ym=n;
xg=h;yg=k;
d1=p;d2=q;d3=r;d4=s;d5=t;d6=u;fo=Fo;fa=Fa;fj=Fj;
function [x0,y0]=JFC(x1,y1,x2,y2,x3,y3,x4,y4)
% 以知點x1,y1和點x2,y2的連線 點x3,y3和點x4,y4的連線 求交點坐標
m=y1*(x2-x1)-x1*(y2-y1);
n=y3*(x4-x3)-x3*(y4-y3);
a=m*(x4-x3)-n*(x2-x1);
b=n*(y1-y2)-m*(y3-y4);
c=(y1-y2)*(x4-x3)-(y3-y4)*(x2-x1);
x0=a/(c+eps);
y0=b/(c+eps);
function [x0,y0]=JDC2(x1,y1,x2,y2,m,n)
% 點x1,y1為三角架與車箱鉸點,點x2,y2首先求得的三角架上的點,m n 均為三角架邊長,m 為x1,y1點與所求點連線
% 求另一三角架鉸點
% 點為上面點
a3=(y1-y2)/(x2-x1+eps);
c3=(m^2+x2^2+y2^2-x1^2-y1^2-n^2)/(2*(x2-x1)+eps);
a4=a3^2+1;
b4=2*(a3*c3-a3*x1-y1);
c4=x1^2+y1^2+c3^2-2*c3*x1-m^2;
y0=(-b4+sqrt(b4^2-4*a4*c4))/(2*a4+eps);
x0=a3*y0+c3;
function [x0,y0]=JDC1(x1,y1,x2,y2,m,n)
% 點x1,y1為三角架與車箱鉸點,點x2,y2為拉桿與副車架鉸點,m為三角架下桿n 為拉桿長,求一三角架鉸點
a1=(x1-x2)/(y2-y1+eps);
c1=(m^2+x2^2+y2^2-x1^2-y1^2-n^2)/(2*(y2-y1)+eps);
a2=a1^2+1;
b2=2*(a1*c1-a1*y2-x2);
c2=x2^2+y2^2+c1^2-2*c1*y2-n^2;
x0=(-b2+sqrt(b2^2-4*a2*c2))/(2*a2+eps);
y0=a1*x0+c1;
function y=D_2point(x1,y1,x2,y2)
%求兩點間離
y=sqrt((x1-x2)^2+(y1-y2)^2);
function d=DDX(x0,y0,x1,y1,x2,y2)
% 求點到直線的距離
a=y1-y2;
b=x2-x1;
c=x1*(y2-y1)-y1*(x2-x1);
m=abs(a*x0+b*y0+c);
n=sqrt(a^2+b^2)+eps;
d=m/n;
function [x,y]=ZJ(x0,y0,a)
%子程序 點繞原點轉過a度后的坐標
x=x0*cos(pi*a/180)-y0*sin(pi*a/180);
y=x0*sin(pi*a/180)+y0*cos(pi*a/180);
%鉸支座受力
function [fxo,fyo,fxa,fya,fxb,fyb,fxc,fyc,fxo1,fyo1,fxo2,fyo2,ffa,ffb,ffc,ffo,ffo1,ffo2] =jiaozhishouli(xxo1,xyo1,xxo2,xyo2,xxa,xya,xxb,xyb,xxc,xyc,xxg,xyg)
xc=xxa; yc=xya; xa=xxb; ya=xyb; xb=xxc; yb=xyc; xo1=0; yo1=0; xo2=xxo1; yo2=xyo1; xo3=xxo2; yo3=xyo2;
ga=heli(xxg,xyg)*cos(atan(xyg/xxg));g=1;
m1=xc-xo1;
m2=yc-yo1;
m3=ya-yc;
m4=xa-xc;
m5=yb-yc;
m6=xb-xc;
m7=yb-yo3;
m8=xb-xo3;
m9=ya-yo2;
m10=xa-xo2;
R21x=ga*(m7*m10*m6-m10*m5*m8-m8*m9*m4+m8*m3*m10)/(m7*m9*m1*m6-m7*m1*m9*m4-m7*m2*m10*m6+m2*m8*m9*m4-m9*m1*m5*m8+m7*m1*m3*m10+m2*m10*m5*m8-m2*m8*m3*m10);
R21y=ga*(m9*m7*m6-m9*m7*m4-m9*m5*m8+m7*m3*m10)/(m7*m9*m1*m6-m7*m1*m9*m4-m7*m2*m10*m6+m2*m8*m9*m4-m9*m1*m5*m8+m7*m1*m3*m10+m2*m10*m5*m8-m2*m8*m3*m10);
R32x=-ga*(-m7*m6+m5*m8)/(m7*m9*m1*m6-m7*m1*m9*m4-m7*m2*m10*m6+m2*m8*m9*m4-m9*m1*m5*m8+m7*m1*m3*m10+m2*m10*m5*m8-m2*m8*m3*m10)*m10;
R32y=-m9*ga*(-m7*m6+m5*m8)/(m7*m9*m1*m6-m7*m1*m9*m4-m7*m2*m10*m6+m2*m8*m9*m4-m9*m1*m5*m8+m7*m1*m3*m10+m2*m10*m5*m8-m2*m8*m3*m10);
R42x=ga*(-m9*m4+m3*m10)/(m7*m9*m1*m6-m7*m1*m9*m4-m7*m2*m10*m6+m2*m8*m9*m4-m9*m1*m5*m8+m7*m1*m3*m10+m2*m10*m5*m8-m2*m8*m3*m10)*m8;
R42y=ga*m7*(-m9*m4+m3*m10)/(m7*m9*m1*m6-m7*m1*m9*m4-m7*m2*m10*m6+m2*m8*m9*m4-m9*m1*m5*m8+m7*m1*m3*m10+m2*m10*m5*m8-m2*m8*m3*m10);
R51x=-R21x;
R51y=-R21y+g;
R53x=R32x;
R53y=R32y;
R54x=R42x;
R54y=R42y;
fxo=R51x;fyo=R51y;fxa=R21x;fya=R21y;fxb=R32x;fyb=R32y;fxc=R42x;fyc=R42y;
fxo1=R53x;fyo1=R53y;fxo2=R54x;fyo2=R54y;ffa=heli(fxa,fya);ffb=heli(fxb,fyb);ffc=heli(fxc,fyc);ffo=heli(fxo,fyo);
ffo1=heli(fxo1,fyo1);ffo2=heli(fxo2,fyo2);
function f=heli(x,y) %合力
f=sqrt(x^2+y^2);
function f=cdjiao(xa,xb,xc,ya,yb,yc) % 求角a
a1=D_2point(xa,ya,xb,yb);
a2=D_2point(xa,ya,xc,yc);
a3=D_2point(xc,yc,xb,yb);
f=acos((a1^2+a2^2-a3^2)/(2*a1*a2+eps))*180/pi;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -