Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
UNIVERZA V MARIBORU
FAKULTETA ZA STROJNIŠTVO
Zoran POSINKOVIĆ
IZDELAVA MSC ADAMS VTIČNIKA ZA SINTEZO MEHANIZMOV
Diplomsko delo
visokošolskega strokovnega študijskega programa 1. stopnje
Strojništvo
Maribor, avgust 2018
- X -
IZDELAVA MSC ADAMS VTIČNIKA ZA SINTEZO
MEHANIZMOV
Diplomsko delo
Študent: Zoran POSINKOVIĆ
Študijski program: visokošolski strokovni študijski program 1. stopnje Strojništvo
Smer: Konstrukterstvo
Mentor: izr. prof. dr. Karl GOTLIH
Somentor: asist. Timi KARNER
Maribor, avgust 2018
- X -
I
I Z J A V A
Podpisani Zoran Posinković izjavljam, da:
je diplomsko delo rezultat lastnega raziskovalnega dela,
predloženo delo v celoti ali v delih ni bilo predloženo za pridobitev kakršnekoli izobrazbe
po študijskem programu druge fakultete ali univerze,
so rezultati korektno navedeni,
nisem kršil avtorskih pravic in intelektualne lastnine drugih,
soglašam z javno dostopnostjo diplomskega dela v Knjižnici tehniških fakultet ter
Digitalni knjižnici Univerze v Mariboru v skladu z Izjavo o istovetnosti tiskane in
elektronske verzije zaključnega dela.
Maribor, avgust 2018 Podpis:
II
ZAHVALA
Iskreno se zahvaljujem vsem, ki so bili vpleteni v
proces izdelave diplomskega dela.
Posebej bi se rad zahvalil somentorju asist. Timiju
Karnerju, asist. dr. Simonu Krašni in Marijani Hadžić za
pomoč, podporo in potrpežljivost.
Diplomsko nalogo posvečam svojim staršem.
III
IZDELAVA MSC ADAMS VTIČNIKA ZA SINTEZO MEHANIZMOV
Ključne besede: Burmester, sinteza mehanizma, Adams View, pozicijska sinteza, MSC Adams
ukazni jezik
UDK: 621.837.7(043.2)
POVZETEK
Diplomsko delo obravnava MSC Adams vtičnik, namenjen sintezi štiriročičnih mehanizmov.
Algoritem skriptnega programa temelji na grafični rešitvi pozicijske sinteze štiriročičnih
mehanizmov, ki jo je predstavil Ludwig Burmester leta 1888. Sam program je napisan v
ukaznem jeziku MSC Adams okolja.
IV
CONSTRUCTION OF THE MSC ADAMS PLUG-IN FOR THE SYNTHESIS OF
MECHANISMS
Key words: Burmester, mechanism synthesis, Adams View, position synthesis, MSC Adams
command language
UDK: 621.837.7(043.2)
ABSTRACT
This graduation thesis deals with the MSC Adams plug-in intended for the synthesis of four-bar
mechanisms. The program algorithm is based on a graphical solution for the position synthesis
of the four-bar mechanisms presented by Ludwig Burmester in 1888. The program itself is
written in the MSC Adams command language.
V
KAZALO VSEBINE
1 UVOD ....................................................................................................... 1
1.1 Opredelitev problema ........................................................................ 1
1.2 Cilji, predpostavke in omejitve diplomskega dela ............................... 1
1.3 Struktura dela .................................................................................... 1
2 OSNOVE MEHANIZMOV ........................................................................... 3
2.1 Kratka zgodovina mehanizmov ........................................................... 3
2.2 Štiriročični mehanizem ....................................................................... 6
2.2.1 Grashofov kriterij .......................................................................................................... 7
2.3 Vezja in veje v mehanizmu ................................................................. 9
2.4 Mrtva lega ........................................................................................ 11
3 SINTEZA RAVNINSKEGA GIBANJA MEHANIZMA ...................................... 15
3.1 Kinematična sinteza mehanizma ...................................................... 15
3.2 Sinteze gibanja štiri-ročičnega mehanizma v primeru štirih pozicij ... 16
3.2.1 Pol premika ......................................................................................................... 17
3.2.2 Postopek iskanja središčnih točk ........................................................................ 18
3.2.3 Postopek iskanja krožnih točk ............................................................................ 19
3.3 Problemi sinteze ............................................................................... 20
3.4 Sinteza za primer treh in petih pozicij ............................................... 21
4 OSNOVE PROGRAMIRANJA V MSC ADAMS VIEW OKOLJU ...................... 22
4.1 Uvod................................................................................................. 22
4.1.1 Command Navigator in Command Window....................................................... 23
4.1.2 Database Navigator ............................................................................................ 26
4.1.3 Function Builder ................................................................................................. 29
4.1.3.1 Operandi .................................................................................................................... 30
4.1.3.2 Operatorji .................................................................................................................. 33
4.2 Pisanje funkcij .................................................................................. 33
4.3 Makroukazi ...................................................................................... 34
4.3.1 Zapis in aktivacija ................................................................................................ 34
4.3.2 Parametri ............................................................................................................ 35
VI
4.3.3 Pogojni stavki in zanke........................................................................................ 37
4.3.4 Spremenljivke ..................................................................................................... 38
4.3.5 Skupine ............................................................................................................... 40
4.4 Dialog Box Builder ............................................................................ 41
4.5 Menijska vrstica ............................................................................... 44
4.6 Izdelava vtičnika ............................................................................... 45
4.6.1 Build.cmd ............................................................................................................ 46
4.6.2 Vtičnik ................................................................................................................. 46
5 LINKAGE DESIGN VTIČNIK, NAVODILA ZA UPORABO .............................. 49
5.1 Aktivacija vtičnika ............................................................................ 49
5.2 Pogovorno okno Four positions synthesis ......................................... 50
5.3 Pogovorno okno FB Controller .......................................................... 51
5.4 Sinteza.............................................................................................. 53
6 SKLEP ..................................................................................................... 56
7 VIRI ........................................................................................................ 57
VII
KAZALO SLIK
Slika 2.1: Osnovne naprave ........................................................................................................ 4
Slika 2.2: Kinematične verige [4] ................................................................................................ 5
Slika 2.3: Štirizgibni mehanizem z oznakami .............................................................................. 6
Slika 2.4: Grashofovi mehanizmi ................................................................................................ 7
Slika 2.5: Nihajno-nihajni mehanizem (Triple rocker) ................................................................ 8
Slika 2.6 PG mehanizem (Special Grashof) ................................................................................. 9
Slika 2.7 Vezje mehanizma ....................................................................................................... 10
Slika 2.8 Veji mehanizma .......................................................................................................... 10
Slika 2.9: Kombinirani mrtvi legi ............................................................................................... 12
Slika 2.10: Mrtve lege ............................................................................................................... 13
Slika 3.1: Vrste kinematičnih sintez .......................................................................................... 16
Slika 3.2: Sinteza gibanja kot geometrijski problem ................................................................. 16
Slika 3.3: Pol premika in kot premika ....................................................................................... 17
Slika 3.4: Iskanje operativne dvojice ........................................................................................ 17
Slika 3.5: Kot s središčno točko ................................................................................................ 18
Slika 3.6: Polovični kot premika ................................................................................................ 18
Slika 3.7: Središčne točke ......................................................................................................... 19
Slika 3.8: Burmestrova krivulja ................................................................................................. 19
Slika 3.9: Iskanje krožne točke .................................................................................................. 20
Slika 3.10: Slika rešitev ............................................................................................................. 20
Slika 4.1: Adams View delovno okolje ...................................................................................... 22
Slika 4.2: Command Navigator ................................................................................................. 24
Slika 4.3: Command Window ................................................................................................... 25
Slika 4.4: Database Navigator ................................................................................................... 27
Slika 4.5: Shranjene knjižnice ................................................................................................... 27
Slika 4.6: Sled do objektov menijske vrstice ............................................................................. 28
Slika 4.7: Function Builder ........................................................................................................ 29
Slika 4.8: Primer napačne izbire Function Builder-ja ................................................................ 30
Slika 4.9 Klicanje vrednosti objektov ........................................................................................ 32
Slika 4.10: Uvažanje makroukaza ............................................................................................. 35
Slika 4.11: Primer pogovornega okna ....................................................................................... 36
Slika 4.12: Shramba $_self spremenljivke ................................................................................ 39
Slika 4.13 Podrejeni objekti pogovornega okna ....................................................................... 41
Slika 4.14 Sprememba knjižnice ............................................................................................... 42
Slika 4.15 Dialog Box Builder .................................................................................................... 42
Slika 4.16: Sestavni elementi pogovornega okna ..................................................................... 44
Slika 4.17: Novi meni ................................................................................................................ 45
Slika 4.18: Zapis v binarno obliko ............................................................................................. 47
Slika 4.19: Spremenljivka okolja ............................................................................................... 48
Slika 4.20: Plug-in Manager ...................................................................................................... 48
Slika 5.1: Primer štirih pozicij.................................................................................................... 49
Slika 5.2: Four position synthesis ............................................................................................. 50
VIII
Slika 5.3: Sinteza mehanizma in krivulj ..................................................................................... 51
Slika 5.4: FB Controller ............................................................................................................. 52
Slika 5.5: Nihajno nihajni mehanizem ...................................................................................... 54
Slika 5.6: Grashofov rotirajoče-nihajni mehanizem ................................................................. 54
Slika 5.7: Nihajno-nihajni mehanizem ...................................................................................... 55
Slika 5.8:: Grashofov rotirajoče-nihajni mehanizem ................................................................ 55
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
1
1 UVOD
1.1 Opredelitev problema
MSC Adams View (Adams v nadaljevanju) trenutno velja za najmočnejši program pri analizi,
simulaciji in optimizaciji dinamičnih modelov. Vendar pa v programu ne najdemo orodij za
sintezo mehanizmov. V praksi se tako pričakuje, da v Adams uvozimo že ustvarjeni kinematični
model, kar pomeni, da opravimo vse stopnje sinteze v drugih programskih okoljih. Tak pristop
je zamuden, saj moramo za vsak malo večji popravek v začetnih pogojih preskakovati med
programi, namesto da bi celoten ciklus sinteze in analize opravili v enem programskem okolju.
1.2 Cilji, predpostavke in omejitve diplomskega dela
Cilj diplomskega dela je realizacija vtičnika za program Adams, s katerim bi na preprost način
prišli do mehanizma, upoštevaje zastavljene omejitve. Za vrsto sinteze sem izbral geometrijsko
sintezo gibanja štiriročičnega mehanizma. Sam algoritem pa sem zgradil na geometrijskem
postopku sinteze, do katerega se je dokopal Ludwig Burmester že davnega leta 1888.
Namen vtičnika je ponuditi uporabniku Adamsa inženirsko orodje pri razvoju in raziskovanju
mehanizmov. Zato mora biti vtičnik preprost in praktičen za uporabo. Oblikovanje take vrste
programskega orodja pa je mogoče le pod pogojem, da Adams podpira pisanje makroukazov
in vsebuje dovolj kompleksen skriptni jezik, da omogoči fleksibilnost pri razvoju programske
opreme.
1.3 Struktura dela
Diplomsko delo je razdeljeno na sedem poglavij. Prvo poglavje je uvodno. V drugem poglavju
predstavim zgodovino mehanizmov in naprav ter prikažem dejavnike, ki so v času industrijske
revolucije pripeljali do razvoja sinteznih postopkov. V nadaljevanju poglavja opišem osnove
štirizglobnih mehanizmov, njihovo razvrstitev in lastnosti. Poznavanje osnov nam bo kasneje
olajšalo razumevanje načina delovanja sinteznega programa. V tretjem poglavju opišem
sintezne postopke in poglobljeno razčlenim geometrijsko sintezo gibanja v primeru štirih
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
2
pozicij. V četrtem poglavju se lotim osnov programiranja v Adamsu, predstavim sintakso
ukaznega jezika in obdelam glavne vrste prilagoditev, ki jih lahko dosežemo z makroukazi. Peto
poglavje služi predstavitvi vtičnika Linkage Design, kjer na konkretnem primeru predstavim
način uporabe. Sedmo poglavje je sklepno.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
3
2 OSNOVE MEHANIZMOV
2.1 Kratka zgodovina mehanizmov
Človeško telo je v primerjavi z drugimi velikimi plenilci nerodno, okorno in šibko. Prvo mesto
v prehranski verigi smo si zagotovili predvsem z iznajdljivo uporabo različnih orodij. Kasneje
so se iz orodij razvile kompleksnejše naprave, s katerimi so človeške skupnosti zgradile in
vzdrževale prve civilizacije.
Antična Grčija nam postreže s prvimi pisnimi viri, ki obravnavajo naprave in mehanizme.
Najstarejše tovrstno besedilo (uvrščeno v tretje stoletje pr. n. št.) poznamo pod imenom
Mxhanika, pripisujejo pa ga Aristotelu [1]. V njem predstavljene naprave so sicer zgolj nosilec
geometričnega problema, ki ga mora učenec rešiti, besedilo sámo pa nam nakazuje, da so Grki
že v tretjem stoletju pr. n. št. dobro poznali osnovne naprave in principe njihovega delovanja.
Pod osnovne naprave so Grki šteli kolo, zagozdo, škripec, vijak, vzvod in klanec. Sámo
dojemanje osnovnih elementov teh naprav je bilo močno pogojeno s takratnim razumevanjem
naprave kot orodja za usmerjanje in ojačitev sile. S tega vidika so analizo mehanizma
zreducirali na statični preračun, problem dinamike in dela pa so zanemarili.
Empirizem je bil takratnim filozofom načeloma tuj, potencialno aplikativne vede, kot sta
matematika in geometrija, pa so bile uporabljene večinoma le pri obravnavi abstraktnih
problemov. Seveda najdemo tudi v antični dobi izjeme. Arhimed (3. stoletje pr. n. št.), sicer
znan po svojih matematičnih delih, je razvijal tudi naprave, namenjene dvigovanju težkih
bremen in prenosu tekočin (Arhimedov vijak), ter za vojaške potrebe. Drugi tak primer je
Heron iz Aleksandrije, ki ga nekateri štejejo med prve fizike, saj je močno poudarjal pomen
izkustva. Poleg osnovnih naprav je raziskal in opisal naravo tekočin ter svoje znanje apliciral v
domiselne naprave (parni stroj-aeolipile, gasilni aparat, orgle na veter, vodne črpalke) [2].
Po propadu rimskega imperija so antično zapuščino prevzeli Arabci, jo dograjevali in, kar je
najpomembnejše, ohranili marsikateri antični tekst, ki je kasneje priromal v renesančno
Evropo. Najvidnejši predstavnik arabske zlate dobe je izumitelj in matematik Ismail al-Jazari,
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
4
ki v svojem delu Knjiga znanja o veleumnih mehaničnih napravah (1206) opiše več kot sto
naprav [3].
V srednjem veku je Evropa resda kulturno nazadovala, je pa premik od sužnjelastniškega
sistema v fevdalni dobi ustvaril močno potrebo po razvoju tehnologije, ki bi olajšala
poljedelska in obrtniška dela. Poleg mlinov na vodo je v tem času prišlo do prve množične
izrabe vetra kot primarnega vira energije. Rojstvo obrtniških cehov pa pripomore k razvoju
tehnologije in praktičnega znanja, iz katerega kasneje črpajo navdih renesančni inženirji.
Slika 2.1: Osnovne naprave
Dva izuma v dobi renesanse pripomoreta k pospešenemu razvoju naprav in mehanizmov;
uporaba perspektive in merila omogoči natančnejše načrte, iznajdba tiska pa pripomore k
intenzivnejšemu širjenju idej po Evropi. Znanost in tehnologija tako pridobita strateško
vrednost v političnem prostoru tedanje Evrope, temu pa sledijo večja vlaganja v razvoj naprav
tako v vojaške kot civilne namene. Pri analizi mehanizmov ter odkrivanju konceptov njihove
dinamike in delovanja ostajajo antični teksti referenčna točka, vključno z dojemanjem
mehanizma kot sklopa osnovnih naprav. V rokodelski praksi pa lahko v tem času že opazimo
premik s koncepta osnovnih naprav na strojne elemente, kot jih poznamo danes. V zapisih
Leonarda da Vincija (1452-1519), zbranih v delu Codex Madrid, so med drugim dokumentirane
vse kinematične dvojice, ki jih Franz Reuleaux v 19. stoletju vključi v svojo kinematično teorijo.
Žal so ostali zapisi Leonarda da Vincija neobjavljeni, in kot taki predstavljajo bolj kroniko
tehnologije tistega časa, kot da bi imeli resnejši vpliv na področju tehnike [4].
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
5
Po obdobju renesanse se večina vidnega razvoja s praktičnega področja prenese na področje
znanstvenih ved. Isaac Newton in Gottfried Leibniz razvijeta diferencialni račun, Leonhard
Euler postavi temelje kinematike, rodi se opisna geometrija in v Franciji ustanovijo prvo šolo,
namenjeno razvoju tehničnega kadra, Ecole Polytechnique (1794). Navkljub naglemu razvoju
znanosti v času industrijske revolucije prihaja do prebojev v tehnologiji še vedno v delavnicah.
James Watt, kot najvidnejši predstavnik te dobe, predstavi leta 1781 izboljšano različico
Newcomenovega parnega stroja. Nov parni stroj ima izrazito manjše izgube in koristi ojnico
pri prenosu premega gibanja v krožno.
V 19. stoletju se primarna obravnava mehanizma dokončno usmeri s sile na spremembo
gibanja. Več kot pol stoletja pa mora še miniti, da akademska sfera postreže z novim atlasom
mehanizmov, ki ne le da bolje klasificira vse dotedanje mehanizme, ampak prispeva tudi k
razvoju sinteznih postopkov [5]. To delo opravi nemški inženir in profesor Franz Reuleaux
(1829-1905). Njegova Kinematika strojev (1875) je knjiga, ki vzpostavi temelje moderne
kinematike in zavrže tedanji model strojev, po katerem so bili mehanizmi razvrščeni na
podlagi načina spremembe gibanja. Po Reuleauxjevem modelu je treba mehanizem razumeti
kot kinematično verigo, sestavljeno iz medsebojno povezanih kinematičnih dvojic. Našteje
šest osnovnih kinematičnih verig (ročična, krivuljna, vijačna, zaporna, zobniška in jermenska)
in dvaindvajset osnovnih gradnikov mehanizma [4].
Slika 2.2: Kinematične verige [4]
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
6
Reuleaux razstavi napravo na topološke enote, kar po eni strani povzroči abstrahiranje
mehanizma in lociranje istih kinematičnih principov na vizualno različne naprave, po drugi
strani pa omogoči sintezo novih mehanizmov z uporabo inverzije, sestavljenih verig in
topoloških deformacij. Reuleauxovi učenci in sodobniki iz njegove zapuščine razvijejo različna
orodja, tako analize kot sinteze mehanizmov: Ludwig Burmester predstavi grafične postopke
sinteze, Martin Grubler razvije teorem mobilnosti, Pafnuty Chebyshev razvije polinome za
aproksimacijo ojnične krivulje. V stoletju, ki sledi, se iz grafičnih postopkov razvijejo
matematična orodja sinteze, ki se z razvojem računalnikov vedno bolj izpopolnjujejo in
prestopajo iz analitičnih metod v optimizacijske algoritme. K samemu razvoju pripomorejo
tudi nove veje matematike, kot so teorija grafov, vijačna teorija in teorija mrež. [4]
2.2 Štiriročični mehanizem
Najosnovnejši ročični mehanizem, ki nam še omogoča prenos gibanja, je štiriročični
mehanizem. Sestavljen je iz treh gibljivih in ene nepremične ročice, ki so med seboj povezane
z rotacijskimi zglobi, kar ga uvršča v družino zaprtih kinematičnih verig. V kolikor je sistem
sploh možno sestaviti, mora biti najdaljša ročica (L) krajša od skupnega seštevka najkrajše
ročice (S) in ostalih dveh ročic (P,Q);
𝐿 < (𝑆 + 𝑃 + 𝑄) (2.1)
Slika 2.3: Štirizgibni mehanizem z oznakami
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
7
Pri tej vrsti mehanizma z eno prostostno stopnjo se prenos gibanja iz pogonske ročice prenese
prek ojnice (vezne ročice) na gnano ročico. Gnana ročica lahko kroži ali pa zgolj niha. Isto velja
tudi za pogonsko ročico, vendar ta v primeru nihanja potrebuje dodaten gnani člen, ki zagotovi
nihanje ročice v primernem razponu.
2.2.1 Grashofov kriterij
Z Grashofovim kriterijem določimo kinematične lastnosti mehanizma, tako da primerjamo
seštevek dolžin najkrajše in najdaljše ročice s seštevkom dolžin ostalih dveh ročic. Iz tega
pogoja dobimo tri družine mehanizmov, Grashofove mehanizme, nihajno-nihajne mehanizme
in posebne Grashofove mehanizme (v nadaljevanju PG mehanizmi) [6].
Grashofovi mehanizmi
Slika 2.4: Grashofovi mehanizmi
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
8
O Grashofovem mehanizmu govorimo takrat, ko je izpolnjen sledeči pogoj:
𝐿 + 𝑆 < 𝑃 + 𝑄 (2.2)
V tem primeru dobimo mehanizem, kjer je vsaj ena ročica sposobna kroženja. S kinematično
inverzijo mehanizma dobimo štiri skupine mehanizmov, katerih značaj je pogojen z lego
najkrajše ročice. V prvem primeru s slike 2.4 je ročica S gonilna, gnana ročica pa zgolj niha. V
drugem primeru doseže polno rotacijo samo ojnica, in še to le v primeru, da je pogon
nameščen v zglobu A ali zglobu B. Tretji primer je podoben prvemu s to razliko, da tokrat gnana
ročica kroži, vendar v praksi potrebuje tovrstni mehanizem še vztrajnik, da ohrani ročica
rotacijo. V zadnjem primeru je ročica S vpeta v tla, ostale tri ročice pa opravijo polni krog.
Nihajno-nihajni mehanizmi
Slika 2.5: Nihajno-nihajni mehanizem (Triple rocker)
Pri nihajno-nihajnem mehanizmu je neenakost obrnjena;
𝐿 + 𝑆 > 𝑃 + 𝑄 (2.3)
Seštevek dolžin najkrajše in najdaljše ročice je v tem primeru večji od seštevka dolžin ostalih
ročic, zaradi česar so vse tri ročice mehanizma sposobne zgolj nihanja, ne glede na
kinematično inverzijo.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
9
PG mehanizmi
V tej družini imamo šest skupin. Za prve štiri skupine PG mehanizmov veljajo podobni pogoji
in ugotovitve kot pri Grashofovih mehanizmih (položaj najkrajše ročice zaznamuje
kinematične lastnosti mehanizma), s to razliko, da imajo PG mehanizmi singularno točko. V tej
točki so vse štiri ročice kolinearne, in nadaljnjo gibanje gnane ročice postane nepredvidljivo.
Spodnja formula opisuje pogoj, ki ga izpolnjuje vseh šest skupin.
𝐿 + 𝑆 = 𝑃 + 𝑄 (2.4)
Za peto skupino velja še dodaten pogoj, in sicer da imajo ročice paroma enako dolžino. Kar
mehanizmu doprinese še eno singularno točko.
Slika 2.6 PG mehanizem (Special Grashof)
Paralelogramski mehanizem prenaša kotno hitrost na gnano ročico. Če v singularni točki gnana
ročica spremeni smer, dobimo anti-paralelogramski mehanizem. V osnovi pa oba mehanizma
štejemo kot dvojno rotirajoči mehanizem. V zadnji skupini so dolžine ročice štirizglobnega
mehanizma med seboj enake.
2.3 Vezja in veje v mehanizmu
Rotirajoče-nihajni mehanizem lahko sestavimo na dva načina. V obeh primerih bo gonilna
ročica pognala gnano ročico v nihanje; razlika bo le v tem, da bosta ročici nihali v različnih
položajih (slika 2.7).
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
10
Slika 2.7 Vezje mehanizma
V tem primeru govorimo, da ima mehanizem dve vezji. Z geometrijskega stališča zglob B
doseže tako zgornji lok kot spodnjega, vendar je potrebno za ta premik mehanizem razstaviti
in ga ponovno sestaviti.
V naslednjem primeru (slika 2.8) pa imamo opravka z dvema vejama v mehanizmu. Pri
štirizglobnem mehanizmu se tak primer pojavi , ko je pogonska ročica nihajna. Iz svoje skrajne
lege se lahko premakne na dva načina. Če je gnana ročica nihajna, dobimo spet dva različna
kinematična loka, če pa je rotirajoča, obstaja možnost, da ročica zamenja smer vrtenja in tako
obhodi obe veji mehanizma.
Slika 2.8 Veji mehanizma
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
11
2.4 Mrtva lega
Z mrtvo lego označimo skrajni legi nihajne ročice, ko le-ta predstavlja pogonski člen
mehanizma. Pogoj za mrtvo lego je kolinearnost ojnice in gnane ročice. V kolikor je v mrtvi legi
razdalja med točko A in točko O4 (glej sliko 2.9) enaka vsoti dolžin ojnice in gnane ročice,
govorimo o mrtvi legi brez prekrivanja, ko pa je razdalja med točko A in točko O4 enaka razliki
dolžin ojnice in gnane ročice, govorimo o mrtvi legi s prekrivanjem. Štirizgibne mehanizme
lahko na podlagi vrste mrtve lege razdelimo v štiri razrede. V nadaljevanju bo z L1 označena
nepremična ročica, L2 pogonska ročica, L3 ojnica in L4 gnana ročica.
Mehanizmi, omejeni z mrtvima legama brez prekrivanja
Pogoja za tovrstne mehanizme:
𝐿1 + 𝐿2 > 𝐿3 + 𝐿4 (2.5)
|𝐿1 − 𝐿2| ≥ |𝐿3 − 𝐿4| (2.6)
Pri takšni vrsti mehanizma leži središče loka delovnega območja na premici, ki povezuje vpetji
mehanizma s podlago (slika 2.10). Polovični kot delovnega območja dobimo s sledečo
formulo:
α/2 = acos(𝐿12+𝐿2
2−(𝐿3+𝐿4)2
2∗𝐿1∗𝐿2) (2.7)
V to skupino mehanizmov sodijo nihajno-nihajni mehanizmi, PG nihajno-rotirajoči mehanizmi
in PG dvojno-nihajni mehanizmi.
Mehanizmi, omejeni z mrtvo lego brez prekrivanja in z mrtvo lego s prekrivanjem
Pogoja za tovrstne mehanizme:
𝐿1 + 𝐿2 > 𝐿3 + 𝐿4 (2.8)
|𝐿1 − 𝐿2| < |𝐿3 − 𝐿4| (2.9)
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
12
Pri tej vrsti mehanizma gonilna nihajka zavzame izmenično mrtvo lego brez prekrivanja in
mrtvo lego s prekrivanjem (slika 2.9). Formula za kot delovnega območja se glasi:
α = acos (𝐿12+𝐿2
2−(𝐿3+𝐿4)2
2∗𝐿1∗𝐿2) − acos(
𝐿12+𝐿2
2−(𝐿3−𝐿4)2
2∗𝐿1∗𝐿2) (2.10)
V to skupino mehanizmov sodijo Grashofovi nihajno-rotirajoči mehanizmi in Grashofovi
dvojno-nihajni mehanizmi.
Slika 2.9: Kombinirani mrtvi legi
Mehanizmi, omejeni z mrtvima legama, ki se prekrivata
Pogoja za tovrstne mehanizme:
𝐿1 + 𝐿2 ≤ 𝐿3 + 𝐿4 (2.11)
|𝐿1 − 𝐿2| < |𝐿3 − 𝐿4| (2.12)
Enako kot pri mehanizmih z mrtvima legama, ki se ne prekrivata, leži središče loka delovnega
območja na premici, ki povezuje vpetji mehanizma s podlago (slika 2.10). S to razliko, da v tem
primeru delovno območje leži na zunanji strani navideznega lika, ki ga tvorita mrtvi legi.
Formula za polovični kot delovnega območja je sledeča:
α/2 = 180° − acos(𝐿12+𝐿2
2−(𝐿3−𝐿4)2
2∗𝐿1∗𝐿2) (2.13)
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
13
V to skupino mehanizmov sodijo nihajno-nihajni mehanizmi in PG dvojno-nihajni mehanizmi.
Slika 2.10: Mrtve lege
Mehanizmi s krožnim gibanjem
Pogoja za tovrstne mehanizme:
𝐿1 + 𝐿2 ≤ 𝐿3 + 𝐿4 (2.14)
|𝐿1 − 𝐿2| ≥ |𝐿3 − 𝐿4| (2.15)
V to skupino sodijo mehanizmi, katerih pogonska ročica zmore opraviti polni krog. Med te
mehanizme sodijo tako Grashofovi kot PG, rotirajoče-nihajni mehanizmi in dvojno-rotirajoči
mehanizmi.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
14
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
15
3 SINTEZA RAVNINSKEGA GIBANJA MEHANIZMA
3.1 Kinematična sinteza mehanizma
Kinematična sinteza se ukvarja s sistematičnimi postopki odkrivanja mehanizmov, ki
omogočajo izvedbo želenega gibanja. Pri konstruiranju mehanizmov izvedemo v prvem koraku
topološko sintezo. Izberemo vrsto mehanizma (zobniški, ročični, sledilni ...), za katerega
domnevamo, da najbolje izpolnjuje dane zahteve, mu določimo število in vrsto elementov,
prostostno stopnjo in medsebojno povezanost elementov. Sledi dimenzijska sinteza, kjer na
podlagi želenega gibanja določimo geometrijo elementov, začetno pozicijo, prestavno
razmerje ipd. Pri ročičnih mehanizmih razlikujemo tri vrste dimenzijske sinteze: funkcijsko
sintezo, sintezo poti in sintezo gibanja [6].
Funkcijska sinteza
Pri tej vrsti sinteze skušamo določiti izhodni kot (ali razdaljo v primeru prizmatične vezi)
v odvisnosti od premika pogonske ročice.
Sinteza poti
Pri sintezi poti želimo s pomočjo mehanizma slediti želeni krivulji. Točka, ki zarisuje
krivuljo, je pritrjena na ojnici, sama usmeritev točke pa v tem primeru ne igra vloge.
Tovrstno sintezo lahko kombiniramo tudi s funkcijsko, ko želimo doseči časovno
pogojene pozicije.
Sinteza gibanja
Za razliko od sinteze poti tokrat upoštevamo tudi orientacijo točke, vezane na ojnico.
V praksi določimo pozicije, za katere želimo, da jih mehanizem obhodi v svojem ciklu.
Pri štiri-ročičnem mehanizmu je možno z grafičnimi in analitičnimi postopki določiti
mehanizem za največ pet pozicij.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
16
Slika 3.1: Vrste kinematičnih sintez
3.2 Sinteza gibanja štiri-ročičnega mehanizma v primeru štirih pozicij
Z geometrijskega stališča je sinteza gibanja obravnavana kot problem, kjer moramo za vsako
pozicijo poiskati tako točko, da dobimo štiri enake trikotnike, hkrati pa morajo te točke ležati
na isti krožnici. Z geometrijskim postopkom, ki ga bom opisal v nadaljevanju, najprej poiščemo
središčno točko (točko, na kateri vpnemo mehanizem na podlago), na podlagi središčne točke
pa potem poiščemo krožno točko (točko vpetja med ročico in ojnico). Postopek ponovimo za
drugo dvojico točk, tako da dobimo pozicije štirih zglobov mehanizma. Na sliki 3.2 sem
središčno točko označil s Tc, krožno točko pa z oznakami T1, T2, T3 in T4.
Slika 3.2: Sinteza gibanja kot geometrijski problem
Geometrijski postopek, ki sem ga uporabil, je prvi opisal Ludwik Burmester v svoji knjigi o
kinematiki leta 1888 [7].
Čeprav so se postopki sinteze v letih po Burmesterju močno izpopolnili, ostaja nemški profesor
vodilna referenca, ko govorimo o tej vrsti sinteze. Pri samem postopku so t. i. poli premika
ključnega pomena, saj dobimo z njihovo pomočjo célo množico rešitev za središčne in krožne
točke.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
17
3.2.1 Pol premika
Slika 3.3: Pol premika in kot premika
Pol premika dobimo s presečiščem dveh simetral daljic, ki povezujeta sorodni točki dveh
pozicij. Kot premika s pozicije Si na Sj bomo označili s φij, pol premika pa označimo s Pij. Z
nasprotnim polom bomo označili dvojico polov, ki si ne delita nobene pozicije premika [8]. Pri
štirih pozicijah imamo tako na razpolago šest polov (P12, P13, P14, P23, P24, P34), iz katerih dobimo
tri pare nasprotnih polov (P12-P34, P13-P24, P14-P23). Za potrebe sinteze izberemo par nasprotnih
polov [9]. Izbrane štiri pole povežemo v nove dvojice, ki jih imenujemo operativne dvojice.
Podobno kot pri izbiri nasprotnih polov tudi v tem primeru ni pomembno, kateri par
operativnih dvojic izberemo (slika 3.4).
Slika 3.4: Iskanje operativne dvojice
Naslednji dve značilnosti polov premika sta ključni pri postopku lociranja središčnih in krožnih
točk [8].
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
18
Poljubni par operativnih dvojic oklepa s središčno točko (Ac) isti kot (α).
Slika 3.5: Kot s središčno točko
Po definiciji tako pol Pij kot središčna točka Ac ležita na isti simetrali daljice (Ai-Aj)
poljubnih dveh pozicij i-j. Daljici Ai-Pij in Ac-Pij oklepata polovični kot premika, φij/2.
Slika 3.6: Polovični kot premika
3.2.2 Postopek iskanja središčnih točk
Iz štirih pozicij poiščemo dva para nasprotnih polov (P13-P24, P14-P23), z daljicami povežemo
operativni dvojici in skozi njiju potegnemo simetrali. Na izbrani simetrali izberemo poljubno
točko (T1), odčitamo kot P13T1P14 (β) in zarišemo krog, ki seka pola in ima središče v točki T1.
Na drugi simetrali poiščemo tako točko, ki s točkama P23 in P24 oklepa kot β, in podobno kot v
prejšnjem koraku zarišemo nov krog. Presečišče krogov predstavlja pozicijo središčne točke,
saj s to točko oba para polov oklepata isti kot - β/2 [9].
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
19
Slika 3.7: Središčne točke
V zgornjem primeru smo dobili dve središčni točki AC1 in AC2. Če se s točko T1 sprehodimo po
simetrali, dobimo množico središčnih točk, ki tvorijo Burmestrovo krivuljo.
Slika 3.8: Burmestrova krivulja
3.2.3 Postopek iskanja krožnih točk
Vsaki središčni točki (AC) priredimo eno krožno točko (A), vezano na izbrano pozicijo Si. Točko
AC povežemo s polom, ki deli izbrano pozicijo (Pij), in narišemo premico, ki seka pol in oklepa
z daljico AC-Pij polovični kot premika pola Pij (φij/2). Isti postopek ponovimo z drugim polom,
ki deli isto pozicijo (pozicijo i). Presečišče premic nam pokaže lokacijo krožne točke A v odnosu
do pozicije Si [9].
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
20
Slika 3.9: Iskanje krožne točke
Ko vsem središčnim točkam priredimo krožno točko, dobimo še eno Burmestrovo krivuljo,
krivuljo krožnih točk. Na krivulji središčnih točk izberemo dve poljubni točki in njima prirejeni
krožni točki. Središčna točka predstavlja vpetje ročice na podlago, krožna točka pa zglob med
ročico in ojnico mehanizma.
Slika 3.10: Slika rešitev
3.3 Problemi sinteze
Z opisanim postopkom dobimo neskončno število rešitev. Ni pa nujno, da bo vsak na ta način
sintetizirani mehanizem v praksi zadostil pogojem delovanja. Poleg dinamičnih anomalij
(prevelik pospešek, neprimeren sunek, premajhen prenosni kot) vsebuje velik del
mehanizmov kinematične anomalije. Poljuben mehanizem, izbran iz množice rešitev, je sicer
zmožen zavzeti vse štiri položaje, dokler pa ne opravimo kinematične analize, iz izbrane rešitve
ne moremo sklepati o naravi gibanja med pozicijami.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
21
Poznamo tri vrste kinematičnih anomalij [6]:
Anomalija veje
Mehanizem doseže vse zadane položaje, samo če obhodi obe veji gibanja. V tem
primeru smo primorani dodati pomožni mehanizem, ki poskrbi za menjavo veje.
Anomalija števila
V tem primeru dobimo mehanizem, ki sicer obhodi vse pozicije, vendar ne v želenem
vrstnem redu.
Anomalija vezja
Pri anomaliji vezja moramo mehanizem razstaviti in sestaviti v alternativno obliko, če
želimo, da obhodi vse pozicije.
V praksi se izkaže, da pri tovrstni sintezi večina rešitev vsebuje eno od opisanih anomalij, kar
zahteva določeno intuicijo pri postavljanju samih pozicij v želji, da dobimo čim večji nabor
uporabnih rešitev.
3.4 Sinteza za primer treh in petih pozicij
V primeru treh pozicij ni predpisanega postopka za iskanje središčne točke, saj lahko pozicijo
poljubno izberemo kjerkoli v ravnini mehanizma. Ko izberemo primerno mesto za središčne
točke in določimo pole premika (tri v tem primeru), se poslužimo istega postopka iskanja
krožnih točk, kot smo to storili v primeru štirih pozicij [8].
Pri sintezi mehanizma za predpisanih pet pozicij uporabimo isti postopek kot za primer štirih
pozicij. Od predpisanih petih pozicij poljubno izberemo štiri ter izrišemo krivuljo središčnih
točk in krivuljo krožnih točk. Postopek ponovimo še za drugo kombinacijo štirih pozicij. Točka
vpetja mehanizma leži na presečišču krivulj središčnih točk, obenem pa mora njej prirejena
krožna točka ležati na presečišču krivulj krožnih točk [10]. Na ta način pridobljeni mehanizem
v praksi najverjetneje ne bo deloval, saj obstaja velika možnost anomalij.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
22
4 OSNOVE PROGRAMIRANJA V MSC ADAMS VIEW OKOLJU
4.1 Uvod
Adams je programsko okolje, namenjeno modeliranju in dinamični simulaciji sistemov teles,
povezanih s kinematičnimi vezmi. Uporabniku v osnovi omogoča gradnjo in simulacijo gibljivih
delov mehanskih sistemov, testiranje modela v realnih pogojih delovanja, dopolnitev modela
z realno geometrijo, fleksibilnimi deli in krmiljem ter lociranje ključnih parametrov sistema in
njihovo optimizacijo [11].
Slika 4.1: Adams View delovno okolje
Adams se med drugim ponaša z odprto arhitekturo programa, kar nam omogoča, da si
prilagodimo delovno okolje po svoji meri. Na voljo imamo štiri področja prilagoditve:
izdelavo funkcij;
avtomatizacijo dela z makroukazi;
implementacijo grafičnega vmesnika (meni vrstica, pogovorna okna);
izdelavo vtičnika.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
23
Prilagoditve lahko v celoti napišemo v urejevalniku besedila z uporabo ukaznega jezika Adams,
datoteke shranimo v ustreznem formatu in jih uvozimo v Adams. V samem programu pa
imamo na voljo tudi aplikacije, ki nam marsikdaj olajšajo tovrstno delo. V meniju Tools
najdemo programe za upravljanje s prikaznimi okni, menijsko vrstico, tračnim menijem in
makroukazi.
Prilagajanje Adams okolja velja za napredno snov, zato se od uporabnika - preden se loti te
tematike - pričakuje osnovno znanje Adamsa (poglavje, ki ga bomo sicer preskočili) in
podrobnejše poznavanje štirih orodij, Command Navigator, Command Window, Database
Navigator in Function Builder.
4.1.1 Command Navigator in Command Window
Command Navigator (Tools->Command Navigator) je orodje, ki nam omogoča neposredno
aktivacijo ukazov in vpogled v knjižnico ukazov. Za običajnega uporabnika poznavanje tega
orodja sicer ni potrebno, saj ima večina ukazov dodeljen namenski uporabniški vmesnik. Pri
napredni uporabi s pomočjo Command Navigatorja [11]:
dobimo dostop do ukazov, ki jim ni dodeljen namenski grafični vmesnik;
lahko direktno prikličemo posamezni ukaz;
s pomočjo hierarhije razberemo ukazni niz, potreben za aktivacijo ukaza;
imamo vpogled v hierarhijo lastnih ukazov.
Na sliki 4.2 vidimo primer aktivacije ukaza, ki nam ustvari nov marker. Adams nam v tem
primeru priredi generično pogovorno okno, v katerem naniza vse vhodne parametre, ki
pogojujejo izvedbo ukaza. V praksi obvelja, da ni potrebno definirati vseh parametrov, saj je
za večino predpisana privzeta vrednost. V našem primeru je obvezen parameter zgolj ime
markerja. Hierarhija ukaza pogojuje ime ukaznega niza. Iz našega primera lahko vidimo, da je
ukaz create shranjen pod mapo »marker«, zato se začetek ukaznega niza glasi marker create.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
24
Slika 4.2: Command Navigator
Poleg grafičnega vmesnika in Command Navigatorja lahko ukaz zaženemo tudi s pomočjo
orodja Command Window (View->Command Window). V njem vnašamo ukaze ročno,
upoštevaje sintakso ukaznega jezika Adams. Okno orodja je sestavljeno iz dveh polj. Spodnje
polje služi za vnos ukaza. V zgornjem polju okna pa orodje samo izpiše vneseni ukaz ali pa, v
primeru napačne sintakse, sporoči napako. Poleg ročno vpisanih ukazov se v zgornjem polju
izpišejo tudi drugi ukazi, od najbolj trivialnih (klik miške na delovno polje, povečava, premik),
do ukazov, izpeljanih s pomočjo uporabniškega vmesnika. Lastnost, ki je več kot dobrodošla,
ko želimo razbrati zaporedje ukazov določene operacije. Prenekatera operacija, izpeljana s
pomočjo grafičnega vmesnika, je dejansko sestavljena iz zaporedja več osnovnih ukazov. Za
modeliranje osnovne ročice je, denimo, potrebnih šest ukazov. Pri pisanju makroukazov je ta
lastnost zelo dobrodošla, saj lahko v Command Windowu razberemo sosledje ukazov,
potrebnih za določeno operacijo.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
25
Slika 4.3: Command Window
Pri ročnem vnašanju ukazov najprej zapišemo ukazni niz, nato pa definiramo vhodne
parametre. Ukaz je lahko zapisan v eni vrstici, lahko pa ga razbijemo na več vrstic.
marker create & ! ukazni niz
marker_name = MARKER_1 & ! parameter1 = vrednost1
location = 100,100,100 & ! parameter2 = vrednost2
orientation = 30,60,90 ! parameter3 = vrednost3
Poznamo šest vrst vrednosti (DATA TYPES), ki jih lahko vnašamo v parametre; cela števila
(INTEGER), realna števila (REAL), znakovne nize (STRING), objekte (OBJEKT), tabele (ARRAY) in
matrike (MATRIX). Sledi seznam nekaterih splošnih pravil sintakse ukaznega jezika Adams [12].
Ukaz lahko skrajšamo, v kolikor ostaja enolično definiran.
marker create marker_name=MARKER_1
mar cre mar=MARKER_1
ma cre mar=MARKER_1 ! napaka, ukaz ne bo izveden
prvi in drugi ukaz sta z vidika Adamsa dojeta kot isti ukazni niz, pri tretjem ukaznem
nizu pa bo program sam javil napako, saj ne bo vedel, ali začetek ukaza ma pomeni
marker, material, makro ali mail.
Velike začetnice ne igrajo vloge. To velja tako za vnašanje ukazov kot za vnašanje imen.
V prejšnjem primeru ukaza, namenjenega tvorbi novega markerja, bo le-ta sicer
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
26
shranjen pod imenom MARKER_1, vendar bo priklican, tudi ko ga označimo kot
marker_1.
Ukaz lahko razbijemo na več vrstic z uporabo & znaka. Ni pa mogoče razbiti ukaznega
niza, znakovnega niza ali izraza.
mar cre mar=marker_1 &
loc = 100,100,100 &
ori = 90,60,30
Za komentarje uporabimo klicaj (!).
mar cr m = marker_1 !prikazana je najbolj zgoščena verzija ukaza
Vrstni red parametrov ni pomemben.
4.1.2 Database Navigator
V prejšnjem poglavju smo videli, kako s pomočjo Command Navigatorja dobimo vpogled v
knjižnico ukazov in iz hierarhije razberemo ukazne nize. Z orodjem Database Navigator vrstici
(Tools-> Database Navigator) pa dobimo vpogled v knjižnice objektov in njihovo sled
(.model_1.ground.marker_1) [11].
V oknu lahko brskamo po objektih trenutnega modela, grafičnih vmesnikih, vtičnikih in lastnih
knjižnicah. V načinu prikazovanja lahko poleg možnosti brskanja (Browse) izberemo še opcije,
kot so preimenovanje, vnašanje komentarjev, prikaz topologije, prikazovanje informacij ipd.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
27
Slika 4.4: Database Navigator
Pri pisanju makroukazov in funkcij je modro shranjevati novooblikovane objekte v lastno
knjižnico. V primeru, da želimo shranjevati makroukaze in funkcije ločeno v lastnih knjižnicah,
podrejenih knjižnici z imenom Shramba, uporabimo sledeče ukaze:
library create library_name = .Shramba
library create library_name = funkcije
library create library_name = .Shramba.makro
Slika 4.5: Shranjene knjižnice
Pri prvem ukazu smo uporabili piko pred imenom knjižnice (.Shramba), zato je Adams ustvaril
knjižnico na vrhu hierarhije. V drugem primeru smo izpustili piko pred imenom, zato je Adams
shranil našo knjižnico v zadnjo ustvarjeno knjižnico. V zadnjem ukazu smo izpisali celotno sled,
saj smo knjižnico makro želeli shraniti neposredno pod knjižnico Shramba.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
28
Isto načelo velja tudi pri drugih opravilih: Adams jemlje za privzeto vrednost vsake skupine
objektov zadnji ustvarjeni/aktivirani objekt te družine.
Med drugim Database Navigator vsebuje tudi knjižnico grafičnih vmesnikov (GUI). V tej
knjižnici so shranjeni tisti Adamsovi vmesniki, ki jih lahko spreminjamo.
Slika 4.6: Sled do objektov menijske vrstice
Na sliki 4.6 je prikazana pot, ki nas vodi do menijske vrstice. Z ukaznim jezikom Adams jo lahko
poljubno preurejamo ali dopolnjujemo.
interface menu create &
menu_name=.gui.main.mmenu_menu.mbar_refresh.mojmeni &
label='Meni test'
V zgornjem primeru kode smo z ukaznim nizom interface menu create ustvarili dodaten meni
z imenom Meni test, ki je v objektni knjižnici shranjen kot mojmeni. V njem lahko nadalje
shranjujemo razne menijske objekte (gumbi, ločevala, pod-meniji ...), za katere želimo, da so
prikazani v Meni test meniju.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
29
4.1.3 Function Builder
Function Builder je vsestransko orodje (Tools->Function Builder), s katerim ustvarjamo in
spreminjamo različne funkcijske izraze in parametriziramo vrednosti različnih objektov
(markerji, sile, spremenljivke …).
Poznamo dva načina dela, v obeh se odpre rahlo prilagojeni Function Builder [13].
Run-time način
Vpisani izrazi bodo aktivirani samo v času simulacije. V tem načinu imamo dostop do
run-time funkcij.
Expression način
Vpisani izrazi in funkcije so namenjeni za postavitev modela. V simulaciji so izključeni,
so pa aktivni v procesu optimizacije in iskanja vzročnih parametrov modela (Design
Study). V tem načinu dela imamo dostop do design-time funkcij.
Slika 4.7: Function Builder
V nadaljevanju bomo obravnavali samo Expression način delovanja Function Builderja.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
30
Na tem mestu je treba opozoriti, da nam Adams samodejno priredi pravi način delovanja,
pogojen z naravo objekta, ki ga hočemo parametrizirati. Lahko pa se zgodi, da se znajdemo v
napačnem načinu in v tem primeru se funkcijski izraz ne aktivira.
Iz naslednjega primera je razvidno, da imamo možnost parametrizacije gibanja tudi v načinu
Expression. V kolikor ga izberemo, se model v simulaciji pač ne bo premikal.
Slika 4.8: Primer napačne izbire Function Builder-ja
4.1.3.1 Operandi
Elemente funkcijskega niza ločimo na operande in operatorje. Operandi so lahko neposredno
vnesene vrednosti ali pa posredno dobljene vrednosti iz simbolov, objektov in funkcij. Delimo
jih na konstante, simbolične konstante, objektne vrednosti in funkcije [13].
Konstantne:
Pod konstante štejemo vse vrednosti (DATA TYPES), ki smo jih omenili v poglavju 1.1.1.
KONSTANTA PRIMER
Cela števila (INTEGER) 4
Realna števila (REAL) 4.0
Znakovni nizi (STRING) "asd2"
Objekti (OBJECT) .model_1.marker_2
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
31
Matrice (tabele niza) {"x","y"}
Matrice (tabele realnih št.) {[22,1],[4,0]}
Simbolične konstante:
KONSTANTA VREDNOST
pi 3,1415
TRUE/YES/ON 1
FALSE/NO/OFF 0
RTOD 180/π
DTOR π/180
NONE nična vrednost
NONE je zanimiv operand. Uporabimo ga, ko moramo izpolniti določen parameter, a ga hkrati
nočemo definirati, ali pa z njim spreminjamo vrsto vrednosti drugih operandov, saj se vrednost
NONE operanda prilagaja naravi operatorja. Vsakič, ko Adams naleti na nekompatibilne
elemente, jih skuša združiti, če je le to mogoče.
10 + NONE = 10 NONE v tem primeru prevzame vrednost realnega števila
NONE//2 = "2" NONE nastopa kot prazen niz "". Operand 2 se iz
numerične vrednost spremeni v znakovni niz
NONE + "10" = 10 NONE kot numerična vrednost
Vrednosti lahko pridobimo tudi od različnih objektov, ki jih uporabimo v funkcijskem nizu.
Vsak objekt vsebuje vrednosti, ki ga definirajo (ime, masa, lokacija, odvisnosti …). V ta namen
je v Function Builderju vgrajen iskalnik objektnih podatkov (Data Dictionary), ki nam pomaga
pri iskanju zapisa določene vrednosti, vezane na izbrani objekt.
Na sliki 4.9 imamo primer, kako lahko s pomočjo iskalnika najdemo zapis, ki predstavlja
koordinate markerja marker_2. V kolikor v delovnem modelu obstaja samo en marker z
imenom marker_2, lahko zapis v delovnem oknu skrajšamo (enak princip velja pri pisanju
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
32
ukazov). Je pa res, da v tem primeru Adams potrebuje več časa, da med vsemi objekti v svoji
knjižnici najde prav objekt z imenom marker_2.
marker_2.loc ! skrajšan in bolj priročen zapis
Slika 4.9 Klicanje vrednosti objektov
Vlogo operanda imajo tudi različne v Adams vgrajene funkcije. V načinu Expression nam tako
ponuja več kot dvesto funkcij design-time, razdeljenih v sedem kategorij [13]:
matematične funkcije;
orientacija/lokacija;
modeliranje;
matrice, niz;
znakovni nizi;
podatkovna baza;
mešano.
Za vsako funkcijo obstaja določena oblika vnosa in vrsta vrednosti, ki jo je treba vnesti. Če na
seznamu označimo funkcijo, se nam ta informacija izpiše v levem kotu spodaj. Za podrobnejši
opis funkcije pa si pomagamo s priročnikom Function Builder.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
33
4.1.3.2 Operatorji
Z operatorji določamo vrsta operacij, ki jih želimo izvesti z operandi. Operatorji se ne
razlikujejo kaj dosti od tistih, ki jih uporabljamo v drugih programih (Excel, recimo). Nekaj izjem
sicer obstaja, na primer znak za eksponent (**), izraz za logični operaciji IN (&&) in ALI (II) ter
znak za združevanje znakovnih nizov in tabel (//).
Do sedaj smo spoznali nekatera osnovna orodja, s katerimi smo se seznanili s hierarhično
lestvico ukazov in objektov, z različnimi načini aktivacije ukazov, uporabo funkcij in s pisanjem
funkcijskih nizov. V nadaljevanju bom opisal štiri sklope Adamsovih prilagoditev. Začel bom z
najbolj preprostim, in sicer z zapisi funkcij.
4.2 Pisanje funkcij
Najbolj elementarna prilagoditev, ki jo lahko izvedemo v Adamsu, je pisanje lastnih funkcij.
Hkrati pa ta korak predstavlja osnovo, na kateri kasneje gradimo zahtevnejše makroukaze. Za
pisanje funkcij se odločimo v primeru, ko nam same Adamsove funkcije ne zadoščajo več ali
pa želimo poenostaviti upravljanje predolgih funkcijskih izrazov. Format ukaza je sledeč [12]:
function create ukazni niz
function_name= ime funkcije in knjižnice, v kateri bo shranjena
text_of_expression= zapis funkcijskega izraza
argument_names= neodvisne spremenljivke, ki bodo uporabljene v izrazu
type= vrsta izhodne vrednosti
comments= komentar, ki se izpiše v Function Builderju
category= pod katero kategorijo želimo, da se funkcija shrani (User, String, Math,
Modelling, Loc_ori, Matrix_array, database_object, Misc)
Od naštetih vhodnih parametrov so samo prvi trije obvezni. V nadaljevanju imamo funkcijo, ki
nam na podlagi dveh lokacij izračuna tretjo, ki leži na sredini razdalje med prvo in drugo
lokacijo. S polnim zapisom imena smo poleg samega imena določili še knjižnico, v kateri bo
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
34
funkcija shranjena. Funkcija je sicer enostavna, sem jo pa dejansko uporabil v kompleksnejši
funkciji, jo poenostavil in tako naredil bolj pregledno.
function create function=.Shramba.funkcije.MIDDLEP &
argument_names='L1','L2' &
text_of_expression='(L1+L2)/2' &
comments='MIDDLEP(ARRAY,ARRAY)' &
category=loc_ori
Za vhodna parametra funkcije MIDDLEP lahko neposredno vstavimo tabelo s tremi
numeričnimi vrednostmi ali pa dobimo vrednost s pomočjo objekta. Podobno prožnost
vnašanja parametrov zasledimo tudi pri drugih funkcijah.
middlep({100,200,100},{150,200,300})
middlep(marker_1.loc,marker_2.loc)
4.3 Makroukazi
V Adamsu uporabljamo makroukaze v različne namene. Lahko avtomatiziramo rutinske
postopke, ustvarjamo celotne modele z enim ukazom ali pa različne variacije istega
mehanizma ipd. Makro je lahko zgolj niz ukazov, lahko pa ga parametriziramo in uporabimo
za kompleksnejše naloge. V tem poglavju bom na začetku predstavil postopek uvažanja in
testiranja makroukaza, zatem pa še opisal osnovne gradnike, ki sestavljajo algoritem. V
vsakem kompleksnejšem makroukazu določimo vhodne parametre, uporabimo logične zanke
ter operiramo s spremenljivkami in skupinami.
4.3.1 Zapis in aktivacija
Za pisanje makroukazov imamo v Adamsu na voljo orodje Create/View Macro (Tools->Macro-
>Edit->New), vendar se pri daljših zapisih izkaže za sila nepraktičnega, zato sam uporabljam
urejevalnik besedila Notepad++. Ko smo z napisanim makroukazom zadovoljni, ga shranimo
kot ukazno datoteko (*.cmd) in uvozimo v Adams s pomočjo grafičnega vmesnika Macro Read
(Tools->Macro->Read).
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
35
Slika 4.10: Uvažanje makroukaza
Ko je v Adams vnesen makro, ga aktiviramo s Command Navigatorjem in dobimo generično
pogovorno okno. Posebno pri testiranju novih makroukazov je vmesnik Macro Read zelo
priročen, saj je dovolj, da pritisnemo na gumb Apply, in že je koda makroukaza osvežena. To
načelo pa ne velja za pogovorna okna. Če v makroukazu spremenimo kodo vhodnih
parametrov, želimo pa, da se nam v pogovornem oknu osvežijo spremembe, moramo v
Adamsu sami zbrisati grafični vmesnik (Tools->Dialog Box->Delete) in ga ponovno aktivirati
v Command Navigatorju.
4.3.2 Parametri
Vhodni parametri so prvo, kar zapišemo v makroukazu, in jim s kvalifikatorji (T, c, D) določimo
lastnosti.
!$Marker_A1: T=marker: c=1
!$Marker_B2: T=marker: c=1
!$faktor: T=real: c=1: D=10
!$spread_point: T=real: c=1: D=0.1
!$Mechanism_synthesis: T=list(yes,no):D=yes
!$Center_curve_color: T=list(Violet,Peach,Red,Silver,Yellow):
D=Violet
Na podlagi tega zapisa nam Command Navigator ustvari grafični vmesnik, prikazan na sliki
4.11.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
36
Slika 4.11: Primer pogovornega okna
Z znakom $ označimo, da gre za vhodni parameter, sledijo ime parametra in kvalifikatorji.
Klicaj (!) sicer služi pisanju komentarjev, v tem primeru pa nam omogoči, da določimo
kvalifikatorje vhodnim parametrom.
S kvalifikatorji določimo značilnosti vhodnega parametra, delimo pa jih v štiri sklope [11]:
Type (vrsta)
Poznamo osnovne vrste parametra (real, integer, location, orientation, string,
function, list /str1, str2 …/, file) in podatkovne vrste (marker, new_marker ...).
Range (razpon)
Razpon določi maksimalno in/ali minimalno mejo parametra.
Count (števnik)
S števnikom določimo število parametrov, ki jih moramo vnesti.
Defaults (privzeto)
S privzeto vrednostjo omogočimo, da uporabniku ni treba določiti želenega parametra.
S kvalifikatorji omejimo izbiro in dobimo nadzor nad pravilnim vnosom parametrov. Če je,
denimo, parameter definiran kot celo število (integer), nam Adams ne dovoli izvedbe ukaza,
če je v izbirno polje parametra vpisana druga vrsta vrednosti.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
37
4.3.3 Pogojni stavki in zanke
Ukazni jezik Adams vsebuje tudi ukaze za pisanje pogojnih stavkov in zank [12]:
IF/ELSEIF/ELSE/END
WHILE/END
FOR/END
BREAK, CONTINUE, RETURN
Namen in način uporabe teh ukazov je enak kot v drugih programskih okoljih, se pa seveda
sintaksa malenkost razlikuje.
if condition=(DB_EXISTS ("MAR1"))
marker modify marker=mar1 location=200,0,0
else
marker create marker=mar1 location=200,0,0
end
V primeru kode z zgornjega primera smo uporabili funkcijo DB_EXISTS, ki nam vrne vrednost
1, v kolikor objekt z iskanim imenom obstaja. V tem primeru nam zgornja zanka spremeni
vrednosti iskanega markerja, v nasprotnem primeru pa ustvari novi marker z imenom mar1.
For variable_name=tempreal start_value=1 increment_value=2
end_value=10
marker create marker_name=(eval("MAR" // RTOI(tempreal))) &
location=(eval(tempreal-1)), 0, 0
end
Pri zanki FOR določimo spremenljivko (variable_name), začetno vrednost (start_value), korak
(increment_value) in končno vrednost (end_value). V zgornjem primeru dobimo pet markerjev
(MAR1, MAR2 ...) s spreminjajočo lokacijo po osi x. V drugi vrstici je ime markerja sestavljeno
iz niza 'MAR' in spremenljivke tempreal, ki je s pomočjo funkcije RTOI spremenjena v celo
število. Ker smo uporabili operator // dobimo izhodno vrednost v obliki niza. EVAL funkcija
spremeni spremenljivko v konstanto. Če za lokacijo ne bi uporabili funkcije EVAL, bi vsi
markerji delili skupno lokacijo (zadnjo preračunano lokacijo zanke FOR).
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
38
variable create variable_name=ip integer_value=0
while condition=(ip < 5)
variable modify variable_name=ip integer_value=(eval(ip+1))
if cond=(ip == 3)
continue
end
marker create marker_name=(eval("MAR"//ip)) &
location=(eval(ip-1)),0,0
end
variable delete variable_name=ip
Za razliko od zanke FOR je treba pri zanki WHILE ustvariti spremenljivko (ip v zgornjem
primeru) pred začetkom zanke in jo po koncu zanke tudi izbrisati. V tem primeru dobimo štiri
markerje (MAR1, MAR2, MAR4, MAR5). V zanki imamo ugnezdeno zanko CONTINUE, ki nam
preskoči tretji korak. V primeru, da bi namesto CONTINUE uporabili zanko BREAK, bi se celotna
zanka prekinila in nas pustila samo z dvema novima markerjema.
4.3.4 Spremenljivke
Osnovni zapis ukaza se glasi [12]:
variable create variable_name=var1 integer_value=5,4,2
Pri vpisovanju vrednosti (value) izbiramo med sledečimi parametri: integer_value, real_value,
object_value, string_value. V sam parameter lahko vpišemo več elementov istega tipa, ni pa
možno dodajati novih elementov v že obstoječo spremenljivko. Adams samodejno shrani
spremenljivko v delovnem modelu (tj. modelu, ki je trenutno odprt). Spremenljivke pa lahko
shranimo tudi v drugih knjižnicah. Predpostavimo, da je naslednji ukaz bil izveden z
makroukazom z imenom .Shramba.makro.MAKRO_PRIKAZ:
var cre var=$_self.model
object=(eval(db_default(.system_defaults,'model')))
Zapis $_self predstavlja makroukaz (.Shramba.makro.MAKRO_PRIKAZ. v našem primeru). To
pomeni, da se je spremenljivka model shranila neposredno pod objektom MAKRO_PRIKAZ. V
Command Navigatorju je to lepo razvidno:
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
39
Slika 4.12: Shramba $_self spremenljivke
Začasne spremenljivke, ki jih na koncu kode preprosto zbrišemo z ukazom (var del var=
$_self.*) v praksi shranjujemo pod $_self..
Zgoraj predstavljena spremenljivka model je tiste vrste univerzalna spremenljivka, ki jo sam
vpišem v prav vsak makroukaz. V izrazu uporabljena funkcija DB_DEFAULT poišče ime
trenutnega modela, v katerem delamo, kar nam omogoči bolj generično ustvarjanje novih
elementov. V spodnjem makroukazu (MAKRO_2) je uporaba te spremenljivke prikazana bolj
nazorno. V tem primeru nam zapisana koda omogoča, da izbranim markerjem zamenjamo
nadrejeni element.
!$marker: t=marker: c=1,0
!$novi_nadrejeni: t=part
var cre var=$_self.model
object=(eval(db_default(.system_defaults,'model')))
for variable=zanka object=$marker type=marker
mar modify mar=(zanka) &
new_mar name= &
.(eval($_self.model).($novi_nadrejeni.name).(zanka.object_value
.name)
end
var del var=$_self.* !zbrišemo vse $_self. Spremenljivke
V prvi vhodni parameter vpišemo obstoječe markerje. Kvalifikator Count (c=1,0) določi, da
lahko vstavimo enega ali več elementov. V drugi parameter vstavimo nov nadrejeni element.
Ko vnesemo potrebne parametre, se nam zanka FOR sprehodi skozi vse elemente
spremenljivke $marker, jim dodeli novo ime in posledično nov nadrejeni element. Novo ime
je sestavljeno iz treh členov:
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
40
$_self.model - predstavlja trenutni model (.model_1);
$novi_nadrejeni.name – s končnico .name smo dobili ime objekta (.part_3);
zanka.object_value.name – tako kot smo v zgornjem členu dobili zapis imena objekta,
dobimo v tem primeru oznako spremenljivke (marker_5).
Če sestavimo člene z danimi primeri, dobimo zapis = .model_1.part_3.marker_5.
4.3.5 Skupine
Kot smo videli, v spremenljivkah ne gre dodajati ali odstranjevati elementov. V ta namen
uporabimo skupino (Groups). Enako kot velja za spremenljivke, Adams skupino samodejno
shrani pod delovni model, prikaže pa jo v drevesu modela pod zavihkom Groups. Spodnji
primeri prikažejo, kako se skupina ustvari, kako prikličemo elemente v skupini ter kako
dodajamo in odstranjujemo elemente [12].
group create & !izdelava nove skupine
group_name=skupina1 &
objects in group= marker_1,marker_2,marker_3,marker_4
model_1.skupina1.objects !izpiše nam vse elemente skupine
model_1.skupina1.objects[2] !izpiše nam drugi element, marker_2
(model_1.skupina1.objects)[1:3] !izpiše prve tri elemente skupine
group objects add & !skupini dodamo elemente
group=skupina1 &
objects=marker_7
var cre var=st_vrstic & ! spremenljivka, ki vsebuje
int=(rows(skupina1.objects)) ! število vrstic skupine
group objects remove & ! skupini odstranimo elemente
group=skupina1 &
objects=(skupina1.objects)[(st_vrstic-2):st_vrstic]
! odstrani zadnje tri elemente
Za klicanje izbranih elementov iz tabel in matric se oglati oklepaji uporabljajo na isti način.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
41
4.4 Dialog Box Builder
Pri preprostih makroukazih nam povsem zadošča generično ustvarjeno pogovorno okno.
Makroukaz iz prejšnjega poglavja smo shranili pod isto knjižnico kot MAKRO_PRIKAZ. Ukazni
niz, ki smo mu ga določili, se glasi Shramba macro_2. Ko ga v Command Navigatorju
aktiviramo, Adams ustvari pogovorno okno in ga samodejno shrani v .gui knjižnico
(.gui.shr_macro_2 v našem primeru). Če v Database Navigatorju označimo opcijo No sort v
levem kotu spodaj, se nam grafični vmesnik pokaže na koncu seznama .gui knjižnice.
Slika 4.13 Podrejeni objekti pogovornega okna
S slike 4.13 je razvidno, da je naše pogovorno okno sestavljeno iz sedmih podrejenih objektov,
treh gumbov (Ok, Apply in Cancel), dveh besedilnih polj (f_marker, f_novi_nadrejeni) in dveh
oznak (l_marker, l_novi_nadrejeni).
Lastna pogovorna okna začnemo graditi, ko želimo doseči večjo preglednost vhodnih
parametrov, bolj sofisticiran izgled in ko želimo uvesti dodatne funkcionalnosti, ki jih v samem
makroukazu ne moremo izvesti.
Lahko sicer začnemo graditi pogovorno okno od začetka, vendar je preprosteje in bolj
praktično, če spremenimo že izdelano okno svojega makroukaza in si ga prilagodimo po svoji
meri. V prvem koraku premestimo knjižnico, pod katero je naše generično okno shranjeno.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
42
Korak sicer ni nujen, omogoča pa boljšo preglednost nad lastnimi objekti in možnost, da bo
objekt deloval tudi v novejših različicah Adamsa. V menijski vrstici izberemo Rename (Edit-
>Rename) ter vnesemo v pogovorno okno novo ime in knjižnico, v kateri bo pogovorno okno
shranjeno.
Slika 4.14 Sprememba knjižnice
V naslednjem koraku izberemo ukaz za spreminjanje pogovornih oken (Tools->Dialog Box-
>Modify). Izberemo svoj grafični vmesnik (okno_macro_2). Odpre se nam Dialog Box Builder.
V njem upravljamo lastnosti vmesniških objektov (interface objects).
Slika 4.15 Dialog Box Builder
Polje Aktivni objekt sporoča, s katerim objektom trenutno operiramo: z glavnim (pogovorno
okno) ali njemu podrejenimi objekti (gumbi, meniji, polji …). Podrejene objekte delimo na
operativne objekte (vse tiste, ki operirajo ali vsebujejo določene vrednosti) in pasivne objekte
(služijo estetskemu izgledu pogovornega okna in podajanju informacij).
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
43
Izbranemu objektu določimo dimenzije, ime, položaj in ukazni niz, ki ga sprožimo neposredno
(s pritiskom gumba, če operiramo s to vrsto objekta) ali posredno (s pomočjo drugega
vmesniškega objekta).
Na sliki 4.15 imamo primer ukaza, ki je vgrajen neposredno v pogovorno okno in ga sprožimo
z gumbom OK/Apply. V samem ukazu smo navedli samo, v katere objekte vstavljamo
parametre makroukaza:
Shramba macro_2 ! ukazni niz makrota
'marker = $f_marker' ! paramter 1
'novi_nadrejeni = $f_novi_nadrejeni' ! parameter 2
Z izrazom $f_marker prikličemo vrednost objekta (konkretno ime markerja, ki smo ga vnesli v
polje). Na ta način lahko v različnih objektih manipuliramo z vrednostmi drugih objektov
pogovornega okna. V primeru glavnega objekta (pogovorno okno) lahko napišemo ukazne nize
za tri vrste sprožilcev:
prikaz okna (Start)
Ukaz se sproži, ko odpremo pogovorno okno. V tej situaciji po navadi določimo
spremenljivke, ki nam bodo služile v kasnejših ukaznih nizih.
aktivacija okna (Execution)
Ukaz se sproži posredno s pomočjo gumba OK/Apply. Ukaz je namenjen aktivaciji
makroukaza.
zaprtje okna (Finish)
To polje izkoristimo za brisanje delovnih spremenljivk ali pa v njem sprožimo novo
pogovorno okno.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
44
Slika 4.16: Sestavni elementi pogovornega okna
Ko smo s svojim izdelkom zadovoljni, ga izvozimo iz programa (Dialog Box->Export->Command
File) v obliki ukazne datoteke, shranjene v mapi, kjer je shranjen tudi trenutni delovni model.
4.5 Menijska vrstica
Menijsko vrstico si prilagodimo, ko želimo bolj neposreden dostop do svojih makroukazov in
pogovornih oken. V tem primeru ustvarimo gumbe za priklic, ki jih shranimo v že obstoječe ali
svoje lastne menije.
V uvodnem poglavju smo prikazali sled v Database Navigatorju, ki vodi do objektov menijske
vrstice, in preprost ukaz, ki doda nov meni v menijsko vrstico. Ponovimo: s sledečim ukazom
ustvarimo nov objekt mojmenu, ki je prikazan v menijski vrstici pod imenom Meni test.
interface menu create &
menu_name=.gui.main.mmenu_menu.mbar_refresh.mojmeni &
label='Meni test'
Ko smo si ustvarili nov meni, mu vstavimo aktivacijska gumba za naša makroukaza.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
45
interface push_button create &
push_button_name=.gui.main.mmenu_menu.mbar_refresh.mojmeni.macro_1 &
label='MACRO PRIKAZ' &
commands='interface command_builder command_prefix=\'shramba
macro_prikaz\''
interface separator create & !s tem ukazom ustvarimo ločevalo
separator_name=.gui.main.mmenu_menu.mbar_refresh.mojmeni.sep1
interface push_button create &
push_button_name=.gui.main.mmenu_menu.mbar_refresh.mojmeni.macro_2 &
label='MACRO 2' &
commands='interface command_builder command_prefix=\'shramba
macro_2\''
Iz ukaznih nizov razberemo, da so bili vsi objekti shranjeni neposredno pod menijski objekt
mojmeni. Vsakemu gumbu je prirejen še ukazni niz, ki prikliče ustrezni makroukaz.
Slika 4.17: Novi meni
4.6 Izdelava vtičnika
Do zdaj smo spoznali, kako lahko ustvarimo štiri vrste ukaznih datotek: datoteko s shranjenimi
funkcijami, datoteke z makroukazi, datoteke s pogovornimi okni in datoteko z menijskimi
bližnjicami. Vendar je uvažanje posameznih datotek ob začetku vsakega novega projekta
zamudno, zato lahko ta proces poenostavimo. V nadaljevanju bom predstavil dva načina
tovrstne poenostavitve, in sicer z datoteko Build in vtičnikom. Datoteke je mogoče uvažati tudi
s pomočjo zagonskih datotek, vendar bom ta postopek preskočil.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
46
4.6.1 Build.cmd
Build datoteka je ukazna datoteka, v kateri so zapisani ukazi, ki prikličejo druge ukazne
datoteke (z izjemo ukaznega niza za ustvarjanje knjižnic, ki ga napišemo neposredno v
datoteko Build). V ta namen uporabimo ukazna niza macro read in file command read.
var set var=dir & !spremenljivka, ki vsebuje datotečno pot
string= C:\Users\Jaka\Desktop\Adams\build_files
!ustvarjanje potrebnih knjižic
library create library_name=.shramba
library create library_name=.shramba.makro
!nalaganje novih funkcij
file command read file=(eval(dir)//'/funkcije.cmd')
!nalaganje makro datoteke
macro read file=(eval(dir)//'/macro_prikaz.cmd') &
macro=.shramba.makro.macro_prikaz & !lokacija knjižnice v kateri bo
shranjen
user='shramba macro_prikaz' !ukazni niz za aktivacijo makroukaza
!nalaganje pogovornega okna
file command read file =(eval(dir)//'/okno_macro_2.cmd')
!nalaganje meni popravka
file command read file=(eval(dir)//'/meni_test.cmd')
var del var = dir !brisanje spremenljivke
Ko smo spisali datoteko Build, jo uvozimo na enak način kot ostale ukazne datoteke, vendar s
to razliko, da ukazna datoteka v tem primeru izvede celotno posodobitev Adamsa.
4.6.2 Vtičnik
Vtičnik začnemo graditi, ko želimo svoje prilagoditve deliti z drugimi uporabniki, saj so vse
posodobitve zbrane v eni datoteki in ni treba prenašati celotnega sklopa ukaznih datotek z
enega računalnika na drugega. Pa tudi zagon posodobitev je preprostejši kot zagon z datoteko
Build.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
47
Na začetku ustvarimo dva dodatna makroukaza z imeni Load in Unload in ju shranimo v svoji
knjižnici z makroukazi. Ko se vtičnik naloži, Adams naloži shranjeno knjižnico in poišče Load
makro ter ga izvrši. V njem zapišemo ukazne nize za izdelavo menijske vrstice. Podobno je z
Unload makroukazom. Ko vtičnik izključimo, Adams zbriše knjižnico in aktivira Unload ukaz. V
njem shranimo vse ukazne nize, ki zbrišejo menijsko vrstico in funkcije, ki so bile dodane s
pomočjo vtičnika.
Nato poiščemo ukazni niz File Binary Write v Command Navigatorju in ga aktiviramo. V njem
izberemo knjižnico z makroukazi, ki jo Adams nato izvozi v binarno datoteko.
Slika 4.18: Zapis v binarno obliko
V naslednjem koraku ustvarimo datoteko v formatu XML z istim imenom, kot ga ima binarna
datoteka (v našem primeru synth_plg.xml – synth.bin). Vanjo z uporabo značk zapišemo
splošne podatke (avtorstvo, ime vtičnika, razne komentarje ipd.), Adamsu pa hkrati
sporočimo, naj prepozna binarno datoteko kot vtičnik.
<Plugin>
<Name>Synth</Name>
<Description>
<![CDATA[Testni vtičnik za prakticno demonstracijo.]]>
</Description>
<Version>Adams 2013.2</Version>
<Author>Zoran Posinkovic</Author>
<Type>Public</Type>
<LicenseFeature></LicenseFeature>
<ValidWith>aview:acar</ValidWith>
<NotValidWith>ppt</NotValidWith>
</Plugin>
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
48
Ko smo ustvarili obe datoteki, ju shranimo v mapo, v kateri Adams shranjuje ostale vtičnike
(C:\MSC.Software\Adams_x64\2013_2\win64 v primeru verzije Adams 2013.2).
Slika 4.19: Spremenljivka okolja
Datoteki pa lahko shranimo v poljubno datoteko in v Oknih ustvarimo novo spremenljivko
okolja. Na kontrolni plošči (Control panel) izberemo sistemske nastavitve (System), na levi
strani okna aktiviramo napredne nastavitve (Advanced System Settings), zatem pa izberemo
opcijo spremenljivka okolja (system variable). Pod to opcijo ustvarimo novo uporabniško
spremenljivko, v katero vnesemo ime mdi_user_plugin_dir in ustrezno pot do mape.
Ko smo namestili datoteki v ustrezno mapo, odpremo Adams in vključimo svoj vtičnik (Tools-
>Plugin Manager).
Slika 4.20: Plug-in Manager
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
49
5 LINKAGE DESIGN VTIČNIK, NAVODILA ZA UPORABO
Za potrebe programa za sintezo štirizgibnega mehanizma na podlagi štirih pozicij (v
nadaljevanju program za sintezo) sem napisal deset funkcij, tri makroukaze (eden glavni in dva
pomožna) in zgradil dva grafična vmesnika. Program za sintezo deluje tako, da uporabnik
izpolni vhodne parametre za štiri položaje in definira lastnosti krivulj. Na podlagi podanih
parametrov program izriše Burmestrovi krivulji in mehanizem, ter sproži novo pogovorno
okno. Z novim oknom lahko uporabnik poljubno premika mehanizem vzdolž krivulje središčnih
točk in po potrebi sproži simulacijo gibanja; tako izvede vizualni pregled kinematike
mehanizma.
5.1 Aktivacija vtičnika
Celoten paket skript je zapakiran v vtičnik Linkage design. Ko vtičnik namestimo in ga v Adamsu
aktiviramo, se pojavi dodaten meni v menijski vrstici (Linker). V tem meniju najdemo različne
skripte za sintezo mehanizmov, med drugim tudi program za sintezo Synthesis for 4 positions.
Slika 5.1: Primer štirih pozicij
Na začetku procesa določimo štiri pozicije. To storimo tako, da ustvarimo štiri enako dolge
člene (Link), vezane na podlago (Ground). Vezava na podlago nam omogoči, da med simulacijo
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
50
členi ostanejo na svojem mestu. Prav tako moramo biti pozorni, da so členi definirani zgolj na
x-y ravnini. V kolikor ima vsaj en marker člena koordinato z različno od nič, program za sintezo
ne bo deloval. Pri vstavljanju parametrov vrstni red pozicij ni pomemben. Glede na to, da
program za sintezo operira s poli P13, P14, P23 in P24, poziciji 3 ali 4 ne smeta biti vzporedni s
pozicijo 1 ali 2.
Na sliki 5.1 je primer pozicij, s katerimi bomo preizkusili sintezni program. Na levi strani slike
so pozicije označene z imeni markerjev, na desni strani pa so točke pozicij označene z imeni
vhodnih parametrov. Sosledje pozicij ne vpliva na rezultat sinteze.
5.2 Pogovorno okno Four positions synthesis
Ko določimo pozicije, vstopimo v meni Linker in odpremo program Synthesis for 4 positions.
Odpre se nam pogovorno okno Four positions synthesis, sestavljeno iz dveh zavihkov, Basic
(osnovno) in Advanced (napredno).
Slika 5.2: Four position synthesis
V zavihku Basic so nanizani vhodni parametri pozicij. Vanje vnesemo markerje začetnih točk
(A1, A2, A3 A4) in en marker za končno točko prve pozicije (B1).
V zavihku Advanced imamo tri polja, ločena z ločevaloma. V prvem polju izberemo barvo
krivulj. V drugem polju določimo gostoto točk (Points density) in dolžino krivulje središčnih
točk (Faktor). Med drugim lahko v tem polju izberemo tudi opcijo, da nam sintezni program
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
51
izriše samó krivulji, brez mehanizma. To opcijo izberemo v primeru sinteze mehanizma za pet
pozicij, saj lahko izrišemo več krivulj in nato poiščemo njihovo presečišče. V tretjem polju
imamo gumb (Reset curves no.), ki ga aktiviramo z dvojnim klikom miške. S tem gumbom
izbrišemo Burmestrovi krivulji. Iskanje mehanizma za predpisane štiri pozicije z analitičnim
postopkom je iterativen proces. V kolikor ne najdemo zadovoljive rešitve za predpisane
pozicije, zbrišemo krivulje, spremenimo pozicije in ponovimo postopek. Ko smo z nastavitvami
zadovoljni, stisnemo gumb Ok. Sintezni program nam izriše krivulji, sestavi štirizglobni
mehanizem in odpre novo pogovorno okno.
Slika 5.3: Sinteza mehanizma in krivulj
5.3 Pogovorno okno FB Controller
S pomočjo okna FB Controller preizkušamo kinematiko različnih mehanizmov, ki jih dobimo s
premikanjem vpetij vzdolž krivulje. S simulacijo mehanizma poleg vizualne analize preverimo
tudi prisotnost kinematičnih anomalij. V praksi se izkaže, da večina rešitev vsebuje vsaj eno
izmed treh anomalij, poseben izziv pa predstavlja iskanje prave kombinacije vpetij, ki nam
postreže s primerno rešitvijo. To okno se deli na šest polj.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
52
Slika 5.4: FB Controller
V prvem polju upravljamo simulacijo in gibanje mehanizma. Oznaki M1 ali M2 pomenita, da je
pogon na zglobu, ki povezuje drugo ali četrto ročico s podlago. Z gumbom Simulation
poženemo simulacijo, z gumbom Sim reset pa jo prekinemo. Izbirna gumba C1 in C2 nam
omogočata, da preklopimo med dvema vezjema mehanizma. Z aktivacijo preklopnega gumba
Toggle on dobimo gibanje, ki obhodi obe veji mehanizma.
V drugem polju imamo gumba (Previous point(a) in Next point(d)), s katerima premikamo
ročico mehanizma vzdolž krivulje središčnih točk. Med dvema gumboma imamo okno, v
katerem določimo korak premika. Skripta, ki jo sprožimo s pritiskom na gumb, ne poskrbi zgolj
za premik ročice, temveč vsakič znova preračuna vrsto mehanizma na podlagi Grashofovega
kriterija. Ta informacija se nato izpiše v besedilnem oknu četrtega polja. Skripta na podlagi
vrste mehanizma predpiše pogonu mehanizma ustrezen funkcijski zapis. Podobno velja za
tretje polje, vendar v tem primeru premikamo drugo ročico mehanizma.
V četrtem polju imamo besedilno okno, ki izpiše vrsto mehanizma, s katerim imamo trenutno
opraviti. Izpiše se nam lahko šest kategorij. To so:
Grashof M1 crank
Rotirajoče-nihajni mehanizem; pogon M1 zagotavlja rotacijo ročice.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
53
Grashof M2 crank
Enak mehanizem kot v prejšnji kategoriji, vendar pogon M2 tokrat zagotavlja polno
rotacijo.
Grashof Double rocker
Dvojno-nihajni mehanizem.
Grashof Double crank
Dvojno-rotirajoči mehanizem. V tem primeru dobimo polno rotacijo mehanizma tako
na pogonu M1 kot M2.
Triple rocker
Nihajno-nihajni mehanizem.
Special Grashof
Posebni Grashofov mehanizem. Možnosti, da naletimo na ta mehanizem, so zelo
majhne.
V petem polju lahko z dvojnim klikom na gumb Save Mechanism shranimo ključne parametre
mehanizma, s katerimi lahko kasneje sestavimo shranjeni mehanizem za morebitne nadaljnje
analize. V polju Matrix name izberemo ime matrice, v kateri želimo shraniti parametre
mehanizma.
V šestem polju imamo gumb Delete Mechanism, s katerim lahko mehanizem in njemu
prirejene spremenljivke zbrišemo.
5.4 Sinteza
V nadaljevanju bom predstavil štiri potencialne rešitve za podane položaje s slike 5.1.
Na sliki 5.5 imamo primer nihajno-nihajnega mehanizma, ki v prvem primeru ne obhodi vseh
pozicij, ker ostane gibanje ojnice omejeno na eno vejo. V primeru pa, da mehanizem obhodi
obe veji, obhodi tudi vse pozicije. Beli krivulji na slikah predstavljata pot, ki ju točki, pritrjeni
na ojnico mehanizma (C in D), obhodita v enem ciklu premika.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
54
Slika 5.5: Nihajno nihajni mehanizem
Na sliki 5.6 je prikazan Grashofov rotirajoči mehanizem, ki v vsakem vezju obhodi dvojico
pozicij.
Slika 5.6: Grashofov rotirajoče-nihajni mehanizem
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
55
Na naslednjih dveh slikah sta prikazana mehanizma brez anomalij gibanja.
Slika 5.7: Nihajno-nihajni mehanizem
Slika 5.8:: Grashofov rotirajoče-nihajni mehanizem
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
56
6 SKLEP
V diplomskem delu sem predstavil delovanje programa za sintezo štirizglobnega mehanizma
in postopek razvijanja skriptnih programov v okolju MSC Adams View. Sam program za sintezo
izpolnjuje cilje, ki sem si jih zastavil. Je enostaven za uporabo in praktičen, saj uporabniku nudi
neposreden dostop do kinematičnega delovanja posamezne rešitve. Ko pa sem začel
uporabljati program za sintezo, sem kmalu trčil ob njegove omejitve. Ker je program analitične
narave, nudi zelo ozko polje rešitev za vpetje mehanizma. V primeru, da vpetje določene
rešitve ustreza zastavljenim pogojem, se pogosto zgodi, da tovrstni mehanizem vsebuje vsaj
eno izmed treh kinematičnih anomalij. Zato se od uporabnika pričakuje velika mera intuicije
pri postavljanju začetnih pozicij, če želi dobiti praktične rešitve za zastavljeni problem.
Univerza v Mariboru - Fakulteta za strojništvo Diplomsko delo
57
7 VIRI
[1] NELSON, T., 2007. The Mechanical Problems in the Corpus of Aristoteles. University of
Nebraska-Lincoln. Dosegljivo:
https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1067&context=classicsfacpub
[Datum dostopa: 3.8.2018]
[2] ROSSI, C., RUSSO, F., 2017. Ancient Engineeer‘s Inventions: Precursors of the Present,
Second Edition. Switzerland: Springer
[3] Ibn al-Razzaz al-Jazari, 1973. The Book of Knowledge of Ingenious Mechanical Devices:
(Kitāb fī ma 'rifat al-ḥiyal al-handasiyya). USA: D. Reidel
[4] MOON, C., F., 2007. The Machines of Leonardo da Vinci and Franz Reuleoux: Kinematics
of Machines from Renaissance to the 20th Century. USA: Springer
[5] Hartenberg, R., Denavit, J., 1964. Kinematic Synthesis in Linkages. USA: McGraw-Hill
[6] NORTON, R., 2009. Kinematics and Dynamics of Machinery. Singapore: McGraw-Hill.
[7] Burmester,L., 1886: Lehrbuch der Kinematik, Verlag Von Arthur Felix, Leipzig, Germany
[8] KAUFMAN, R., 2007. Burmester Notes Part 1. Dosegljivo:
https://www2.seas.gwu.edu/~kaufman1/Burmester/Burmester%20Notes%20Part%201.PDF
[Datum dostopa: 3.8.2018]
[9] KAUFMAN, R., 2007. Burmester Notes Part 2. Dosegljivo:
https://www2.seas.gwu.edu/~kaufman1/Burmester/Burmester%20Notes%20Part%202.PDF
[Datum dostopa: 3.8.2018]
[10] RUSSELL, K., SHEN, Q., in SODHI R., 2014. Mechanism Design: Visual and Programmable
Approaches. USA: CRC Press
[11] Adams View Help (for Adams 2017) [online]. Dosegljivo:
https://simcompanion.mscsoftware.com/infocenter/index?page=content&id=DOC11201&
[Datum dostopa: 3.8.2018]
[12] Adams View Command Language Help (for Adams 2017). Dosegljivo:
https://simcompanion.mscsoftware.com/infocenter/index?page=content&id=DOC11204&
[Datum dostopa: 3.8.2018]
[13] Adams/View Function Builder help – MSC Adams 2010 [online]. Dosegljivo:
https://simcompanion.mscsoftware.com/infocenter/index?page=content&id=DOC9
390&actp=LIST [Datum dostopa: 3.8.2018]