Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Передаточные функции.rtf
Скачиваний:
6
Добавлен:
08.08.2019
Размер:
11.08 Mб
Скачать

Приложение л Программа для определения пф механизма, представленного на рис. 13.1

{$F+}

Program Primer1;

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

Const fioa0g=180.0; { Начальное значение ПФ0 }

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

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

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

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

Var A1 : ArraySqVar;

B1, B2, X, X1 : ArrayVar;

lc, q, j, alfaag, Ldk,

alfadg, Xk, Yk, Lfk : Real;

i, k, r, n : Integer;

Fidcg, mFiabg, OK, zz,

mXa, mYa, mXb, mYb,

mXf, mYf, mXc, mYc,

mXk, mYk, Xa_1, Ya_1,

Xa_2, Ya_2, Xb_1, Yb_1, Xf_1, Yf_1, Xc_1, Yc_1,

Xk_1, Yk_1, Xb_2, Yb_2, Xf_2, Yf_2, Xc_2, Yc_2,

Xk_2, Yk_2, Fiabr, Fiab_1, Fiab_2 : Massiv;

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

{$i Gauss.pas}

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

Var l : Real;

Begin

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

Kr (Xa, Ya, Lab, Fiabg, q, Xb, Yb); { Первичный механизм }

l:=0; { фиктивного механизма }

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

As1 (Xb, Yb, Xd, Yd, Lbc, Ldc, L, q, Fibcg, Fidcg[i]);

Poi (Xa, Ya, Fiabg, Laf, Alfaag, q, 5, Xf, Yf);

Poi (Xd, Yd, Fidcg[i], Ldk, Alfadg, q, 5, Xk, Yk);

Poi (Xd, Yd, Fidcg[i], Ldc, 0, q, 5, Xc, Yc);

Zveno_(Xb, Yb, Xf, Yf, q);

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

Zveno_(Xd, Yd, Xk, Yk, q);

Zveno_(Xc, Yc, Xk, Yk, q);

Zveno_(Xa, Ya, Xf, Yf, q);

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

Opora (Xd, Yd, 10, q, 1);

OK[i]:=Fioag;

mFiabg[i]:=Fiabg-180;

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);

mXa[i]:=Xa; mYa[i]:=Ya;

mXb[i]:=Xb; mYb[i]:=Yb;

mXf[i]:=Xf; mYf[i]:=Yf;

mXc[i]:=Xc; mYc[i]:=Yc;

mXk[i]:=Xk; mYk[i]:=Yk;

End; { Procedure }

Function CF (X : Real) : Real;

Begin

q:=0; { Механизм выводить на экран

не надо }

Mech (X);

CF:=sqrt(sqr(Xf-Xk)+sqr(Yf-Yk))-Lfk; { Целевая функция }

End; { Function }

Begin

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

Masg:=0.6 ; {Масштабный коэффициент }

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

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

Xd:=15; Yd:=-18; {Координаты точки D }

Loa:=30; {Длина звена oa }

Lab:=80; {Длина звена ab }

Lbc:=100; {Длина звена bc }

ldc:=60; {Длина звена dc }

alfaBg:=112.5;

Laf:=133;

alfaag:=33.75;

Ldk:=60;

alfadg:=75;

Lfk:=60;

For i:=1 to 49 do Begin

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

OK[i]:=Fioag;

FiAbg:=Find(CF);

q:=1;

ClearDevice;

Mech (Fiabg);

ReadKey;

End; { Конец цикла }

n:=8;

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]:=mXb[i]-mXa[i]; A1[1,2]:=mYb[i]-mYa[i];

A1[2,1]:=mXb[i]-mXf[i]; A1[2,2]:=mYb[i]-mYf[i];

A1[2,3]:=mXf[i]-mXb[i]; A1[2,4]:=mYf[i]-mYb[i];

A1[3,3]:=mXf[i]-mXa[i]; A1[3,4]:=mYf[i]-mYa[i];

A1[4,1]:=mXb[i]-mXc[i]; A1[4,2]:=mYb[i]-mYc[i];

A1[4,5]:=mXc[i]-mXb[i]; A1[4,6]:=mYc[i]-mYb[i];

A1[5,3]:=mXf[i]-mXk[i]; A1[5,4]:=mYf[i]-mYk[i];

A1[5,7]:=mXk[i]-mXf[i]; A1[5,8]:=mYk[i]-mYf[i];

A1[6,5]:=mXc[i]-Xd; A1[6,6]:=mYc[i]-Yd;

A1[7,7]:=mXk[i]-Xd; A1[7,8]:=mYk[i]-Yd;

A1[8,5]:=mXc[i]-mXk[i]; A1[8,6]:=mYc[i]-mYk[i];

A1[8,7]:=mXk[i]-mXc[i]; A1[8,8]:=mYk[i]-mYc[i];

B1[1]:=(mXb[i]-mXa[i])*Xa_1[i]+(mYb[i]-mYa[i])*Ya_1[i];

B1[2]:=0;

B1[3]:=(mXf[i]-mXa[i])*Xa_1[i]+(mYf[i]-mYa[i])*Ya_1[i];

B1[4]:=0;

B1[5]:=0;

B1[6]:=0;

B1[7]:=0;

B1[8]:=0;

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

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

Xf_1[i]:=X[3]; Yf_1[i]:=X[4];

Xc_1[i]:=X[5]; Yc_1[i]:=X[6];

Xk_1[i]:=X[7]; Yk_1[i]:=X[8];

End; { For }

For i:=1 to m+1 Do Begin

A1[1,1]:=mXb[i]-mXa[i]; A1[1,2]:=mYb[i]-mYa[i];

A1[2,1]:=mXb[i]-mXf[i]; A1[2,2]:=mYb[i]-mYf[i];

A1[2,3]:=mXf[i]-mXb[i]; A1[2,4]:=mYf[i]-mYb[i];

A1[3,3]:=mXf[i]-mXa[i]; A1[3,4]:=mYf[i]-mYa[i];

A1[4,1]:=mXb[i]-mXc[i]; A1[4,2]:=mYb[i]-mYc[i];

A1[4,5]:=mXc[i]-mXb[i]; A1[4,6]:=mYc[i]-mYb[i];

A1[5,3]:=mXf[i]-mXk[i]; A1[5,4]:=mYf[i]-mYk[i];

A1[5,7]:=mXk[i]-mXf[i]; A1[5,8]:=mYk[i]-mYf[i];

A1[6,5]:=mXc[i]-Xd; A1[6,6]:=mYc[i]-Yd;

A1[7,7]:=mXk[i]-Xd; A1[7,8]:=mYk[i]-Yd;

A1[8,5]:=mXc[i]-mXk[i]; A1[8,6]:=mYc[i]-mYk[i];

A1[8,7]:=mXk[i]-mXc[i]; A1[8,8]:=mYk[i]-mYc[i];

B1[1]:=Xa_2[i]*(mXb[i]-mXa[i])+Xa_1[i]*(Xb_1[i]-Xa_1[i])+

Ya_2[i]*(mYb[i]-mYa[i])+Ya_1[i]*(Yb_1[i]-Ya_1[i])-

Xb_1[i]*(Xb_1[i]-Xa_1[i])-Yb_1[i]*(Yb_1[i]-Ya_1[i]);

B1[2]:=-Xb_1[i]*(Xb_1[i]-Xf_1[i])-Yb_1[i]*(Yb_1[i]-Yf_1[i])-

Xf_1[i]*(Xf_1[i]-Xb_1[i])-Yf_1[i]*(Yf_1[i]-Yb_1[i]);

B1[3]:=Xa_2[i]*(mXf[i]-mXa[i])+Xa_1[i]*(Xf_1[i]-Xa_1[i])+

Ya_2[i]*(mYf[i]-mYa[i])+Ya_1[i]*(Yf_1[i]-Ya_1[i])-

Xf_1[i]*(Xf_1[i]-Xa_1[i])-Yf_1[i]*(Yf_1[i]-Ya_1[i]);

B1[4]:=-Xb_1[i]*(Xb_1[i]-Xc_1[i])-Yb_1[i]*(Yb_1[i]-Yc_1[i])-

Xc_1[i]*(Xc_1[i]-Xb_1[i])-Yc_1[i]*(Yc_1[i]-Yb_1[i]);

B1[5]:=-Xf_1[i]*(Xf_1[i]-Xk_1[i])-Yf_1[i]*(Yf_1[i]-Yk_1[i])-

Xk_1[i]*(Xk_1[i]-Xf_1[i])-Yk_1[i]*(Yk_1[i]-Yf_1[i]);

B1[6]:=-Xc_1[i]*Xc_1[i]-Yc_1[i]*Yc_1[i];

B1[7]:=-Xk_1[i]*Xk_1[i]-Yk_1[i]*Yk_1[i];

B1[8]:=-Xc_1[i]*(Xc_1[i]-Xk_1[i])-Yc_1[i]*(Yc_1[i]-Yk_1[i])-

Xk_1[i]*(Xk_1[i]-Xc_1[i])-Yk_1[i]*(Yk_1[i]-Yc_1[i]);

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

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

Xf_2[i]:=X[3]; Yf_2[i]:=X[4];

Xc_2[i]:=X[5]; Yc_2[i]:=X[6];

Xk_2[i]:=X[7]; Yk_2[i]:=X[8];

End; {For}

Closegraph;

For i:=1 to m+1 do Begin

Fiabr[i]:=arctan((mYb[i]-mYa[i])/(mXb[i]-mXa[i]));

Fiab_1[i]:=-(Yb_1[i]-Ya_1[i])/Lab/cos(Fiabr[i]);

Fiab_2[i]:=(-Yb_2[i]+Ya_2[i]+Lab*sin(Fiabr[i])*sqr(Fiab_1[i]))/Lab/cos(Fiabr[i]);

End; {For}

Grafik (m, OK, Fiabr, Fiab_1, Fiab_2, 'Fiabr', 'Fiab_1', 'Fiab_2');

Testpf (48, Fiabr, Fiab_1, Fiab_2, 'Fiab');

Grafik(m, OK, mFiabg, Fidcg, zz, 'Fiabg', 'Fidcg', '');

Grafik(m, OK, mXa, Xa_1, Xa_2, 'Xa', 'Xa_1', 'Xa_2');

TestPF(48, mXa, Xa_1, Xa_2, 'Xa');

TestPF(48, mXb, Xb_1, Xb_2, 'Xb');

Grafik(m, OK, mXb, Xb_1, Xb_2, 'Xb', 'Xb_1', 'Xb_2');

TestPF(48, mYb, Yb_1, Yb_2, 'Yb');

TestPF(48, mXf, Xf_1, Xf_2, 'Xf');

TestPF(48, mYf, Yf_1, Yf_2, 'Yf');

TestPF(48, mXc, Xc_1, Xc_2, 'Xc');

TestPF(48, mYc, Yc_1, Yc_2, 'Yc');

TestPF(48, mXk, Xk_1, Xk_2, 'Xk');

TestPF(48, mYk, Yk_1, Yk_2, 'Yk');

Grafik(m, OK, mYb, Yb_1, Yb_2, 'Yb', 'Yb_1', 'Yb_2');

Grafik(m, OK, mXf, Xf_1, Xf_2, 'Xf', 'Xf_1', 'Xf_2');

Grafik(m, OK, mXf, Xf_1, Xf_2, 'Xf', 'Xf_1', 'Xf_2');

Grafik(m, OK, mYf, Yf_1, Yf_2, 'Yf', 'Yf_1', 'Yf_2');

Grafik(m, OK, mXc, Xc_1, Xc_2, 'Xc', 'Xc_1', 'Xc_2');

Grafik(m, OK, mYc, Yc_1, Yc_2, 'Yc', 'Yc_1', 'Yc_2');

Grafik(m, OK, mXk, Xk_1, Xk_2, 'Xk', 'Xk_1', 'Xk_2');

Grafik(m, OK, mYk, Yk_1, Yk_2, 'Yk', 'Yk_1', 'Yk_2');

End. { Program }