Программа для определения ПФ механизма с кулисной парой



{$F+}

Program Primer2;

Uses Crt, Graph, MPF, Tm1m;      {Перечень используемых модулей   }

 

Type  ArraySqVar=Array[1..10,1..10] of Real;

          ArrayVar=Array[1..10] of Real;

 

Const fioa0g=15.0;                      {Начальный угол кривошипа          }

        h=0;                                   {Длина поводка                                }

        Lnapr=50;                         {Длина направляющей для ползунов }

 

Var A1            : ArraySqVar;

   B1,B2,X,X1  : ArrayVar;

 

Var lc, Lcc, q, j, alfaCg, Fibdr, alfabr, koef, DFir, Fikg : Real;

      i, k, r, n : Integer;

      mFiabg, zz, OK, Ficdg, Fibcg, mFibdg,

      Xb, Yb, Xb_1, Yb_1, Xb_2,Yb_2,

      Xc, Yc, Xc_1,f, Xc_2,

      Xa, Ya, Xa_1, Ya_1, Xa_2, Ya_2,

      Pogr, K1, K2                       : Massiv;

                                                       {Описание используемых процедур }

{$i Gauss.pas}

Procedure Mech (Fiabg : Real);       { Варьируемый параметр механизма }

Var l : Real;

Begin

j:=1;

Kr (xo, yo, loa, fioag, q, xa[i], ya[i]); { Первичный механизм                    }

Kr (Xa[i], Ya[i], Lab, Fiabg, q, Xb[i], Yb[i]);      { Фиктивный механизм }

l:=0;

Lcc:=30;                                        { Первая присоединенная группа    }

As2 (xb[i], yb[i], xn, yn, fing, lnapr, lbc, h, lcc, j, q, fibcg[i]);

Poi (xb[i], yb[i], fibcg[i], lbc, 0, q, 2, Xc[i], Yc[i]);

Fibdg:=Fibcg[i]-alfabg;

Fibdr:=Fibdg/180*pi;

Zveno (xb[i], yb[i], fibcg[i], Lbc, q);

Zveno (xb[i], yb[i], fibdg, Lbc, q);

Lc:=20;

As3(Xd, Yd, Xb[i], Yb[i], 0, 0, Lcc, q, Fikg);

End; { Procedure }

 

Function CF (X : Real) : Real;

Begin

q:=0;

Mech (X);

CF:=Yb[i]-Yd-(Xb[i]-Xd)*sin(Fibdr)/cos(Fibdr); { Целевая функция    }

End; { Function }

 

Begin

InitG;                                            {Инициализация графического экрана    }

masg:=1.0;                                    { Масштаб c хемы                            }

                                                       { Параметры механизма                }

Xo:=0; Yo:=0;

Xn:=0; Yn:=50;                       { Координаты точки N                   }

  Xd:=100; Yd:=0;                         { Координаты точки E                   }

Loa:=20;                                       { Длина звена OA                             }

Lab:=170

Lbc:=200

ldc:=65;

alfaBg:=40;

alfabr:=alfabg/180*pi;

alfaCg:=130;

fing:=0;

DFi:=7.5;

DFir:=DFi/180*pi;

 

For i:=1 To m Do Begin

if ch=#27 Then Break;

fioag:=fioa0g+DFi*(i-1);            { Расчет текущего угла                  }

FiAbg:=Find(CF);

q:=1;

ClearDevice;

Mech (Fiabg);

mFiabg[i]:=Fiabg;

Ok[i]:=Fioag;

kr (Xo, Yo, Loa, Fioag, q, Xa[i], Ya[i]);

Xa_1[i]:=-Loa*sin(Fioag/180*pi);

Ya_1[i]:=Loa*cos(Fioag/180*pi);

Xa_2[i]:=-Loa*cos(Fioag/180*pi);

Ya_2[i]:=-Loa*sin(Fioag/180*pi);

zz[i]:=0;

Koef:=sin(alfabr)/cos(alfabr);

k1[i]:=(Yd-Yb[i])/(Xd-Xb[i])*(1+(Yc[i]-Yb[i])/(Xc[i]-Xb[i])*

koef);

k2[i]:=(Yc[i]-Yb[i])/(Xc[i]-Xb[i])-koef;

f[i]:=Xa_1[i]*(Xb[i]-Xa[i])+Ya_1[i]*(Yb[i]-Ya[i]);

ReadKey;

End; { For }

 

Cleardevice;

Closegraph;

 

Grafik (m, Ok, K1, K2, zz, 'K1', 'K2','');

Grafik (m, Ok, mFiabg, mFibdg, mFibeg, 'Fiabg', 'Fibdg', 'Fibeg');

Grafik (m, Ok, Xa, Xa_1, Xa_2, 'Xa', 'Xa_1', 'Xa_2');

TestUniv (m, dFir, Xa, Xa_1, Xa_2, 'Xa');

TestPF (m, mXa, mXa_1, mXa_2, 'Xa');

 

n:=3;

For k:=1 To n Do

For r:=1 to n Do A1[k,r]:=0;

 

For i:=1 To m+1 Do Begin

A1[1,1]:=-((Xc[i]-Xb[i])+koef*(Yc[i]-Yb[i])+koef*(Yd-Yb[i])-(Xd-Xb[i]));

A1[1,2]:=(Yd-Yb[i])+koef*(Xd-Xb[i]);

A1[1,3]:=-((Yd-Yb[i])-(Yc[i]-Yb[i])+koef*(Xc[i]-Xb[i])+koef*(Xd-Xb[i]));

 

A1[2,1]:=Yb[i]-Ya[i];

A1[2,3]:=Xb[i]-Xa[i];

 

A1[3,1]:=Yb[i]-Yc[i];

A1[3,2]:=-(Xb[i]-Xc[i]);

A1[3,3]:=(Xb[i]-Xc[i]);

 

B1[1]:=0;

B1[2]:=Xa_1[i]*(Xb[i]-Xa[i])+Ya_1[i]*(Yb[i]-Ya[i]);

B1[3]:=0;

 

Gauss(N,A1,B1,X);                    { Расчет методом Гаусса               }

 

Xb_1[i]:=X[3];     Yb_1[i]:=X[1];  Xc_1[i]:=X[2];

End; { For }

 

CloseGraph;

 

For i:=1 To m+1 Do Begin

 

A1[1,1]:=-((Xc[i]-Xb[i])+koef*(Yc[i]-Yb[i])+koef*(Yd-Yb[i])-(Xd-Xb[i]));

A1[1,2]:=(Yd-Yb[i])+koef*(Xd-Xb[i]);

A1[1,3]:=-((Yd-Yb[i])-(Yc[i]-Yb[i])+koef*(Xc[i]-Xb[i])+koef*(Xd-Xb[i]));

 

A1[2,1]:=Yb[i]-Ya[i];

A1[2,3]:=Xb[i]-Xa[i];

 

A1[3,1]:=Yb[i]-Yc[i];

A1[3,2]:=-(Xb[i]-Xc[i]);

A1[3,3]:=(Xb[i]-Xc[i]);

 

B2[1]:=Yb_1[i]*(Xc_1[i]-Xb_1[i]-2*koef*Yb_1[i]+Xb_1[i])+

    Xc_1[i]*(Yb_1[i]+koef*Xb_1[i])+Xb_1[i]*koef*(Xc_1[i]-2*Xb_1[i]);

 

B2[2]:=-Yb_1[i]*(Yb_1[i]-Ya_1[i])-Xb_1[i]*(Xb_1[i]-Xa_1[i])+

   Xa_2[i]*(Xb[i]-Xa[i])+Xa_1[i]*(Xb_1[i]-Xa_1[i])+

    Ya_2[i]*(Yb[i]-Ya[i])+Ya_1[i]*(Yb_1[i]-Ya_1[i]);

 

B2[3]:=-Yb_1[i]*Yb_1[i]+Xc_1[i]*(Xb_1[i]-Xc_1[i])-Xb_1[i]*(Xb_1[i]-Xc_1[i]);

 

Gauss (N, A1, B2, X);                { Расчет методом Гаусса               }

 

Xb_2[i]:=X[3];    Yb_2[i]:=X[1];  Xc_2[i]:=X[2];

End; { For }

 

TestUniv (m, dFir, Xa, Xa_1, Xa_2, 'Xa');

TestUniv (m, dFir, Xc, Xc_1, Xc_2, 'Xc');

TestUniv (m, dFir, Xb, Xb_1, Xb_2, 'Xb');

Grafik (m, Ok, Xc, Xc_1, Yc, 'Xc', 'Xc_1', 'Yc');

Grafik (m, Ok, Xb, Xb_1, zz, 'Xb', 'Xb_1','');

 

End. { Program }


Приложение Н

Программа для определения ПФ механизма,

Представленного на рис. 13.3

 

{$F+}

Program Primer3;

Uses Crt, Graph, MPF, Tm1m;

Const fioa0g=82.0;                      {Начальный угол кривошипа           }

        h=0;                                   { Длина поводка                               }

        Lnapr=50;                         { Длина направляющей для ползунов }

Var lc, q, j, Lck, Lcf, Lgk, Lhf, Ficfg, Fickg, Figkg,

      Xk, Yk, Xh, Yh, Xg, Yg, Fihfg : Real;

      i, k, r : Integer;

      Ok, Ugol, T, mFihfg : Massiv;

 

{Описание используемых процедур}

{$i Grafik.pas}

 

Procedure Mech (Fiabg : Real);       { Варьируемый параметр механизма }

Var l : Real;

Begin

j:=1;

Kr (Xo, Yo, Loa, Fioag, q, Xa, Ya); { Первичный механизм                    }

{ Фиктивный механизм }

Kr (Xa, Ya, Lab, Fiabg, q, Xb, Yb);

l:=0;

{ Первая присоединенная группа}

As1 (Xb, Yb, Xe, Ye, Lbd, Led, L, q, Fibdg, Fiedg);

Poi (Xb, Yb, Fibdg, Lbc, 40, q, 2, Xc, Yc);

Poi (Xb, Yb, Fibdg, Lbd, 0, q, 2, Xd, Yd);

As1 (Xc, Yc, Xg, Yg, Lck, Lgk, L, q, Fickg, Figkg);

Poi (Xc, Yc, Fickg, Lcf, 40, q, 2, Xf, Yf);

Poi (Xc, Yc, Fickg, Lck, 0, q, 2, Xk, Yk);

R:=Round(Lhf/Masg);

Poi (Xh, Yh, 0, 0, 0, q, r, Xh, Yh);

Zveno (Xb, Yb, Fibdg, Lbd, q);

Zveno (Xb, Yb, Fibdg+40, Lbc, q);

Zveno_ (Xc, Yc, Xd, Yd, q);

Zveno (Xc, Yc, Fickg, Lck, q);

Zveno (Xc, Yc, Fickg+40, Lcf, q);

Zveno_ (Xk, Yk, Xf, Yf, q);

Zveno_ (Xh, Yh, Xf, Yf, q);

Opora (Xo, Yo, 10, q, 1);

Opora (Xe, Ye, 10, q, 1);

Opora (Xg, Yg, 10, q, 1);

Opora (Xh, Yh, 10, q, 1);

End; { Procedure }

 

Function CF (X : Real) : Real;

Begin

q:=0;

Mech (X);

CF:=Sqrt(Sqr(xh-xf)+Sqr(yh-yf))-lhf;                  { Целевая функция    }

End; { Function }

 

Begin

InitG;                                            {Инициализация графического экрана    }

Masg:=0.5;                                    { Масштаб схемы                            }

{ Параметры механизма }

Xo:=0; Yo:=0;                        { Координаты точки О                  }

Xe:=40; Ye:=-20;

Xg:=80; Yg:=-35;

Xh:=115; Yh:=-15{-30};

loa:=5;                                          { Длина звена OA                             }

Lab:=45;                                       { Длина звена AB                               }

Lbd:=30;                                       { Длина звена BE                               }

Lbc:=45;                                       { Длина звена BC                               }

led:=32;                                         { Длина звена ED                             }

Lck:=30;

Lgk:=30;

Lcf:=45;

Lhf:=15;

For i:=1 to m Do Begin

Fioag:=Fioa0g+DFi*(i-1);          { Расчет текущего угла                  }

FiAbg:=Find(CF);

Kr (Xa, Ya, Lab, Fiabg, q, Xb, Yb);

As1 (Xb, Yb, Xe, Ye, Lbd, Led, L, q, Fibdg, Fiedg);

Poi (Xb, Yb, Fibdg, Lbc, 40, q, 2, Xc, Yc);

As1 (Xc, Yc, Xh, Yh, Lcf, Lhf, L, q, Ficfg, Fihfg);

OK[i]:=Fioag;

Ugol[i]:=Fiabg;

mFihfg[i]:=Fihfg;

q:=1;

ClearDevice;

Mech (Fiabg);

ReadKey;

End; { For }

Grafik(m, Ok, Ugol, mFihfg, Ugol, 'Fiabg', 'Fihfg', '');

End. { Program }


Приложение П


Дата добавления: 2018-10-26; просмотров: 189; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!