Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Моделирование движения и нагрузок плоских механизмов на языке Python

Покупка
Артикул: 800594.01.99
Доступ онлайн
250 ₽
В корзину
Учебное пособие соответствует программам курсов «Теория механизмов и машин», «Математическое моделирование» и включает необходимые сведения для их изучения. Пособие содержит краткие описания программ на языке Python. Может быть рекомендовано студентам технических вузов, занимающихся программированием, а также служить справочным материалом для выполнения проектных работ, связанных с выполнением на компьютере.
Буйначев, С. К. Моделирование движения и нагрузок плоских механизмов на языке Python : учебное пособие / С. К. Буйначев, Е. Е. Баженов, И. В. Троицкий. - Екатеринбург : Изд-во Уральского ун-та, 2019. - 80 с. - ISBN 978-5-7996-2685-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1960083 (дата обращения: 23.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство науки и высшего образования  

Российской Федерации 

Уральский федеральный университет 

Имени первого Президента России Б. Н. Ельцина 

С. К. Буйначев 
Е. Е. Баженов 
И. В. Троицкий

МОДЕЛИРОВАНИЕ ДВИЖЕНИЯ 

И НАГРУЗОК ПЛОСКИХ МЕХАНИЗМОВ 

НА ЯЗЫКЕ PYTHON

Учебное пособие 

Рекомендовано методическим советом  
Уральского федерального университета  

для студентов вуза, обучающихся  

по направлениям подготовки 

15.03.02, 15.04.02 «Технологические  

машины и оборудование» 

Екатеринбург 

Издательство Уральского университета 

2019 

УДК 621.837.3:004.432Phyton(075.8) 
ББК 34.412.5я73+32.973.22я73 
          Б90

Рецензенты:
Г. О. Котиев, д‑р техн. наук, проф., завкафедрой «Колесные маши‑
ны» Московского государственного технического университета 
им. Н. Э. Баумана;
И. П. Трояновская, д‑р техн. наук, доц. кафедры «Теоретическая ме‑
ханика и теория механизмов и машин», проф. кафедры «Прикладная 
механика» (ФГБОУ ВО Южно‑Уральский государственный аграр‑
ный университет) 

Научный редактор — канд. техн. наук, доц. С. В. Бутаков 

Б90

Буйначев, С. К.
Моделирование движения и нагрузок плоских механизмов 

на языке Python : учебное пособие / С. К. Буйначев, Е. Е. Ба‑
женов, И. В. Троицкий. — Екатеринбург : Изд‑во Урал. ун‑та, 
2019. — 80 с.

ISBN 978‑5‑7996‑2685‑3

Учебное пособие соответствует программам курсов «Теория механизмов и ма‑

шин», «Математическое моделирование» и включает необходимые сведения для 
их изучения. Пособие содержит краткие описания программ на языке Python. 

Может быть рекомендовано студентам технических вузов, занимающихся про‑

граммированием, а также служить справочным материалом для выполнения про‑
ектных работ, связанных с выполнением на компьютере.

Библиогр.: 5 назв. Рис. 19.

УДК 621.837.3:004.432Phyton(075.8) 
ББК 34.412.5я73+32.973.22я73 

ISBN 978‑5‑7996‑2685‑3
© Уральский федеральный  
     университет, 20189

Предисловие 

Предисловие 

Р

азвитие вычислительной техники и массовое внедрение 
компьютеров в исследование механизмов повысили тре‑

бования к математической подготовке инженеров. В настоящее 
время процесс проектирования машины требует использования 
алгоритмического языка высокого уровня.

Самым удобным признан язык Python. Многие конструкции 

языков сходны, однако на Python программирование имеет су‑
щественные преимущества. Этот язык выбран не случайно, по‑
скольку разработанные авторские программы, представленные 
в пособии, работают без изменения под разными операцион‑
ными системами Windows, Linux, MacOS.

В учебном пособии представлен объективный подход к опи‑

санию групп Ассура и их поведению совместно с электродвига‑
телем с дальнейшим анализом и визуализаций решений.

Пособие составлено как набор модулей для разных задач, по‑

зволяющих быстро найти нужную информацию и освоить но‑
вые приемы программирования.

Моделирование движения и нагрузок плоских МеханизМов на языке Python 

1. Плоские механизмы.  

Общие сведения

М

еханизм — часть машины, в которой рабочий процесс 
реализуется путем выполнения определенных механи‑

ческих движений. Чаще всего эти движения являются плоски‑
ми. Однотипные механизмы используются в конструкциях са‑
мых разных по назначению и условиям работы машин.

В плоском механизме положение звена можно описать тре‑

мя координатами — двумя линейными и одной угловой [1]. 
Из множества кинематических цепей с абсолютно жесткими 
звеньями рассмотрим только цепи со степенью подвижности 
w = 1. Для цепи с координатами звеньев 

 
J = (J1,.., Jn)T,  
(1) 

где Ji — i‑я координата j‑го звена, 

n — число координат звеньев кинематической цепи.
Зададим ведущему звену закон движения j (t), это позволит 

определить координаты всех ведомых звеньев:

 
J = J (j (t)).  
(2) 

Если известна скорость ведущего звена jў(t) и его ускорение 

jў(t), то известны скорость Jў и ускорение Jўў ведомых звеньев 

 
Jў = Jjjў,  
(3) 

 
Jўў = Jjjўў+Jjj (jў) 2,  
(4) 

1. Плоские механизмы. Общие сведения 

где 

 
jў = ∂j/∂t,  
(5) 

 
jўў = ∂ 2j/∂t 2.  
(6) 

Частные производные по координатам являются аналогами ско‑
ростей и ускорений по координате ведущего звена. 

 
Jj = (∂J1/∂j,..,∂Jn/∂j)T,  
(7) 

 
Jjj = (∂ 2J1/∂j 2, …,∂J 2

n/∂j 2)T.  
(8) 

Кинетическая энергия звеньев представлена квадратичной  
формой 

 
T = 1

2  JўTQ Jў.  
(9) 

Если форма каноническая, то матрица коэффициентов инер‑

ции звеньев 

 
Q = diag{Qi} i=1, n.  
(10) 

Подставим в выражение кинетической энергии (9) в фор‑

мулу (3) 

 
T = 1

2  (Jjjў)TQJjjў = 1

2 Jj

TQJjjў 2 = 1

2  Jjў 2, 
 (11) 

где J — приведенный момент инерции.

Обозначим приведенный момент инерции звеньев к веду‑

щей координате 

 
J = Jj

TQ Jj  
(12) 

и его производную по обобщенной координате 

 
Jj = 2Jj

TQ Jjj.  
(13) 

В этом случае задача сводится к исследованию вращения 

маховика с переменным приведенным моментом инерции. Он 
определяется конфигурацией рычажной системы [2] 

Моделирование движения и нагрузок плоских МеханизМов на языке Python 

 
J = J (j).  
(14) 

Свойства приведенного момента характеризуются гладкой 

и неотрицательной функцией:

 
J (j) = Si=1, n Qi (Jij) 2 ≥ 0,  
(15) 

в которой период изменения соответствует обороту кривошипа 

 
J (j) = J (j + 2p).  
(16) 

Пусть на кинематическую цепь по координатам c действу‑

ет вектор внешних сил 

 
C = C (c (j)).  
(17) 

Работа вектора C по координатам c есть скалярное произ‑

ведение:

 
A = cTC.  
(18) 

Уравнение движения найдем как экстремаль функциона‑

ла [3]:

 
т(0, t) (A + T) dt ® minj, c.  
(19) 

Координаты j и c связаны с обобщенными координатами 

q уравнениями 

 
t(q, J) = 0,  
(20) 

 
a(q, c) = 0.  
(21) 

Добавим в функционал неопределенные множители LT  и  LE 

 
dim<LT> = dim<j >,  
(22) 

 
dim<LE> = dim<c >.  
(23) 

Теперь функционал 

 
т(0, t) (A + T — tўLT – aўLE) dt ® minj, cq  
(24) 

имеет единственное решение.

1. Плоские механизмы. Общие сведения 

Уравнения Лагранжа первого рода 

 
Jjўў + 1

2  Jjjў 2 + tjўLT = 0,  
(25) 

 
– C + acўLE = 0,  
(26) 

 
tqўLT + aqўLE = 0.  
(27) 

Получим движение одномассовой кинематической цепи, 

описанной уравнением 

 
Jjўў + 1

2  Jjjў 2 = M.  
(28) 

Преобразуем уравнение движения:

 
Jj

TQJjjўў + Jj

TQJjjjў 2 = cj

TC,  
(29) 

и еще раз 

 
Jj

TQ (Jjjўў+Jjj (jў) 2) = (cJJj)TC,  
(30) 

здесь 

 
Jj

TQJўў = Jj

T cJ

T C,  
(31) 

тогда 

 
Jj

T Fи = Jj

TP,  
(32) 

где Fи — приведенные силы инерции по координатам J, 

P — приведенные внешние силы по координатам c.
Таким образом получился рычаг Жуковского:

 
Jj

T (Fи – P) = 0.  
(33) 

Также легко получается и метод Виттенбауэра 

 
F = f (DT, J).  
(34) 

Моделирование движения и нагрузок плоских МеханизМов на языке Python 

2. Кинематика  

плоских механизмов

П

остроим механизм путем присоединения группы Ассу‑
ра к кривошипу ОА (рис. 1 на с. 13). Начнем с группы 

первого вида. Считаем, что звенья между собой соединены па‑
рой пятого класса с центром в точке В, а другими свободными 
элементами приводятся звеньями с заданным законом движе‑
ния. В данном случае элемент кинематической пары с центром 
в точке А соединяется с элементом кинематической пары кри‑
вошипа. Группу Ассура представим объектом [4].

Для описания группы используем вектор объекта 

 
J = (xb, yb, xsAB, ysAB, xsBC, ysBC, jAB, jBC)T,  
(35) 

где xb, yb — координаты центра кривизны элемента кинемати‑
ческой пары в точке B, соединяющей звенья группы;

xsAB, ysAB, xsBC, ysBC — координаты центров тяжести звеньев  

AB и BC;

jAB, jBC — углы поворота звеньев вокруг их центров тяжести.

2.1. Группа Ассура первого вида

На рис. 1 (с. 13) представлен объект и изображение группы 

Ассура первого вида.

Этот же файл можно использовать для составления длинных 

цепочек. Длина кривошипа ОА, присоединенного к группе, 

2. Кинематика плоских механизмов 

равна 0,3 м. Длины звеньев группы АВ и ВС равны 1,0 и 0,7 м. 
Расстояние от точки О вращения кривошипа до стойки в точ‑
ке С равно 1,0 м.

________________________________________________

## g1_bsc.py
# -*- coding: utf-8 -*-
from Tkinter import *
from bsc_grafik import *
from math import *

##=========================================== Объект 1-го вида
class GA1:
    def __init__(self,AB=1.0,BC=1.0,AS=0.0,CS=0.0,alfa=0.0):
        self.AB,self.BC,self.AS,self.CS,self.alfa=AB,BC,AS,CS,alfa
        self.fi,self.xa,self.ya,self.xb,self.yb,self.xc,self.yc=0.0, 0.0,0.0, 0.0,0.0, 0.0,0.0
        self.xsAB,self.ysAB,self.xsBC,self.ysBC=0.0,0.0, 0.0,0.0
        self.fiAB,self.fiBC=0.0, 0.0
        self.bd=Bl('fi','xa','ya','xb','yb','xc','yc','xs1','ys1','xs2','ys2','fi1','fi2',
                   'A','B','C','S1','S2','KL')
    def getline(self,fi):
        self.bd.add(A=(self.xa,self.ya),B=(self.xb,self.yb),C=(self.xc,self.yc),
                          S1=(self.xsAB,self.ysAB),S2=(self.xsBC,self.ysBC))
        self.bd.add(fi=fi,xa=self.xa,ya=self.ya,xb=self.xb,yb=self.yb,xs1=self.
xsAB,ys1=self.ysAB,
                    xs2=self.xsBC,ys2=self.ysBC,fi1=self.fiAB,fi2=self.fiBC)
    def putline(self,c,mg=0.003,xg=550,yg=200,L=['A','B','C','S1','S2'],col='black',w=1):
        for i in L: LayImagine(self.bd.L[i],mg,xg,yg,c,col,w)
    def getkontur(self,b=1):
        if b:
            self.bd.addL(KL=[(0.0,0.0),(self.xa,self.ya),(self.xb,self.yb),(self.xc,self.yc)])
        else:
            self.bd.addL(KL=[(self.xa,self.ya),(self.xb,self.yb),(self.xc,self.yc)])
        self.bd.addL(KL=F0(self.xa,self.ya,0.01))
        self.bd.addL(KL=F0(self.xb,self.yb,0.01))
        self.bd.addL(KL=F0(self.xc,self.yc,0.01))

Моделирование движения и нагрузок плоских МеханизМов на языке Python 

    def putkontur(self,c,mg=0.003,xg=550,yg=200,col='black',w=1):
        self.bd.showL(mg,xg,yg,c,col,w)
    def position(self,xa,ya,xc,yc):
        OA2=xa**2+ya**2
        OA=OA2**0.5
        BC=self.BC
        AB=self.AB
        alfa=self.alfa
        if ya>0:    fiOA=acos((OA2+xa**2-ya**2)/(2.0*xa*OA))
        else:  fiOA=2.0*pi-acos((OA2+xa**2-ya**2)/(2.0*xa*OA))
        #-----
        AC2=(xc-xa)**2+(yc-ya)**2
        AC =AC2**0.5
        OC2=xc**2+yc**2
        OC=OC2**0.5
        if yc>0: fiOC=acos((OC2+xc**2-yc**2)/(2.0*OC*xc))
        else:    fiOC=2.0*pi-acos((OC2+xc**2-yc**2)/(2.0*OC*xc))
        #-----
        fi=fiOA-fiOC
        AK=OA*sin(fi)
        OK=OA*cos(fi)
        aco=atan(AK/(OC-OK))
        c=acos((AC2+BC**2-AB**2)/(2.0*AC*BC))
        fi3=pi-c-aco
        #-----
        xb1=OC+BC*cos(fi3)
        yb1=BC*sin(fi3)
        OB2=yb1**2+xb1**2
        OB=OB2**0.5
        boc=atan(yb1/xb1)
        fiAB=asin((yb1-AK)/AB)+alfa
        xb=OB*cos(boc+fiOC)
        yb=OB*sin(boc+fiOC)
        fiBC=-(pi-c-aco+fiOC)
        xsAB=xa+(xb-xa)/self.AB*self.AS
        ysAB=ya+(yb-ya)/self.AB*self.AS
        xsBC=xc+(xb-xc)/self.BC*self.CS
        ysBC=yc+(yb-yc)/self.BC*self.CS
        self.xa,self.ya=xa,ya
        self.xb,self.yb=xb,yb
        self.xc,self.yc=xc,yc

Доступ онлайн
250 ₽
В корзину