- •Донбасская государственная машиностроительная академия
- •Владимиров э.А., Шоленинов в.Е.
- •Передаточные функции плоских рычажных механизмов
- •Методические указания
- •Краматорск 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
- •Приложение п Программа для определения пф кулисно-рычажного гиперболографа Вяткина
Приложение и Программа для моделирования механизма чушколомателя по схеме на рис. .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 (Xe : Real); {Процедура для расчета фиктивного }
Var l : Real; { механизма }
Begin
kr (xo, yo, loa, fioag, q, xa, ya);
As1 (xa, ya, xe, yn, lab, lbe, 1, q, fiabg, fibeg);
Poi (xa, ya, fiabg, lab, 0, q, 2, Xb, Yb);
Poi (xb, yb, fibeg, lbc, 180-AlfaEBCg, q, 2, Xc, yc);
zveno(xn, yn, 0, 300, q);
zveno_(xe, yn, xc, yc, q);
zveno_(xb, yb, xc, yc, q);
zveno_(xd, yd, 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 первичного мех-ма}
Xe:=Find(CF); {Поиск значения через цел. функцию}
q:=1; {Механизм отображать на экране}
ClearDevice; {Очистка экрана}
Kr (Xo, Yo, Loa, Fioag, q, Xa, Ya); {Расчет ПФ0 первичного мех-ма}
Mech (Xe); {Нарисовать фиктивный механизм}
ReadKey;
End; {For}
End. {Program} {Конец программы}
Приложение к Программа для моделирования механизма чушколомателя
{$F+}
Program Proect;
Uses Crt, Graph, MPF, Tm1m; {Перечень используемых модулей }
{Описание констант }
Const fioa0g=70.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, jk, Dfi, DFir : Real;
i, k, r, n : Integer;
zz, Ok, Fiabg, Fiabr,
Xa, Ya, Xa_1, Ya_1, Xa_2, Ya_2,
Xb, Yb, Xb_1, Yb_1, Xb_2, Yb_2,
Xe, Ye, Xe_1, Ye_1, Xe_2, Xe2,
Xc, Yc, Xc_1, Yc_1, Xc_2, Yc_2 : Massiv;
{Описание используемых процедур}
{$i Gauss.pas}
{$i TestUniv.pas}
Procedure Mech (Fiabg : Real); {Процедура для расчета фиктивного }
Var l: Real; {механизма }
Begin
j:=1;
jk:=1;
Kriv (Xo, Yo, Loa, FIoag, q, jk, Masg,
Xa[i], Ya[i], Xa_1[i], Ya_1[i], Xa_2[i], Ya_2[i]);
Kr (Xa[i], Ya[i], Lab, Fiabg, q, Xb[i], Yb[i]);
l:=0;
As2 (Xb[i], Yb[i], Xn, Yn, Fing, l, Lbe, h, lcc, j, q, fibeg);
Poi (Xb[i], Yb[i], fibeg, lbe, 0, q, 2, Xe[i], Ye[i]);
Poi (Xb[i], Yb[i], fibeg, lbc, -alfaEBCg, q, 2, Xc[i], Yc[i]);
Zveno (Xb[i], Yb[i], fibeg, Lbe, q);
Zveno (Xb[i], Yb[i], fibeg-AlfaEBCg, Lbc, q);
Zveno_ (Xc[i], Yc[i], Xd, Yd, q);
Zveno_ (Xe[i], Ye[i], Xc[i], Yc[i], q);
Opora (Xo, Yo, 10, q, 1);
Opora (Xd, Yd, 10, q, 1);
End; { Procedure }
Function CF (X : Real) : Real; {Вычисление целевой функции }
Begin
q:=0;
Mech (X); {Расчет фиктивного механизма }
CF:=Sqrt(Sqr(Xd-Xc[i])+Sqr(Yd-Yc[i]))-ldc; { Целевая функция }
End; { Function }
Begin {Начало основной программы }
InitG; {Инициализация графического экрана }
masg:=0.5; {Масштаб отрисовки }
xo:=0; yo:=0; {Параметры механизма }
xn:=80; yn:=50;
xd:=100; yd:=0;
loa:=20;
Lab:=70;
Lbe:=100;
Lbc:=70;
ldc:=65;
alfaEBCg:=60;
fing:=0;
DFi:=7.5;
Dfir:=DFi/180*pi;
For i:=1 to m+1 do Begin
zz[i]:=0;
fioag:=fioa0g+DFi*(i-1); {Расчет текущего значения ОК }
FiAbg[i]:=Find(CF); {Поиск угла АB через целевую функцию }
Fiabr[i]:=Fiabg[i]/180*pi; {Перевожу в радианы }
q:=1;
ClearDevice; {Очистка экрана }
Mech (Fiabg[i]); {Нарисовать фиктивный механизм }
Ok[i]:=Fioag;
Kr (Xo, Yo, Loa, FIoag, q, Xa[i], Ya[i]);
Poi (Xa[i], Ya[i], Fiabg[i], Lab, 0, q, 2, Xb[i], Yb[i]);
As2 (Xb[i], Yb[i], Xn, Yn, Fing, 100, Lbe, h, lcc, j, q, Fibeg);
Poi (Xb[i], Yb[i], Fibeg, Lbe, 0, q, 2, Xe[i], Ye[i]);
Poi (Xb[i], Yb[i], Fibeg, lbc, -alfaEBCg, q, 2, Xc[i], Yc[i]);
ReadKey;
End; { For }
{Тестирование ПФ точки А }
Closegraph;
TestPF(m, Xa, Xa_1, Xa_2, 'Xa');
Grafik(m, Ok, Xa, Xa_1, Xa_2, 'Xa', 'Xa_1', 'Xa_2');
TestPF(m, Ya, Ya_1, Ya_2, 'Ya');
Grafik(m, Ok, Ya, Ya_1, Ya_2, 'Ya', 'Ya_1', 'Ya_2');
n:=5;
For k:=1 to n Do {Обнуление массивов }
For r:=1 to n Do A1[k, r]:=0;
For i:=1 to m+1 Do Begin {Цикл для расчета ПФ1 }
A1[1,1]:=Xb[i]-Xa[i]; A1[1,2]:=Yb[i]-Ya[i];
A1[2,1]:=Xb[i]-Xe[i]; A1[2,2]:=Yb[i]-Ye[i]; A1[2,3]:=-(Xb[i]-Xe[i]);
A1[3,1]:=Xb[i]-Xc[i]; A1[3,2]:=Yb[i]-Yc[i]; A1[3,4]:=-(Xb[i]-Xc[i]);
A1[3,5]:=-(Yb[i]-Yc[i]);
A1[4,3]:=-(Xc[i]-Xe[i]); A1[4,4]:=Xc[i]-Xe[i]; A1[4,5]:=Yc[i]-Ye[i];
A1[5,4]:=Xc[i]-Xd; A1[5,5]:=Yc[i]-Yd;
B1[1]:=(Xb[i]-Xa[i])*Xa_1[i]+(Yb[i]-Ya[i])*Ya_1[i];
B1[2]:=0;
B1[3]:=0;
B1[4]:=0;
B1[5]:=0;
Gauss(N, A1, B1, X); {Расчет методом Гаусса }
Xb_1[i]:=X[1]; Yb_1[i]:=X[2];
Xe_1[i]:=X[3];
Xc_1[i]:=X[4]; Yc_1[i]:=X[5];
End; { For }
For i:=1 to m+1 Do Begin {Цикл для расчета ПФ2 }
A1[1, 1]:=Xb[i]-Xa[i]; A1[1, 2]:=Yb[i]-Ya[i];
A1[2, 1]:=Xb[i]-Xe[i]; A1[2, 2]:=Yb[i]-Ye[i]; A1[2, 3]:=-(Xb[i]-Xe[i]);
A1[3, 1]:=Xb[i]-Xc[i]; A1[3, 2]:=Yb[i]-Yc[i]; A1[3, 4]:=-(Xb[i]-Xc[i]);
A1[3, 5]:=-(Yb[i]-Yc[i]);
A1[4, 3]:=-(Xc[i]-Xe[i]); A1[4, 4]:=Xc[i]-Xe[i]; A1[4, 5]:=Yc[i]-Ye[i];
A1[5, 4]:=Xc[i]-Xd; A1[5, 5]:=Yc[i]-Yd;
B2[1]:=(Xb_1[i]-Xa_1[i])*Xa_1[i]+(Xb[i]-Xa[i])*Xa_2[i]+(Yb_1[i]-Ya_1[i])*
Ya_1[i]+(Yb[i]-Ya[i])*Ya_2[i]-(Xb_1[i]-Xa_1[i])*Xb_1[i]-
(Yb_1[i]-Ya_1[i])*Yb_1[i];
B2[2]:=(Xb_1[i]-Xe_1[i])*Xe_1[i]-(Xb_1[i]-Xe_1[i])*Xb_1[i]-
(Yb_1[i]{-Ye_1[i]})*Yb_1[i];
B2[3]:=-(Xb_1[i]-Xc_1[i])*Xb_1[i]-(Yb_1[i]-Yc_1[i])*Yb_1[i]+
(Xb_1[i]-Xc_1[i])*Xc_1[i]+(Yb_1[i]-Yc_1[i])*Yc_1[i];
B2[4]:=-(Xc_1[i]-Xe_1[i])*Xc_1[i]-(Yc_1[i]{-Ye_1[i]})*Yc_1[i]+
(Xc_1[i]-Xe_1[i])*Xe_1[i];
B2[5]:=-(Xc_1[i])*Xc_1[i]-(Yc_1[i])*Yc_1[i];
Gauss(N, A1, B2, X1); {Расчет методом Гаусса }
Xb_2[i]:=X1[1]; Yb_2[i]:=X1[2];
Xe_2[i]:=X1[3];
Xc_2[i]:=X1[4]; Yc_2[i]:=X1[5];
End; { For }
{Тестирование ПФ }
TestPF(m, Xb, Xb_1, Xb_2, 'Xb');
Grafik(m+1, Ok, Xb, Xb_1, Xb_2, 'Xb', 'Xb_1', 'Xb_2');
TestPF(m, Yb, Yb_1, Yb_2, 'Yb');
Grafik(m+1, Ok, Yb, Yb_1, Yb_2, 'Yb', 'Yb_1', 'Yb_2');
TestPF(m, Xe, Xe_1, Xe_2, 'Xe');
Grafik(m+1, Ok, Xe, Xe_1, Xe_2, 'Xe', 'Xe_1', 'Xe_2');
TestPF(m, Xc, Xc_1, Xc_2, 'Xc');
Grafik(m+1, Ok, Xc, Xc_1, Xc_2, 'Xc', 'Xc_1', 'Xc_2');
TestPF(m, Yc, Yc_1, Yc_2, 'Yc');
Grafik(m+1, Ok, Yc, Yc_1, Yc_2, 'Yc', 'Yc_1', 'Yc_2');
End. {Program} {Конец программы }