Компьютерное моделирование задач кинетостатики плоских рычажных механизмов

Страницы работы

Фрагмент текста работы

OutTextXY(20,460,'Выход из программы - Esc');     j := i + 330; if j >= 360 then j := j - 360;     fi1 := j*pi/180;

bx := l1*cos(fi1); by := l1*sin(fi1);     {vbx := - l1*sin(fi1); vby := l1*cos(fi1);     abx := - l1*cos(fi1); aby := - l1*sin(fi1);}     vbx := - by; vby := bx; abx := - bx; aby := - by;

Diada3v(bx,by,vbx,vby,abx,aby,cx,cy,0,0,0,0,l2,fi3,om3,epsi3,lcb,v3,a3);

dx := cx + lcd*cos(fi3); dy := cy + lcd*sin(fi3);     vdx := - lcd*sin(fi3)*om3; vdy := lcd*cos(fi3)*om3;     adx := -lcd*(cos(fi3)*sqr(om3) + sin(fi3)*epsi3);     ady := lcd*(- sin(fi3)*sqr(om3) + cos(fi3)*epsi3);     Diada2v(dx,dy,vdx,vdy,adx,ady,cx,cy,0,0,0,0,fi5,0,0,l4,l5,     fi4,om4,epsi4,ecx,v5,a5);     {circle(cmx,cmy,3);}     CoordXY(cmx,cmy);

Opora(cmx,cmy); OutTextXY(cmx - 10,cmy - 15,'A');     x1 := cmx + round(kl*bx); y1 := cmy - round(kl*by);     x3 := x1; y3 := y1;

moveto(cmx,cmy); lineto(x1,y1); circle(x1,y1,3);     OutTextXY(x1 - 10,y1 - 15,'B');

x1 := cmx + round(kl*cx); y1 := cmy - round(kl*cy);

Opora(x1,y1);

OutTextXY(x1 - 10,y1 - 15,'C');     moveto(x1,y1);

x2 := x1 + round(kl*l3*cos(fi3));     y2 := y1 - round(kl*l3*sin(fi3));     lineto(x2,y2);

x2 := x1 + round(kl*lcb*cos(fi3));     y2 := y1 - round(kl*lcb*sin(fi3));

PostPara(x2,y2,fi3); line(cmx,cmy,x3,y3); circle(x3,y3,3);     x1 := x1 + round(kl*lcd*cos(fi3));     y1 := y1 - round(kl*lcd*sin(fi3));     OutTextXY(x1 - 10,y1 - 15,'D');     circle(x1,y1,3); moveto(x1,y1);     x2 := x1 + round(kl*l4*cos(fi4));     y2 := y1 - round(kl*l4*sin(fi4));     PostPara(x2,y2,fi5); Circle(x2,y2,3);     line(x1,y1,x2,y2); circle(x2,y2,3);     OutTextXY(x2 + 10,y2 - 15,'E');     line(cmx + 50,y2,cmx + 150,y2);     if ((i >= 12) and (i < 228)) then

begin

SetColor(red);       Fc := 1000;       alfafc := 0.0;       x1 := x2 + round(kf*Fc);       Line(x2,y2,x1,y2);

OutTextXY(x1 - 10,y2 - 15,'Fc');

Moveto(x1,y2); Lineto(x1 - 10,y2 + 5);

Moveto(x1,y2); Lineto(x1 - 10,y2 - 5);

SetColor(white);     end       else     Fc := 0;

x1 := cmx + round(kl*cx); y1 := cmy - round(kl*cy);     x2 := x1 + round(kl*lcs3*cos(fi3));     y2 := y1 - round(kl*lcs3*sin(fi3));     OutTextXY(x2 - 15,y2 - 15,'S3');     setcolor(red); line(x2,y2,x2,y2 + round(kf*G3));     x1 := x2; y1 := y2 + round(kf*G3);     OutTextXY(x1,y1 + 15,'G3');     moveto(x1,y1); lineto(x1 - 3,y1 - 5);     moveto(x1,y1); lineto(x1 + 3,y1 - 5);     x1 := cmx + round(kl*cx); y1 := cmy - round(kl*cy);     x2 := x1 + round(kl*lcd*cos(fi3));     y2 := y1 - round(kl*lcd*sin(fi3));     x1 := x2 + round(kl*lds4*cos(fi4));     y1 := y2 - round(kl*lds4*sin(fi4));     SetColor(white);

OutTextXY(x1 - 5,y1 - 15,'S4');

SetColor(red);

moveto(x1,y1); lineto(x1,y1 + round(kf*G4));     x2 := x1; y2 := y1 + round(kf*G4);     OutTextXY(x2,y2 + 15,'G4');     moveto(x2,y2); lineto(x2 + 3,y2 - 5);     moveto(x2,y2); lineto(x2 - 3,y2 - 5);     x1 := cmx + round(kl*cx); y1 := cmy - round(kl*cy);     x2 := x1 + round(kl*lcd*cos(fi3));     y2 := y1 - round(kl*lcd*sin(fi3));     x2 := x2 + round(kl*l4*cos(fi4));     y2 := y2 - round(kl*l4*sin(fi4));     moveto(x2,y2); lineto(x2,y2 + round(kf*G5));     x1 := x2; y1 := y2 + round(kf*G5);     OutTextXY(x1,y1 + 15,'G5');     moveto(x1,y1); lineto(x1 + 3,y1 - 5);     moveto(x1,y1); lineto(x1 - 3,y1 - 5);     setcolor(white);

{ Определение сил инерции }

{ Сила инерции Fin3 }

as3x := - lcs3*(cos(fi3)*sqr(om3) + sin(fi3)*epsi3);     as3y := lcs3*(- sin(fi3)*sqr(om3) + cos(fi3)*epsi3);     alfafin3 := Atan2(as3x,as3y) +  pi;

if alfafin3 >= 2*pi then alfafin3 := alfafin3 - 2*pi;     Fin3 := sqr(om1)*m3*sqrt(sqr(as3x) + sqr(as3y));     x1 := cmx + round(kl*(cx + lcs3*cos(fi3)));     y1 := cmy - round(kl*(cy + lcs3*sin(fi3)));     moveto(x1,y1);

x2 := x1 + round(kf*Fin3*cos(alfafin3));     y2 := y1 - round(kf*Fin3*sin(alfafin3));

SetColor(blue);     lineto(x2,y2);     x3 := x2; y3 := y2;     { Рисование стрелки }

Row(alfafin3);

{}

Vs3x := - lcs3*om3*sin(fi3); Vs3y := lcs3*om3*cos(fi3);

Vs3 := sqrt(sqr(Vs3x) + sqr(Vs3y));     alfavs3 := Atan2(Vs3x,Vs3y);

if alfavs3 > 2*pi then alfavs3 := alfavs3 - 2*pi;

{}

{ Сила инерции Fin4 }

as4x := adx - lds4*(cos(fi4)*sqr(om4) + sin(fi4)*epsi4);     as4y := ady - lds4*(sin(fi4)*sqr(om4) - cos(fi4)*epsi4);     Fin4 := sqr(om1)*m4*sqrt(sqr(as4x) + sqr(as4y));     alfafin4 := Atan2(as4x,as4y) + pi;

if alfafin4 >= 2*pi then alfafin4 := alfafin4 - 2*pi;     x1 := cmx + round(kl*(cx + lcd*cos(fi3) + lds4*cos(fi4)));     y1 := cmy - round(kl*(cy + lcd*sin(fi3) + lds4*sin(fi4)));     moveto(x1,y1);

x2 := x1 + round(kf*Fin4*cos(alfafin4));     y2 := y1 - round(kf*Fin4*sin(alfafin4));     lineto(x2,y2);     x3 := x2; y3 := y2;     { Рисование стрелки }

Row(alfafin4);

{}

Vs4x := Vdx - lds4*om4*sin(fi4); Vs4y := Vdy + lds4*om4*cos(fi4);

Vs4 := sqrt(sqr(Vs4x) + sqr(Vs4y));     alfavs4 := Atan2(Vs4x,Vs4y);

if alfavs4 > 2*pi then alfavs4 := alfavs4 - 2*pi;

{ Сила инерции Fin5 }     Fin5 := abs(sqr(om1)*m5*a5);     alfafin5 := Atan2(a5,0) + pi;

if alfafin5 >= 2*pi then alfafin5 := alfafin5 - 2*pi;     x1 := cmx + round(kl*(cx + ecx)); y1 := cmy - round(kl*cy);     x2 := x1 + round(kf*Fin5*cos(alfafin5));     y2 := y1 - round(kf*Fin5*sin(alfafin5));     x3 := x2; y3 := y2;

moveto(x1,y1); lineto(x2,y2);     { Рисование стрелки }

Row(alfafin5);

{ Определение моментов от сил инерции }

Momin3 := - sqr(om1)*Is3*epsi3;

Momin4 := - sqr(om1)*Is4*epsi4;

{Procedure Diada2f(l2,fi2,s2x,s2y,p2x,p2y,G2,Fin2,alfafin2,F2,alfaf2,M2,Min2,     l3,fi3,s3x,s3y,p3x,p3y,G3,Fin3,alfafin3,F3,alfaf3,M3,Min3: real; var F21,     alfaf21,F23,alfaf23,F34,hx: real);}

Diada2f(l4,fi4,lds4,0,0,0,G4,Fin4,alfafin4,0,0,0,Momin4,     0,0,0,0,0,0,G5,Fin5,alfafin5,Fc,0,0,0,F43,alfaf43,F45,alfaf45,F50,     alfaf50,hx5);

F34 := F43; alfaf34 := alfaf43 + pi;

if F34 < 0 then begin F34 := abs(F34); alfaf34 := alfaf34 + pi end;     if alfaf34 >= 2*pi then alfaf34 := alfaf34 - 2*pi;

{Procedure Diada3f(l2,s2x,s2y,p2x,p2y,G2,Fin2,alfafin2,F2,alfaf2,M2,Min2,     l3,fi3,s3x,s3y,p3x,p3y,G3,Fin3,alfafin3,F3,alfaf3,M3,Min3: real; var F34,     alfaf34,F32,hx,F21,alfaf21: real);}

Diada3f(0,0,0,0,0,0,0,0,0,0,0,0,lcb,fi3,lcs3,0,lcd,0,G3,Fin3,alfafin3,F34,     alfaf34,0,Momin3,F30,alfaf30,F32,alfaf32,hx3,F21,alfaf21);     F23 := F32; alfaf23 := alfaf32 + pi;

if alfaf23 >= 2*pi then alfaf23 := alfaf23 - 2*pi;     F12 := F21; alfaf12 := alfaf21 + pi;

if F12 < 0 then begin F12 := abs(F12); alfaf12 := alfaf12 + pi end;     if alfaf12 >= 2*pi then alfaf12 := alfaf12 - 2*pi;     if alfaf30 >= 2*pi then alfaf30 := alfaf30 - 2*pi;

{Procedure InitLink(l1,fi1,F12,alfaf12: real; var Fur,F10,alfaf10: real);}     InitLink(l1,fi1,F12,alfaf12,Fur,alfafur,F10,alfaf10);

SetColor(green);

x1 := cmx; y1 := cmy; x2 := x1 + round(kf*F10*cos(alfaf10));     y2 := y1 - round(kf*F10*sin(alfaf10));

x3 := x2; y3 := y2;

moveto(x1,y1); lineto(x3,y3); Row(alfaf10);     x1 := cmx + round(kl*cx); y1 := cmy - round(kl*cy);     x2 := x1 + round(kf*F30*cos(alfaf30)); x3 := x2;     y2 := y1 - round(kf*F30*sin(alfaf30)); y3 := y2;     moveto(x1,y1); Lineto(x3,y3); Row(alfaf30);     if alfaf50 >= 2*pi then alfaf50 := alfaf50 - 2*pi;     x1 := cmx + round(kl*(ecx + hx5)); y1 := cmy - round(kl*cy);     x2 := x1 + round(kf*F50*cos(alfaf50)); x3 := x2;     y2 := y1 - round(kf*F50*sin(alfaf50)); y3 := y2;     moveto(x1,y1); Lineto(x3,y3); Row(alfaf50);     x1 := cmx + round(kl*ecx); y1 := cmy - round(kl*cy);     x2 := x1 + round(kf*F45*cos(alfaf45)); x3 := x2;     y2 := y1 - round(kf*F45*sin(alfaf45)); y3 := y2;     moveto(x1,y1); lineto(x3,y3); Row(alfaf45);     x1 := cmx + round(kl*lcd*cos(fi3));     y1 := cmy - round(kl*(cy + lcd*sin(fi3)));     x2 := x1 + round(kf*F43*cos(alfaf43)); x3 := x2;     y2 := y1 - round(kf*F43*sin(alfaf43)); y3 := y2;     moveto(x1,y1); lineto(x3,y3); Row(alfaf43);     x1 := cmx + round(kl*lcd*cos(fi3));     y1 := cmy - round(kl*(cy + lcd*sin(fi3)));     x2 := x1 + round(kf*F34*cos(alfaf34)); x3 := x2;     y2 := y1 - round(kf*F34*sin(alfaf34)); y3 := y2;     Setcolor(9);

moveto(x1,y1); lineto(x3,y3); Row(alfaf34);     Setcolor(green);

x1 := cmx + round(kl*(lcb + hx3)*cos(fi3));     y1 := cmy - round

Похожие материалы

Информация о работе