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

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

{$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 }