3.9 GREDI

Seminarska naloga pri predmetu Racunalnisko podprto konstruiranje v 3. letniku univerzitetnega studija na Fakulteti za strojnistvo v studijskem letu 1998/99.
Avtor: Rado BAJT
Mentor: Janez VRHOVEC


1.0 Vsebina

2.0 Abstract

3.0 Navodilo za izdelavo naloge

4.0 Teoreticne osnove izracuna gredi

5.0 Zgradba in delovanje programa
     5.1 Zgradba
     5.2 Vnos
     5.3 Izracun
        5.3.1 Upogibni moment
        5.3.2 Torzijski moment
        5.3.3 Zacetni premer
        5.3.4 Kontrola napetosti

6.0 Spremembe in popravki programa

7.0 Zagon programa

8.0 Zakljucek

9.0 Literatura


2.0 Abstract


The main purpose of our program is that we recognize the main structure of JavaScript and emulation PHIGS. In the program I used some main parts of JavaScrip. First task of our program is to calculate reactions as well as momentum of torsion and bending. Next task is to represent the results in two charts, one for x-y and the second for x-z layer. In the second part of program, which is independent of the first one, we shall input data for the drawing part of our task. When the main points are known, program will draw lines and radius between this points. There are included basic 3D operations so we can translate, rotate or scale our drawing object in all three directions.


3.0 Navodilo za izdelavo naloge



Staticni in trdnostni izracun gredi z naborom obremenitev. Za izbrane klasicne podpore in polozaje sil in momentov je potrebno izrisati in izracunati gred. Priporocen je JavaScript in VRML. Ce se uporabi PHIGS, mora program omogocati ustrezne 3D transformacije in izris.


4.0 Teoreticne osnove izracuna gredi



Pri vseh strojih, kjer obstaja vrtilno gibanje, so potrebni tudi deli, ki omogocajo in prenasajo vrtenje. Taksni deli so tudi osi in gredi. Osi in gredi imajo po dolzini razlicne prereze zaradi nastavkov, ki preprecujejo njim in delom, ki so na njih pritrjeni aksialni pomik. Osi in gredi locimo med seboj po nacinu obremenitve. Osi so obremenjene s precnimi silami, ki jih obremenjujejo na upogib, gredi pa so obremenjene se s torzijskim momentom. Torzijski moment izhaja iz delovnega stroja, od koder se vrtilni moment prenasa preko gredi na orodje ali gnani stroj. Gredi so vedno rotirajoci strojni deli. V prerezu nastopajo vedno izmenicne napetosti. Upogibni momenti nastopajo lahko v vec ravninah, zato je najbolje, da upogibne momente dolocimo za vsako ravnino posebej. Torzijski moment se pojavi na delu gredi, ki je med zobniki ali jermenicami, preko katerih se prenasa vrtilni moment. Z rezultirajocim torzijskim in upogibnim momentom, ki mu pravimo primerjalni moment izracunamo primerjalne napetosti za posamezne kriticne prereze, ki jih primerjamo z dopustnimi napetostmi.


5.0 Zgradba in delovanje programa

5.1 Zgradba programa



Program je napisan v jeziku JavaScript, za izris grafike pa sem uporabil emulacijo graficne knjiznice PHIGS. Sama koda je sestavljena iz preprostega vnosnega dela, ki je napisan v HTML nacinu, od koder posamezni ukazi pripeljejo do funkcij, kjer se izvrsijo doloceni ukazi in ki so napisane v JavaScriptu. Ko vnesemo potrebne podatke v za to namenjena vnosna okna, se po pritisku na gumb sprozi izvajanje funkcij, ki so napisane v ukazu ONCLICK. Tako z enim klikom izvedem zaporedoma vec funkcij. Rezultate prikazem na zaslonu ali pa uporabim v naslednjem koraku.

Za delovanje programa morata biti na istem direktoriju namesceni tudi datoteki phigs.js in phigs.jar, ki ju potrebuje graficni del programa, ter slika KKS.gif, ki jo priklicemo z gumbom Prikaz slikea Kartezijevega koordinatnega sistema.

5.2 Vnos



Na vrhu okna je vnosni del, kjer uporabnik doloci pozicije lezajev in stevilo sil, ki delujejo na gred. Po potrditvi moramo vnesti podatke o posamezni sili in ko potrdimo tudi to, sledi izracun reakcij in izpis vseh podatkov o vseh silah (vkljucno z reakcijami), ki delujejo na gred. Ker se velikokrat zgodi, da vnesemo taksne podatke, da gred ni vec v staticnem ravnovesju, sem dodal kontrolo, ki ob morebitnem neravnovesju predlaga spremembo ene komponente zadnje sile. Ob morebitnem neravnovesju bi se v realnem pojavilo pospesevanje, pri izracunu pa napacni rezultati. Ob pritisku na gumba Izracun U Momentov in Izracun T Momentov se izvrsijo izracuni upogibnih momentov po posameznih poljih v x-z in y-z ravnini, kot tudi torzijski moment. V tej fazi ima program na voljo vse podatke za izris diagramov upogibnih in torzijskih momentov, kar se izvrsi v dveh PHIGS oknih. V prejsnjem delu programa sem kot rezultat dobil vecdimenzijske vektorje tock, ki v risarskem delu programa predstavljajo tocke na zaslonu, ki jih mora povezati. Da mi podatki ne bi "usli" iz zaslona, imam pred izrisom kontrolo meril, tako da je slika v vsakem primeru znotraj okna za risanje. Iz diagramoiv so razvidne tudi smeri in velikosti momentov. V nadaljevanju ima uporabnik moznost izracuna zacetnega premera in kontrole primerjalne napetosti z dopustno na vsaki tocki prereza. S tem je prvi del programa zakljucen, sledi drugi del-izris in transformacije v 3D prostoru, ki je popolnoma neodvisen od prvega dela. Uporabnik mora podati stevilo segmentov gredi in posamezne dimenzije, nakar sledi kontrola meril in prvi izris. Za posamezne transformacije so na voljo ustrezni gumbi in prostor za vnos posameznih vrednosti.

5.3 Izracun

5.3.1 Moment upogiba



Moment upogiba sem zapisoval v dve polji. V polju z imenom MUpogibaXmin sem vpisoval momente upogiba v ravnini x-z in sicer tiste na zacetku polja. Upogibne momente s konca polja v isti ravnini so zapisani v polju MUpogibaXmax, podobno velja za y-z ravnino. Pri izracunu upogibnih momentov sem uposteval vse tri komponente vsake sile, ki se pojavi do dolocenega polja z leve strani. Vrstica, ki izracuna prispevek sile k momentu v x-z ravnini je naslednja:

Prispevekx=(F[n][2]*(F[n][5]-F[AksNepomLez][5]))

5.3.2 Moment torzije



Pri dolocanju momentov torzije po posameznih poljih sem si pomagal tako, da sem analiziral, kako ga sam "pes" dolocim in nato idejo napisal v obliki programa. Na zacetku funkcije je sklop vrstic, ki v polje dolocitorzija vpise vrednosti, ki jih k skupnemu momentu prinese sila v posameznem segmentu. Sledi kontrola: na koncu gredi mora biti sestevek enak nic, saj se sicer del momenta porabi za pospesevanje, kar pa je za izracun neprimerno. V nadaljevanju pregledujem po poljih, kje se absolutna vrednost vsote zmanjsa napram predhodnemu polju. Na ta nacin najdem mesto na gredi, kjer moment dovajamo (ali odvajamo, ce smo imeli na vseh predhodnih poljih dovod momenta). Ta faza je na zgornji sliki oznacena z (a). Poiscem razliko med momentom v tej in predhodni tocki, ki je tudi vrednost momenta v tem polju. Nato se vracam po poljih v levo smer in odstevam vrednosti momenta, ki ga je prinesla sila na zacetku tega polja (b). Ko pridem na zacetek gredi, se zopet vrnem v tocko spremembe in nadaljujem v desno do konca gredi (c). Vrstica, ki doloci prispevek vsake sile k momentu torzije je naslednja:

MTorzijaSil[i]=(F[i][3]*F[i][1]*Math.cos((Math.PI/180)*F[i][6])-F[i][2]*F[i][1]*Math.sin((Math.PI/180)*F[i][6]))

S pisanjem funkcije za izracun momenta torzije sem imel kar nekaj dela, saj sem bil zadovoljen sele s tretjo verzijo.

5.3.3 Zacetni premer



Zacetni premer gredi uporabimo pri nadaljnem dolocanju premerov in kontroli napetosti na posameznih odekih, saj so nekateri faktorji odvisni od geometrije, velikosti in kvalitete povrsine. V vnosno okno vpisemo vrednost za dopustno torzijsko napetost, ob pritisku na gumb za izracun pa dobimo v oknu alert izpisano vrednost zacetnega premera. Formula, ki sem jo uporabil je naslednja:



5.3.4 Kontrola napetosti



Ker je napetost poleg momentov odvisna tudi od same geometrije in zareznih ucinkov ter raznih drugih faktorjev, mora uporabnik le-te rocno vpisati, ker bi bila popolna avtomatizacija prezapletena. V delu programa, kjer se izvrsi kontrola napetosti v posameznem prerezu, je vec vnosnih polj, kamor vnasamo potrebne podatke za izracun. Najprej vnesemo oddaljenost mesta kontrole od zacetka gredi, nato pa se predviden premer gredi na tem mestu. Ta dva podatka rabim zato, da poiscem upogibne in torzijske momente.

Ko vnesem vse faktorje potrdimo vnos in v spodnjih okvirjih dobimo rezultate za upogibno , torzijsko, primerjalno in dopustno napetost v zeljenem prerezu.

Pri programiranju sem porabil naslednje formule:

Sama koda pa izgleda takole:

Sigmau=(betaku*((32.0*MUpogibTocka)/(Math.PI*Math.pow(kontrolapremerd,3))));

Taut=(betakt*((16.0*MTorzijaTocka)/(Math.PI*Math.pow(kontrolapremerd,3))));

Sigmap=(Math.sqrt((Math.pow(Sigmau,2)+(3*(Math.pow((alfanic*Taut),2))))));

Sigmadop=((SigmaDizm*b1*b2)/S);

5.4 Diagrami



Pri izrisu diagramov sem uporabil dve PHIGS okni: za napetosti v x-z ravnini in v y-z ravnini. Pred vsakim izrisom klicem funkcijo za kontrolo merila dolzin (sirina) in momentov (visina), tako da je izris v vsakem primeru znotraj okna. Za tocke daljic sem uporabil podatke iz polja MUpogibXmin in MUpogibXmax, kjer imam zapisane vrednosti upogibnih momentov na levi in na desni strani polja, podatke za vrednosti torzijskih momentov pa sem dobil v polju MTorzija, kjer imam prav tako zapisane vrednosti po posameznih poljih. Povezava med tockami je vedno daljica, saj sem predvidel, da nimam na gredi kontinuiranih obremenitev, ki bi spremenile daljico v neko krivuljo. V diagramu sem podal tudi vrednosti momentov v skrajnih tockah, tako da ima uporabnik popolno predstavo o poteku in velikosti obremenitev.



5.5 Izris


5.6.1 Vnos


Del programa, ki je namenjen izrisu sem sicer vklucil v glavni program, vendar je popolnoma neodvisen in ga lahko uporabimo tudi kot samostojen modul.

Na zacetku je predviden vnos stevila segmentov in oddaljenost po z osi od izhodisca ter premer na tem mestu. S tem kreiramo polje

TockaRisanja[prvi indeks][drugi indeks][tretji indeks],

kjer je prvi indeks stevilka segmenta, drugi je posamezna tocka na obodu, tretji indeks pa predstavlja x, y ali z koordinato. Celoten obod sem razdelil na doloceno stevilo tock, ki je opredeljena v spremenljivki gostota. Z vecanjem gostote pridobimo na natancnosti, upocasni pa se delovanje. Po vnosu zahtevamo izris, pred katerim imam kontrolo meril. Tako se ne more zgoditi, da bi risba ze v prvem izrisu usla iz okna. Na levi strani okna za izris sem postavil gumbe za 3D transformacije in okna za vpis vrednosti. Ko vpisemo faktor transformacije in potrdimo, se izvede funkcija, ki kreira potrebno transformacijsko matriko, nato se vse tocke vektorsko pomnozijo in izvrsi se ponovni izris. Program rise daljice med posameznimi tockami, oznacenimi kot gostota-tako dobim podobo kroznice. Nato se poveze tocke z enako vrednostjo indeksa gostota po vseh segmentih, s tem pa sem pridobil boljso prostorsko predstavo telesa.

5.6.2 Nekaj o 3D transformacijah



3D transformacije uporabljamo za spreminjanje pozicije tock v prostoru. Pri vsaki transformacij se izvede preracun vseh treh koordinat, ker pa je racunalniski zaslon 2D, se za izris upoorabljajo samo dve koordinati, ki pa ju lahko poljubno izbiramo. Tako lahko z ustrezno izbiro koordinat dobimo izris tlorisa, narisa ali stranskega risa istih tock.

Sama transformacija tock se izvrsi z vektorskim mnozenjem vektorja tocke s transformacijsko matriko. Ker je transformacijska matrika za 3D velikosti 4X4, vektor tocke pa je dimnzije 3X1, ne moremo mnoziti, zato v vektor tocke uvedemo se cetrto koordinato, ki ima vrednost 1. Pravimo da smo uvedli homogene koordinate, s tem pa smo omogocili vektorsko mnozenje vektorja z matriko.

V mojem primeru je celotno polje tock za izris popisano v eni vecdimenzijski spremenljivki TockaRisanja, zato sem uvedel dvojno zanko, ki odpravita prva dva indeksa in se s transformacijsko matriko mnozijo samo indeksi koordinat tock.

Celotna transformacijska matrika izgleda takole:




6.0 Spremembe in popravki programa



Pri pisanju programa sem v vecini primerov napisal funkcijo posebej, jo stestiral in vkljucil v celotno kodo. Za testiranje sem na kljucnih mestih vstavil stavke alert("spremenljivka="+spremenljivka), s cimer sem nadziral vrednost spremenljivk v vsakem koraku. Te stavke sem v koncni verziji opremil kot komentarje z <!-- in -->, tako da se jih da hitro spet aktivirati.


7.0 Zagon programa



ZAGON PROGRAMA

 
 

8.0 Zakljucek


Pri izdelavi seminarske naloge sem spoznal nekaj osnov jezika JavaScript in emulacijo graficne knjinice PHIGS, ki nam omogoca izris crt. Za izracun reakcij, upogibnih in torzijskih momentov ter napetosti sem moral najprej osveziti znanje s pregledom zapiskov predavanj iz predmeta Strojni elementi. Pri pisanju programa sem se seznanil z nacinom zapisa tock, potrebnih za izris, nato pa se s samim izrisom. Najpomembnejsi del graficnega dela progama so osnovne geometrijske transformacije v 3D geometrijskem prostoru. S pomocjo transformacij dosezemo, da lahko telo premikamo po zaslonu, ga povecujemo in rotiramo, s cimer dobimo prostorsko predstavo o izdelku, ceprav je predstavljen na 2D zaslonu.


9.0 Uporabljena literatura


1. Strojni elementi, zapiski predavanj
2. Peter Hribar, Spoznajmo Javascript, izdaja: Flamingo trade, 1998
3. Peter Hribar, HTML 4.0, izdaja: Flamingo trade, 1998