Моделирование движения и нагрузок плоских механизмов на языке Python
Покупка
Тематика:
Общее машиностроение. Машиноведение
Издательство:
Издательство Уральского университета
Год издания: 2019
Кол-во страниц: 80
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7996-2685-3
Артикул: 800594.01.99
Доступ онлайн
В корзину
Учебное пособие соответствует программам курсов «Теория механизмов и машин», «Математическое моделирование» и включает необходимые сведения для их изучения. Пособие содержит краткие описания программ на языке Python. Может быть рекомендовано студентам технических вузов, занимающихся программированием, а также служить справочным материалом для выполнения проектных работ, связанных с выполнением на компьютере.
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 621: Общее машиностроение. Ядерная техника. Электротехника. Технология машиностроения в целом
ОКСО:
- ВО - Бакалавриат
- 15.03.02: Технологические машины и оборудование
- ВО - Магистратура
- 15.04.02: Технологические машины и оборудование
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Министерство науки и высшего образования Российской Федерации Уральский федеральный университет Имени первого Президента России Б. Н. Ельцина С. К. Буйначев Е. Е. Баженов И. В. Троицкий МОДЕЛИРОВАНИЕ ДВИЖЕНИЯ И НАГРУЗОК ПЛОСКИХ МЕХАНИЗМОВ НА ЯЗЫКЕ 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
Доступ онлайн
В корзину