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

Приложение д Программа для моделирования механизма чушколомателя по схеме

на рис. .5

Program Mech_3_class;

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

{ Описание констант }

Const fioa0g=40.0; {Начальное значение ОК }

h=0;

Lnapr=50;

{Описание переменных }

Var lc, q, j : Real;

i,k,r : Integer;

xo, yo, xb, yb, xd, yd, xe, ye,

xc, yc, xn, yn, xa, ya : Real;

loa, lab, lbc, ldc, Lbe : Real;

ALFAEBCg : Real;

fing, fibcg, Fiabg, fidcg, fioag, fibeg : Real;

Procedure Mech (Fiabg : Real); { Процедура для расчета фиктивного }

Var l : Real; { механизма }

Begin

j:=1;

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

l:=0;

as2 (xb, yb, xn, yn, fing, l, lbe, h, lcc, j, q, fibeg);

Poi (xb, yb, fibeg, lbe, 0, q, 2, Xe, Ye);

Poi (xb, yb, fibeg, lbc, -alfaEBCg, q, 2, Xc, yc);

zveno(xb, yb, fibeg, Lbe, q);

zveno(xb, yb, fibeg-AlfaEBCg, Lbc, q);

zveno_(xc, yc, xd, yd, q);

zveno_(xe, ye, xc, yc, q);

Opora (xo, yo, 10, q, 1);

Opora (xd, yd, 10, q, 1);

End; {Procedure}

Function CF (X : Real) : Real; {Вычисление целевой функции }

Begin

Mech (X); {Расчет фиктивного механизма }

CF:=Sqrt(Sqr(xd-xc)+Sqr(yd-yc))-ldc;

End; {Function}

Begin {Начало основной программы }

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

masg:=0.5; {Масштаб отрисовки }

xo:=0; yo:=0; {Задание параметров механизма }

xn:=0; yn:=50;

xd:=100; yd:=0;

loa:=20;

Lab:=70;

Lbe:=100;

Lbc:=70;

ldc:=65;

alfaEBCg:=60;

fing:=0;

{Цикл для определения ПФ0 элементов механизма }

For i:=1 to 49 do Begin

fioag:=fioa0g+DFi*(i-1); {Определяю следующее значение ОК }

q:=0; {Механизм не отображать }

kr (xo, yo, loa, fioag, q, xa, ya); {Определение ПФ0 первичного мех-ма }

FiABg:=Find(CF); {Поиск значения через цел. функцию }

q:=1; {Механизм отображать }

ClearDevice; {Очистка экрана }

kr (xo, yo, loa, fioag, q, xa, ya); {Определение ПФ0 первичного мех-ма }

Mech (Fiabg); {Нарисовать фиктивный механизм }

ReadKey;

End; { For }

End. {Program} {Конец программы }

Приложение e Функция для определения оптимального значения варьируемого параметра

Function Find (CF : CF_Type): Real;

Const KolPoints = 1000;

XF = 100;

Xl = 290;

Var X1, X2, X3, Dx_,

Y1, Y2, Y3 : Real;

Begin

DX_:=Abs(XF-XL)/KolPoints;

X1:=XF;

Y1:=CF(X1);

X2:=X1;

Y2:=Y1;

Repeat

X1:=X2;

Y1:=Y2;

X2:=X1+DX_;

Y2:=CF(X2);

Until (Y1*Y2<0) or (X2>XL);

if CF(X1)*CF(X2)>0 Then Begin

Find:=0;

Exit;

End;

Repeat

X3:=(X1+X2)/2;

Y1:=CF(X1);

Y2:=CF(X2);

Y3:=CF(X3);

if (Y1*Y3)>0 Then X1:=X3 Else X2:=X3;

Until (Abs(Y3)<0.001);

Find:=X3;

End;

Приложение ж Программа для моделирования механизма чушколомателя по схеме

на рис. .6

Program Mech_3_class;

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

{Описание констант}

Const fioa0g=40.0; {Начальное значение ОК }

h=0;

Lnapr=50;

{Описание переменных}

Var lc, q, j : Real;

i, k, r : Integer;

xo, yo, xb, yb, xd, yd, xe, ye,

xc, yc, xn, yn, xa, ya : Real;

loa, lab, lbc, ldc, Lbe : Real;

ALFAEBCg : Real;

fing, fibcg, Fiabg, fidcg, fioag : Real;

Procedure Mech (Fiabg : Real); {Процедура для расчета фиктивного }

Var l: Real; { механизма }

Begin

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

As1 (xb, yb, xd, yd, lbc, ldc, -1, q, fibcg, fidcg);

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

Poi (xb, yb, fibcg, lbe, alfaEBCg, q, 2, Xe, ye);

zveno(xb, yb, fibcg+alfaEBCg, Lbe, q);

zveno(xn, yn, 0, 300, q);

zveno_(xe, ye, xc, yc, q);

Opora (xo, yo, 10, q, 1);

Opora (xd, yd, 10, q, 1);

End; { Procedure }

Function CF (X : Real) : Real; {Вычисление целевой функции }

Begin

Mech (X); {Расчет фиктивного механизма }

CF:=yn-ye;

End; {Function}

Begin {Начало основной программы }

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

Masg:=0.5; {Масштаб отрисовки }

{Задание параметров механизма }

fing:=0;

Xo:=0; Yo:=0;

Xn:=0; Yn:=50;

Xd:=100; Yd:=0;

loa:=20;

Lab:=70;

Lbe:=100;

Lbc:=70;

ldc:=65;

alfaEBCg:=60;

{Цикл определения ПФ0 элементов механизма}

For i:=1 to 49 do Begin

fioag:=fioa0g+DFi*(i-1); {Определяю следующее значение OK }

q:=0; {Механизм не отображать }

Kr (Xo, Yo, Loa, Fioag, q, Xa, Ya); {Расчет ПФ0 первичного мех-ма }

FiAbg:=Find(CF); {Поиск значения через цел. функцию }

q:=1; {Механизм отображать }

ClearDevice; {Очистка экрана }

Kr (Xo, Yo, Loa, Fioag, q, Xa, Ya); {Расчет ПФ0 первичного мех-ма }

Mech (Fiabg); {Нарисовать фиктивный механизм }

ReadKey;

End;

End. {Program} {Конец программы }