- •Донбасская государственная машиностроительная академия
- •Владимиров э.А., Шоленинов в.Е.
- •Передаточные функции плоских рычажных механизмов
- •Методические указания
- •Краматорск 2004
- •Рецензенты:
- •Содержание
- •Введение
- •1 Структурный анализ механизма
- •Формула строения механизма:
- •2 Передаточные функции начальных звеньев
- •Kriv (Xо, Yо, Lоа, Fiоаg, q, jk, Mas : Real; {входные параметры}
- •Var Xa, Ya, Xa_1, Ya_1, Xa_2, Ya_2 : Real), {возвращаемые параметры}
- •3 Передаточные функции произвольной точки звена
- •4 Структура исходной программы для расчета передаточных функций элементов механизма
- •4 Структура исходной программы для расчета передаточных функций элементов механизма.1 Начальное звено – кривошип
- •4 Структура исходной программы для расчета передаточных функций элементов механизма.2 Начальное звено – ползун
- •5 Контроль передаточных функций элементов механизма .1 Графический метод контроля пф0
- •5.2 Контроль пф0 с использованием AutoCad
- •5.3 Методика количественного контроля пф1 и пф2
- •6 Алгоритмы определения пф структурных групп
- •6 Алгоритмы определения пф структурных групп.1 Группа первого вида
- •6 Алгоритмы определения пф структурных групп.2 Группа второго вида
- •6 Алгоритмы определения пф структурных групп.3 Группа третьего вида
- •На рис. 6.3 представлена схема группы третьего вида.
- •Следует определить пф оси кулисы: , , .
- •После повторного дифференцирования полученных выражений находим угловые пф2:
- •6.4 Группа четвертого вида
- •Аналитически координаты точки k можно определить следующим образом. Уравнения осей направляющих:
- •6.5 Группа пятого вида
- •7 Процедуры для определения пф структурных групп
- •8 Структура программы для расчета пф рычажных механизмов второго класса
- •9 Методика определения пф0 структурных групп выше второго класса
- •10 Структура программы для моделирования механизма 3-го класса
- •11 Определение пф1 и пф2 элементов механизмов выше второго класса
- •12 Структура программы для определения пф механизма чушколомателя
- •13 Алгоритмы и программы для определения пф механизмов выше второго класса
- •Список рекомендованной литературы
- •Приложение а Исходный файл расчета механизма (начальное звено - кривошип)
- •Приложение б Исходный файл расчета механизма (начальное звено - ползун)
- •Приложение в Программа расчета механизма качающегося конвейера
- •Приложение г Программа расчета кулисно-рычажного параболографа Инвардса
- •Приложение д Программа для моделирования механизма чушколомателя по схеме
- •Приложение e Функция для определения оптимального значения варьируемого параметра
- •Приложение ж Программа для моделирования механизма чушколомателя по схеме
- •Приложение и Программа для моделирования механизма чушколомателя по схеме на рис. .5 (фиктивное начальное звено - ползун)
- •Приложение к Программа для моделирования механизма чушколомателя
- •Приложение л Программа для определения пф механизма, представленного на рис. 13.1
- •Приложение м Программа для определения пф механизма с кулисной парой
- •Приложение н Программа для определения пф механизма, представленного на рис. 13.3
- •Приложение п Программа для определения пф кулисно-рычажного гиперболографа Вяткина
Приложение б Исходный файл расчета механизма (начальное звено - ползун)
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} {Конец программы }
