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

Приложение б Исходный файл расчета механизма (начальное звено - ползун)

Program Mechan2;

Uses Crt, Graph, MPF;

Const m=48; {Количество положений }

Var Xa0, Ya0, Fing, X10, dX1, lcc : Real; {Описание переменных }

q, Mas : Real;

i, jp : Integer;

Driver : Integer;

StrVar : String;

X1, Xa, Ya, Xa_1, Ya_1, Xa_2, Ya_2 : Massiv;

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

Driver:=Detect;

InitGraph (Driver, Mode,''); {Инициализация графики }

SetBKcolor(7);

{Определение передаточных функций}

For i:=1 to m+1 Do Begin

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

Xa0:=-120; {Начальное положение }

Ya0:=-70; {ползуна }

FIng:=60.0; {Угол направляющей }

{ползуна }

X1[1]:=0;

q :=1; {Определяет, выводить }

{механизм на экран или нет }

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

lcc:=120; {Диагональ ползуна }

If i<(m/2+1) Then jp:=1 Else jp:=-1;

dX1:=10; {Приращение ОК в мм }

{Первичный механизм }

Polsun (Xa0, Ya0, Fing, X1[i], lcc, q, Mas, jp,

Xa[i], Ya[i], Xa_1[i], Ya_1[i], Xa_2[i], Ya_2[i]);

Str (X1[i]:8:4, StrVar); {Вывод на экран текущего }

OutTextXY (20, 40, StrVar); {значения ОК }

Str(i:2, StrVar); {Вывод на экран номера }

OutTextXY(20, 20, StrVar); {положения }

SetColor (15);

{Расчет 1-ой присоединенной группы}

{Расчет 2-ой присоединенной группы}

ReadKey;

X1[i+1]:=X1[i]+jp*dX1; {Расчет текущего }

{значения ОК }

End; { For }

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

CloseGraph; {Переход в текстовый

режим }

TestUniv (m, dX1, Xa, Xa_1, Xa_2, ’Xa’); {Тест ПФ1 и ПФ2 }

Grafik(m+1,X1,Xa,Xa_1,Xa_2,’Xa’,’Xa_1’,’Xa_2’); {Графики ПФ1 и ПФ2 }

TestUniv(m,dX1,Ya,Ya_1,Ya_2,’Ya’); {Тест ПФ1 и ПФ2 }

Grafik(m+1,X1,Ya,Ya_1,Ya_2,’Ya’,’Ya_1’,’Ya_2’);

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

Приложение в Программа расчета механизма качающегося конвейера

Program Mechan1_1;

Uses Crt, Graph, MPF;

Const m=48; {Количество положений }

{механизма для расчета }

Var Xo, Yo, Xc, Yc, Xn, Yn, {Описание переменных }

FIoa0g, dFi, dFir, lc, q, jk, Mas, j1, j2, l,

Loa, Lab, Lcb, Lcd, Lde, lcc, Las2, Lcs3, Lds4 : Real;

i, ori, k, r, driver, mode : Integer;

strvar : String;

FIoag,

Fiabg, Fiabr, Fiab_1, Fiab_2,

Ficbg, Ficbr, Ficb_1, Ficb_2,

Fideg, Fider, Fide_1, Fide_2,

Xs2, Xs2_1, Xs2_2, Ys2, Ys2_1, Ys2_2,

Xs3, Xs3_1, Xs3_2, Ys3, Ys3_1, Ys3_2,

Xs4, Xs4_1, Xs4_2, Ys4, Ys4_1, Ys4_2,

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

Xd, Yd, Xd_1, Yd_1, Xd_2, Yd_2,

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

Xe, Ye, Xe_1, Ye_1, Xe_2, Ye_2 : Massiv;

Begin

Driver:=Detect; {Инициализация графики }

InitGraph (Driver, Mode, '');

SetBKColor(7);

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

Xc:=110-700; {Определение координат }

Yc:=68; {точек и длин звеньев }

Lab:=192;

Lcb:=220;

Lcs3:=Lcd/2;

Las2:=Lab/2;

Lcd:=300;

Lde:=Lcd*4;

Lds4:=Lde/2;

Xn:=0; Yn:=0;

Xo:=-700; Yo:=0; {Координаты кривошипа }

Loa:=60; {длина кривошипа }

FIoa0g:=97.05; {Начальное значение ОК }

dFi:=360/m; {Приращения ОК в град. }

dFir:=2*pi/m; {Приращения ОК в рад. }

{вращения кривошипа }

{Определение передаточных функций}

For i:=1 To m+1 Do Begin

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

jk :=1; {Направление вращения }

{кривошипа (-1/1) }

FIoag[i]:=FIoa0g+dFi*(i-1)*jk; {Расчет текущего угла }

Str (Fioag[i]:8:4, StrVar); {Вывод на экран }

OutTextXY (20, 40, StrVar); {значения ОК }

Str (i:2, StrVar); {Вывод на экран номера }

OutTextXY (20, 20, StrVar); {положения }

q:=1;

SetColor(15);

Kriv (Xo, Yo, Loa, FIoag[i], q, jk, Mas, {Первичный механизм }

Xa[i], Ya[i], Xa_1[i], Ya_1[i], Xa_2[i], Ya_2[i]);

lc:=75;

Ori:=1;

Opora (Xo, Yo, lc, Mas, q, Ori); {Опора кривошипа }

Ori:=3;

Opora (Xc, Yc, lc, Mas, q, Ori); {Опора коромысла }

{Расчет 1-ой присоединенной группы}

j1:=-1;

Assur1 (Xa[i], Ya[i], Xa_1[i], Ya_1[i], Xa_2[i], Ya_2[i],

Xc, Yc, 0, 0, 0, 0,

Lab, Lcb, j1, q, Mas,

FIabg[i], FIcbg[i], FIab_1[i], FIcb_1[i],FIab_2[i],FIcb_2[i]);

{Определяем ПФ точки S2 }

Point(Xa[i], Ya[i], Xa_1[i], Ya_1[i], Xa_2[i], Ya_2[i],

FIabg[i], FIab_1[i], FIab_2[i], Las2, 0, q, Mas, r,

Xs2[i], Ys2[i], Xs2_1[i], Ys2_1[i], Xs2_2[i], Ys2_2[i]);

{Определяем ПФ точки B }

Point(Xc, Yc, 0, 0, 0, 0, FIcbg[i], FIcb_1[i], FIcb_2[i], Lcb, 0, q, Mas, r,

Xb[i], Yb[i], Xb_1[i], Yb_1[i], Xb_2[i], Yb_2[i]);

r:=2;

{Определяем ПФ точки D}

Point(Xc, Yc, 0, 0, 0, 0, FIcbg[i], FIcb_1[i], FIcb_2[i], Lcd, 0, q, Mas, r,

Xd[i], Yd[i], Xd_1[i], Yd_1[i], Xd_2[i], Yd_2[i]);

Zveno(Xc, Yc, FIcbg[i], lcd, q, Mas);

{Определяем ПФ точки S3 }

Point (Xc, Yc, 0, 0, 0, 0, FIcbg[i], FIcb_1[i], FIcb_2[i], Lcs3, 0, q, Mas, r,

Xs3[i], Ys3[i], Xs3_1[i], Ys3_1[i], Xs3_2[i], Ys3_2[i]);

{Расчет 2-ой присоединенной группы}

l:=500;

lcc:=50;

j2:=1;

Assur2 (Xd[i], Yd[i], Xd_1[i], Yd_1[i], Xd_2[i], Yd_2[i],

Xn, Yn, 0, 0, 0, 0,

0, 0, 0, l, Lde, 0, lcc, j2, q, Mas,

FIdeg[i], FIde_1[i], FIde_2[i]);

{Определяем ПФ точки Е }

Point (Xd[i], Yd[i], Xd_1[i], Yd_1[i], Xd_2[i], Yd_2[i],

FIdeg[i], FIde_1[i], FIde_2[i],

Lde, 0, q, Mas, r,

Xe[i], Ye[i], Xe_1[i], Ye_1[i], Xe_2[i], Ye_2[i]);

{Определяем ПФ точки S4 }

Point (Xd[i], Yd[i], Xd_1[i], Yd_1[i], Xd_2[i], Yd_2[i],

FIdeg[i], FIde_1[i], FIde_2[i],

Lds4, 0, q, Mas, r,

Xs4[i], Ys4[i], Xs4_1[i], Ys4_1[i], Xs4_2[i], Ys4_2[i]);

Fiabr[i]:=Fiabg[i]/180*pi; {Перевод градусов }

Ficbr[i]:=Ficbg[i]/180*pi; {в радианы }

Fider[i]:=Fideg[i]/180*pi;

if Ficbr[i]<0 Then Ficbr[i]:=Ficbr[i]+2*pi;

k:=i;

Track (k, q, Mas, Xs2, Ys2); {Показать траектории }

Track (k, q, Mas, Xs4, Ys4); {точек }

ReadKey;

End; { For }

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

CloseGraph; {Переход в текстовый

режим }

{Тестирование ПФ1 и ПФ2 и вывод на экран графиков ПФ0, ПФ1, ПФ2 }

TestPF (m, Xa, Xa_1, Xa_2, ’Xa’);

Grafik(m+1, Fioag, Xa, Xa_1, Xa_2, ’Xa’, ’Xa_1’, ’Xa_2’);

TestPF (m, Ya, Ya_1, Ya_2, ’Ya’);

Grafik(m+1, Fioag, Ya, Ya_1, Ya_2, ’Ya’, ’Ya_1’, ’Ya_2’);

TestPF (m, Fiabr, Fiab_1, Fiab_2, ’Fiab’);

Grafik(m+1, Fioag, Fiabg, Fiab_1, Fiab_2, ’Fiabr’, ’Fiab_1’, ’Fiab_2’);

TestPF (m, Ficbr, Ficb_1, Ficb_2, ’Ficb’);

Grafik(m+1, Fioag, Ficbr, Ficb_1, Ficb_2, ’Ficbr’, ’Ficb_1’, ’Ficb_2’);

TestPF (m, Xb, Xb_1, Xb_2, ’Xb’);

Grafik(m+1, Fioag, Xb, Xb_1, Xb_2, ’Xb’, ’Xb_1’, ’Xb_2’);

TestPF (m, Yb, Yb_1, Yb_2, ’Yb’);

Grafik(m+1, Fioag, Yb, Yb_1, Yb_2, ’Yb’, ’Yb_1’, ’Yb_2’);

TestPF (m, Xs2, Xs2_1, Xs2_2, ’Xs2’);

Grafik(m+1, Fioag, Xs2, Xs2_1, Xs2_2, ’Xs2’, ’Xs2_1’, ’Xs2_2’);

TestPF (m, Ys2, Ys2_1, Ys2_2, ’Ys2’);

Grafik(m+1, Fioag, Ys2, Ys2_1, Ys2_2, ’Ys2’, ’Ys2_1’, ’Ys2_2’);

TestPF (m, Xs3, Xs3_1, Xs3_2, ’Xs3’);

Grafik(m+1, Fioag, Xs3, Xs3_1, Xs3_2, ’Xs3’, ’Xs3_1’, ’Xs3_2’);

TestPF (m, Ys3, Ys3_1, Ys3_2, ’Ys3’);

Grafik(m+1, Fioag, Ys3, Ys3_1, Ys3_2, ’Ys3’, ’Ys3_1’, ’Ys3_2’);

TestPF (m, Xd, Xd_1, Xd_2, ’Xd’);

Grafik(m+1, Fioag, Xd, Xd_1, Xd_2, ’Xd’, ’Xd_1’, ’Xd_2’);

TestPF (m, Yd, Yd_1, Yd_2, ’Yd’);

Grafik(m+1, Fioag, Yd, Yd_1, Yd_2, ’Yd’, ’Yd_1’, ’Yd_2’);

TestPF (m, Fider, Fide_1, Fide_2, ’Fide’);

Grafik(m+1, Fioag, Fideg, Fide_1, Fide_2, ’Fider’, ’Fide_1’, ’Fide_2’);

TestPF (m, Xs4, Xs4_1, Xs4_2, ’Xs4’);

Grafik(m+1, Fioag, Xs4, Xs4_1, Xs4_2, ’Xs4’, ’Xs4_1’, ’Xs4_2’);

TestPF (m, Ys4, Ys4_1, Ys4_2, ’Ys4’);

Grafik(m+1, Fioag, Ys4, Ys4_1, Ys4_2, ’Ys4’, ’Ys4_1’, ’Ys4_2’);

TestPF (m, Xe, Xe_1, Xe_2, ’Xe’);

Grafik(m+1, Fioag, Xe, Xe_1, Xe_2, ’Xe’, ’Xe_1’, ’Xe_2’);

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