fizikalna simulacija plovnosti · web viewpodpisani daniel bernad , roj. 04. 03. 1974 , študent...

68
UNIVERZA V MARIBORU PEDAGOŠKA FAKULTETA Oddelek za fiziko Diplomsko delo FIZIKALNA SIMULACIJA PLOVNOSTI Daniel Bernad

Upload: others

Post on 27-Dec-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

UNIVERZA V MARIBORUPEDAGOŠKA FAKULTETA

Oddelek za fiziko

Diplomsko delo

FIZIKALNA SIMULACIJA PLOVNOSTIDaniel Bernad

Mentor: doc. dr. Mitja SLAVINEC

Somentor: asist. dr. Dean KOROŠEC

Murska Sobota, avgust 2005

Page 2: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Zahvala

Iskrena hvala za pomoč, koristne nasvete, dodatno razlago in zelo prijateljski odnos svojemu

mentorju, doc. dr. Mitji Slavincu, brez katerega ne bi mogel sestaviti diplomskega dela v

takšni obliki. Posebej se še zahvaljujem somentorju dr. Deanu Korošcu za pomoč pri pisanju

programa.

Page 3: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

UNIVERZA V MARIBORU

PEDAGOŠKA FAKULTETA

IZJAVA

Podpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko delo z naslovom

Fizikalna simulacija plovnosti

pri mentorju doc. dr. Mitja Slavinec , avtorsko delo. V diplomskem delu so uporabljeni viri

in literatura korektno navedeni; teksti niso prepisani brez navedbe avtorjev.

______________

(podpis študenta)

Maribor, 12. 08. 2005

Page 4: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

PovzetekPotapljanje postaja vedno bolj privlačna sprostitev in rekreativna dejavnost. Voda ima v

mnogih pogledih drugačen vpliv na človeško telo kot zrak, ki je nujen. Eden izmed teh je tudi

povečan vzgon in s tem povezano uravnavanje plovnosti potapljačev. Slednja je odvisna od

mnogih dejavnikov, kot so dihanje, globina, na kateri se potapljač nahaja, obtežitev,

napihnjenost kompenzatorja plovnosti in podobno. Uravnavanje plovnosti je tudi ena

najpomembnejših prvin, ki se jih morajo tečajniki naučiti med potapljaškim tečajem, zato smo

razvili računalniški model, s katerim fizikalno ovrednotimo najpomembnejše dejavnike, ki

vplivajo na vzgon in simuliramo plovnost potapljačev. Model je koristen didaktični

pripomoček za poučevanje potapljanja, ki ima podoben pomen in vlogo kot npr. simulatorji

letenja, katere uporabljajo pri učenju pilotiranja.

SummaryScuba diving is becoming an attractive relaxation and recreational activity. Water, a diver’s

environment, has different impact to the human body than air habitat. One of them is

increased buoyancy and with it the problem of diver’s buoyancy control. Buoyancy depends

on many factors, like breathing, water depth, ballast, buoyancy compensator, etc. Buoyancy

control is one of the most important skills that participants in a scuba diving course have to

master. We developed a computer based model for diver’s buoyancy evaluation and

simulation. The model is a very good didactic accessory for scuba diving courses and has a

role similar to the flight simulators in aviation.

Ključne besede:

potapljanje, fizikalni model, plovnost, kompenzator plovnosti, didaktični pripomoček , Matlab

Key words:

Scuba diving, physical modeling, buoyancy control, buoyancy compensator, didactic

accessory, Matlab

IV

Page 5: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Kazalo:

1. UVOD.................................................................................................................................3

1.1. Plovnost.......................................................................................................................3

1.2. Hidrostatični tlak.........................................................................................................5

1.3. Vzgon in plovnost.......................................................................................................6

1.4. Plinski zakoni..............................................................................................................7

1.5. Sila upora....................................................................................................................8

2. POTAPLJANJE................................................................................................................10

2.1. Potapljaška oprema...................................................................................................10

2.1.1. Potapljaška obleka................................................................................................10

2.1.2. Potapljaška jeklenka..............................................................................................11

2.1.3. Kompenzator plovnosti.........................................................................................11

2.2. Dihanje......................................................................................................................11

2.3. Plavanje.....................................................................................................................12

3. FIZIKALNI MODEL........................................................................................................13

3.1. Izhodiščne vrednosti osnovnih spremenljivk............................................................14

3.1.1. Dihanje..................................................................................................................17

3.1.2. Kompenzator plovnosti.........................................................................................17

3.1.3. Konstante..............................................................................................................18

4. PROGRAMSKA IMPLEMENTACIJA...........................................................................19

4.1. Simulacija.................................................................................................................19

4.1.1. Dokumentacija......................................................................................................19

4.1.2. Inicializacija spremenljivk....................................................................................19

4.1.3. Inicializacija uporabniškega vmesnika.................................................................20

4.1.4. Glavna zanka in nadzor nad izvajanjem simulacije..............................................21

4.1.5. Podprogrami za nadzor simulacije........................................................................21

4.1.6. Fizikalna simulacija..............................................................................................21

4.2. Matlab.......................................................................................................................21

4.2.1. Zahteve programa Matlab.....................................................................................22

4.2.2. Uporabniški vmesnik Matlaba..............................................................................22

4.3. Uporabniški vmesnik simulacije...............................................................................23

4.3.1. Prikaz gibanja........................................................................................................23

4.3.2. Parametri...............................................................................................................24

4.3.3. Konstante..............................................................................................................25

0

Page 6: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

4.3.4. Nadzor...................................................................................................................25

4.4. Zgradba simulacijskega vmesnika............................................................................26

4.5. Podatkovni model.....................................................................................................27

5. PRIMERI DELOVANJA SIMULACIJE IN REZULTATI.............................................28

5.1. Testiranje modela......................................................................................................28

5.2. Simulacija plovnosti..................................................................................................28

5.3. Povezava programa s strojno opremo.......................................................................31

5.4. Uporaba simulacije pri potapljaških tečajih..............................................................32

6. ZAKLJUČEK...................................................................................................................33

7. LITERATURA.................................................................................................................34

8. PRILOGA.........................................................................................................................36

1

Page 7: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

1. UVODLjudje se že od nekdaj spogledujejo z okolji, ki niso njihov naravni življenjski prostor. Včasih

jih v to silijo potrebe, raziskovanje novega, lažje premagovanje ovir, kot npr. pri letenju,

pogosto pa so razlogi povezani zgolj z rekreacijo in prijetnim preživljanjem prostega časa.

Med slednje prav gotovo spada rekreativno potapljanje, ki se je v zadnjih dveh desetletjih zelo

razširilo. Za razliko od pionirskih časov avtonomnega potapljanja, ko je le-to bilo rezervirano

zgolj za izbrance, predvsem vojake, je danes potapljanje dostopno praktično vsakomur, ki ga

bivanje pod vodo veseli.

Tak razvoj potapljanja je v veliki meri pogojen s tehnološkim napredkom in razvojem

potapljaške opreme ter raziskavami vpliva podvodnega medija na ljudi, predvsem na

fiziologijo. V obeh primerih je ključnega pomena dobro poznavanje fizikalnih zakonitosti

povezanih z bivanjem pod vodo. Prav v tem se tudi kaže sorodnost s prizadevanji bivati v

zraku, saj pri nobenem drugem športu ali rekreaciji ni treba med usposabljanjem spoznati

toliko fizikalnih zakonov kot pri potapljačih in pilotih.

Potapljači se za kasnejše varno bivanje pod vodo morajo seznaniti z osnovnimi zakoni ter

hkrati razumeti njihov pomen in vpliv v povsem aplikativnem smislu, torej kaj to pomeni v

praksi pod vodo. Prav zaradi tega je pomembno, da je pouk fizikalnih vsebin na potapljaških

tečajih kar se da nazoren in podkrepljen tudi z demonstracijskimi poskusi. V ta namen smo

razvili računalniški model, s katerim simuliramo vpliv nekaterih fizikalnih zakonitosti, ki

najpomembneje vplivajo na bivanje potapljačev pod vodo.

V nadaljevanju bomo najprej predstavili nekaj osnovnih fizikalnih zakonitosti povezanih s

potapljanjem. Sledi predstavitev osnovne potapljaške opreme, spet s posebnim poudarkom na

fizikalnih lastnostih, ki jih upoštevamo pri modelu plovnosti. V naslednjih poglavjih bo

predstavljen fizikalni model in računalniški algoritem, na katerem temelji simulacija

plovnosti. V zaključku je predstavitev rezultatov in možnosti uporabe ter didaktični pomen

razvitega orodja predvsem pri izobraževanju potapljačev.

1.1. Plovnost

Nekatera telesa v kapljevinah potonejo na dno, nekatera plavajo, nekatera pa kažejo nevtralen

odziv in se ne premikajo niti gor niti dol. Pravimo, da ima neko telo v izbrani kapljevini

negativno, pozitivno ali nevtralno plovnost. Telo ima pozitivno plovnost in plava na površini,

če je njegova povprečna gostota manjša od gostote kapljevine. Plovnost telesa je negativna in

2

Page 8: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

tone na dno, kadar je njegova povprečna gostota večja od gostote kapljevine ter nevtralna, ko

sta gostoti telesa in kapljevine enaki.

Zmožnost uravnavanja plovnosti je še posebej pomembna pri potapljanju, saj s tem ne le da

potapljači vplivajo na sam potop, temveč si tudi zagotovijo varen povratek nazaj na površino

ob koncu potopa ali v primeru sile. Za potapljača je najbolj ugodno, da ima nevtralno

plovnost, torej da lebdi v vodi. Tega pa ni lahko doseči v vseh fazah potopa. Razlogov je več,

vsi pa so povezani s spremembami povprečne gostote potapljačev. Naštejmo nekaj

najpomembnejših:

Ko potapljač vdihne, se mu pri praktično nespremenjeni masi poveča volumen, zaradi

česar se njegova povprečna gostota zmanjša in posledično poveča plovnost.

Potapljač je med potapljanjem oblečen v zaščitno obleko iz neoprena, ki vsebuje

mnogo plinskih mehurčkov. Z naraščajočo globino povečan tlak obleko stiska, zaradi

česar se potapljačem plovnost z globino zmanjšuje.

Potapljač med potopom diha zrak iz jeklenke, zato se njegova povprečna gostota

zmanjšuje in potapljaču plovnost s časom narašča.

Vpliv zgoraj naštetih dejavnikov v splošnem ni zanemarljiv, saj lahko povprečno gostoto

potapljačev spremenijo tudi do 10 odstotkov. V pionirskih časih potapljanja so si potapljači

pomagali na različne načine, kot npr. s pobiranjem težkih kamnov z dna ali zadrževanjem

diha, dandanašnji pa so opremljeni s posebnimi napihljivimi nahrbtniki, imenovanimi

kompenzator plovnosti. Ko imajo negativno plovnost, ga napolnijo z zrakom iz jeklenke, ko

pa je plovnost pozitivna, enostavno izpustijo odvečen zrak iz njega. Še vedno pa manjše

spremembe plovnosti uravnavajo s pljuči.

Inštruktorji si pri potapljaških tečajih pomagajo z različnimi didaktičnimi pripomočki. Varna

in zanesljiva uporaba kompenzatorja plovnosti je ena izmed najzahtevnejših vsebin

potapljaških tečajev, zato smo se odločili razviti simulator, s katerim se bodo potapljači lahko

še pred vstopom v vodo seznanili z delovanjem in varno uporabo kompenzatorja plovnosti pri

uravnavanju plovnosti.

Model navideznega potapljača tečajnikom omogoča, da lahko simulirajo svoj prvi »potop« s

posebnim poudarkom prav na uravnavanju plovnosti. S tem lahko izboljša osnove potapljanja

in si skrajša čas vadbe, ki bi ga pozneje potreboval v realnem podvodnem okolju. Model ob

plovnosti simulira tudi porabo zraka in glede na izbrano opremo prikazuje preostali

razpoložljivi zrak in globino, omogoča pa tudi nazoren prikaz vseh drugih količin, ki jih

potapljaču med realnim potopom prikazujejo potapljaški inštrumenti.

3

Page 9: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Pomen simulacijskega modela je še toliko večji, ker predstavlja novost na področju

izobraževanja potapljačev, hkrati pa je zastavljen tako, da ga je moč razširiti tudi z različnimi

merilniki in receptorji, ki si jih tečajniki namestijo nase.

Tak sistem, ki se uporablja v VRML okolju in vključuje primerno strojno opremo za

zaznavanje osnovnih ukazov za polnjenje in praznjenje kompenzatorja plovnosti, je bil do

določene mere tudi uspešno realiziran [1].

1.2. Hidrostatični tlak

V tekočinah zaradi njihove teže deluje hidrostatični tlak [2, 3]. Hidrostatični tlak, ki smo mu

izpostavljeni vsak dan, je kar zračni tlak, s katerim zrak v atmosferi deluje zaradi svoje teže.

Na morski gladini znaša približno 1 bar. Hidrostatični tlak je odvisen od gostote tekočine in

narašča z globino:

()

kjer je p hidrostatični tlak na globini h pod površino tekočine, g težni pospešek in gostota

tekočine. Iz gornje enačbe lahko razberemo, da se v vodi tlak vsakih 10 m poveča za približno

1 bar. Poudarimo, da se za razliko vode, zračni tlak z višino ne spreminja linearno, saj se z

višino spreminja gostota zraka, med tem ko je gostota vode praktično enaka na vseh globinah.

Na potapljača pod vodo ob zračnem tlaku torej še dodatno deluje hidrostatični tlak

. ()

Voda ima veliko večjo gostoto od zraka, zato tlak z globino hitreje narašča, saj se vsakih 10 m

poveča za toliko, kot znaša celotni zračni tlak. Kot primer navedimo, da je na globini 20 m

potapljač izpostavljen trikrat večjemu tlaku, kot je običajno na površini (slika 1).

4

Page 10: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

h = 20 m

p0=1 bar

ph=2 bar

pp=pv+ph=3 bar

Slika 1: Prikaz delovanja zračnega in hidrostatičnega tlaka vode na potapljača

1.3. Vzgon in plovnost

Tlak v tekočinah narašča z globino. Sila na spodnjo ploskev potopljenih teles je zato večja kot

na zgornjo, zaradi česar njuna rezultanta kaže navpično navzgor. To silo, ki deluje na telesa

potopljena v tekočine, imenujemo sila vzgona . Njena velikost je enaka teži izpodrinjene

tekočine:

()

kjer je V volumen tistega dela tekočine, ki ga telo izpodriva. Vzgon v zraku lahko običajno

zanemarimo, saj je le tisočinka teže ljudi. Povsem drugače pa je v vodi, saj je povprečna

gostota ljudi približno enaka gostoti vode in zato sta tudi sila vzgona in sila teže primerljivi.

Velikost sile teže glede na silo vzgona vpliva na plovnost teles, tj. ali telesa plavajo na

površini, potonejo na dno, ali lebdijo v tekočini. V kolikor silo teže, ki je odvisna od mase

telesa, izrazimo s prostornino V in povprečno gostoto telesa :

()

in to primerjamo z enačbo (3), vidimo, da je plovnost telesa v neki tekočini odvisna le od

gostote tekočine in povprečne gostote telesa . Če je gostota telesa manjša od gostote

tekočine, telo plava, v nasprotnem primeru pa potone.

5

Page 11: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Ko telo plava na površini, sta v ravnovesju sila teže in vzgona [2]:

. ()

Plavajoča telesa niso v celoti potopljena. Kolikšen del telesa moli iz površine, je spet odvisno

od razlike obeh gostot. Kratek račun pokaže, da velja zveza:

, ()

kjer je V volumen telesa in V' volumen telesa, ki je potopljen [3, 4].

1.4. Plinski zakoni

Stanje idealnega plina v odvisnosti od tlaka, volumna in temperature nam opisuje plinska

enačba, iz katere izhaja, da je produkt tlaka in volumna nekega plina, deljeno s temperaturo

izraženo v absolutni skali, konstanten. Ker so med potapljanjem spremembe temperature

manjšega pomena, jih lahko zanemarimo in shajamo z Boylovim zakonom, ki pravi, da je

produkt prostornine in tlaka, pri katerem se nahaja neka množina plina, ves čas konstanten. Iz

tega lahko zapišemo zvezo, ki jo bomo v modelu pogosto uporabili:

()

kjer sta V1 in V2 volumna plina v dveh različnih stanjih, p1 in p2 pa pripadajoča tlaka. V

kolikor se npr. tlak podvoji, se volumen plina zmanjša na polovico (slika 2) in obratno, če se

tlak zmanjša na pol, se plinu prostornina podvoji [5].

Vpliv Boylovega zakona je pri potapljanju lahko zelo velik, saj se z globino tlak kaj hitro

spremeni za nekajkrat [6, 7].

6

Page 12: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Slika 2: Sprememba prostornine zraka v odprti poveznjeni posodi v odvisnosti od

hidrostatičnega tlaka na različnih globinah [5]

1.5. Sila upora

Na potapljača v vodi deluje veliko večji upor sredstva kot v zraku. To je treba med drugim

upoštevati tudi pri načrtovanju potopa, še posebej, če so prisotni vodni tokovi. V našem

primeru, ko simuliramo dvigovanje in spuščanje potapljača, sila upora deluje v navpični

smeri.

Ločimo linearni in kvadratni zakon upora. Pri manjših hitrostih je prevladujoč vpliv

linearnega zakona upora:

, ()

kjer je r tipična dimenzija telesa (v našem primeru npr. polmer krogle, s katero bi najbolje

opisali potapljača), v hitrost gibanja telesa in viskoznost vode.

Pri večjih hitrostih postane prevladujoč prispevek sile kvadratnega zakona upora:

, ()

kjer je gostota vode, S tipičen presek telesa (potapljača), koeficient upora in v hitrost

potapljača.

Katera sila upora prevladuje, nam pove Reynoldsovo število [3]:

7

Page 13: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

. ()

V primerih, ko je Reynoldsovo število reda velikosti 1, ima prevladujoč vpliv linearni zakon

upora, pri velikih Reynoldsovih številih, npr. preko 1000, je prevladujoč kvadratni zakon

upora, pri vmesnih vrednostih pa je treba upoštevati oba.

Izkaže se, da pri simulaciji potapljačev v večini primerov nastopajo razmere, ko velja

kvadratni zakon upora, kar je ustrezno upoštevano tudi v samem računalniškem programu.

8

Page 14: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

2. POTAPLJANJEV nadaljevanju si bomo ogledali osnovne značilnosti potapljanja, predvsem na kakšen način

in v kolikšni meri lahko potapljači vplivajo na vzgon in plovnost. Najprej bomo spoznali

potapljaško opremo, v drugem delu pa še, kako potapljač (predvsem z dihanjem ali

plavanjem) lahko vpliva na plovnost.

2.1. Potapljaška oprema

2.1.1. Potapljaška obleka

Potapljaška obleka potapljača varuje pred podhladitvijo, saj voda približno 25-krat hitreje

odvaja toploto od telesa kot zrak.

Obstajajo različne vrste potapljaških oblek. Vsem je bolj ali manj skupno, da so zgrajene iz

materialov, ki zaradi čim boljših izolacijskih lastnosti vsebujejo mehurčke plina. Najpogosteje

se uporablja neopren. To je posebna ekspandirana umetna guma, v katero je napihnjen dušik v

obliki mehurčkov, ki so ločeni med seboj tako, da neopren ne more vpijati vode kot spužva.

Običajna debelina oblek je od 3 do 8 mm, ki pa se zaradi povečanega hidrostatičnega tlaka z

globino tanjša, zaradi česar se njena plovnost zmanjšuje (s tem pa se zmanjšuje tudi

izolacijska sposobnost obleke).

Volumen potapljaške obleke lahko ocenimo iz površine telesa in debeline obleke ter običajno

znaša okrog 10 do 15 litrov (v modelu je nastavljeno na 12 litrov) [8, 9, 10].

Volumen potapljaške obleke se z naraščajočim tlakom zmanjšuje nekoliko manj, kot bi to

izhajalo iz Boylovega zakona, saj se stiskajo le mehurčki dušika, med tem ko prostornina

gume ostaja nespremenjena, kar smo v modelu opisali z enačbo:

, ()

kjer je Vs volumen obleke (suite), Vsh volumen stisnjenje obleke na določeni globini h, Ks

konstanta, ki pove, kolikšen delež prostornine obleke predstavlja guma (ni stisljiv kot plini),

p0 hidrostatični tlak na gladini in pdh tlak na globini, kjer se potapljač nahaja [5].

9

Page 15: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

2.1.2. Potapljaška jeklenka

Avtonomna potapljaška oprema ali SCUBA (angl. Self Contained Underwater Breathing

Apparatus) potapljaču pod vodo omogoča prosto gibanje, saj zrak, ki ga pod vodo diha, nosi s

sabo v potapljaški jeklenki (za razliko potapljačev, katerim zrak po posebni cevi sproti tlačijo

v globino). Pri rekreativnem potapljanju so jeklenke praviloma napolnjene z zrakom, lahko pa

vsebuje tudi različne druge pline ali njihove mešanice. Izdelane so iz jekla ali aluminija.

Količina zraka je odvisna velikosti jeklenke in od tlaka, do katerega je jeklenka napolnjena.

Tipične velikosti jeklenk so 10, 12, 15 ali 18 l. Pritisk, do katerega so lahko napolnjene, pa je

200 bar, v zadnjem času pa se uveljavljajo tudi jeklenke, ki se polnijo do 300 bar.

Kratek račun pokaže, da je v npr. 15-litrski jeklenki, napolnjeni z zrakom do 200 bar, masa

zraka približno 4 kg. Med potopom potapljač diha zrak iz jeklenke, zaradi česar se njegova

skupna masa zmanjšuje, volumen pa ostaja nespremenjen, kar povečuje njegovo plovnost [5,

11, 12].

2.1.3. Kompenzator plovnosti

Potapljaču se med potopom zaradi različnih dejavnikov spreminja povprečna gostota in s tem

vzgon in sama plovnost. Za kompenzacijo plovnosti potapljači uporabljajo kompenzator

plovnosti (Buoyancy Compensator). Volumen vreče se od kompenzatorja do kompenzatorja

spreminja glede na njegovo velikost, namen in same potrebe potapljača. Tipične vrednosti pa

so med 12 do 40 litrov, kar je upoštevano tudi v modelu.

2.2. Dihanje

Pri dihanju se pljuča širijo in krčijo, zaradi česar se spreminja volumen potapljača pri

praktično nespremenjeni masi, kar vpliva na njegovo povprečno gostoto in s tem plovnost.

Potapljač običajno diha malo intenzivneje, kar znaša cca 2 l. Pri največjem možnem vdihu ali

izdihu pa je ta sprememba volumna enaka vitalni kapaciteti pljuč, kar znaša v povprečju

približno 6 l in predstavlja 5 do 10 % celotnega volumna potapljača.

Dihanje samo ne predstavlja večjega problema pri uravnavanju plovnosti, še toliko bolj, ker se

periodično ponavlja vdih in izdih, lahko pa z globokim vdihom ali izdihom potapljač v veliki

meri vpliva na plovnost. Pri prostem potapljanju se npr. veliko lažje potopimo s praznimi kot

s polnimi pljuči.

Uravnavanje plovnosti z zadrževanjem diha pa se ne priporoča zaradi varnostnih razlogov.

10

Page 16: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

2.3. Plavanje

Potapljač odstopanje od nevtralne plovnosti delno kompenzira tudi s samim plavanjem.

Odrasla oseba, vsaj nekaj časa, brez težav plava npr. z 10-kilogramskim pasom uteži, vendar

je tovrstno potapljanje naporno, neprijetno in predvsem nevarno. Zaradi tega majhna

odstopanja plovnosti, relativno izraženo nekako do 5 %, lahko potapljači krajši čas

kompenzirajo tudi s samim plavanjem, vendar še posebej pri začetnikih to ni priporočljivo.

Zaradi prekomernega fizičnega napora se lahko zadihajo, kar pogosto vodi do panike in

podvodnih incidentov.

11

Page 17: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

3. FIZIKALNI MODELNa potapljača pod vodo delujejo predvsem sila teže, sila vzgona in sila upora ter običajno tudi

sila, ki jo potapljač ustvarja s svojim plavanjem. V modelu simuliramo prve tri sile, med tem

ko silo plavanja lahko pogojno dodamo kot zunanji vpliv. Simulacija temelji na klasičnem

Newtonovem zapisu gibalnih enačb v eni dimenziji (navpična smer), kjer sproti spremljamo

rezultanto sile in celotno maso potapljača. Iz teh podatkov računamo trenutni pospešek:

, ()

kjer sta mi in Fi masa in rezultanta sile na koncu i-te interakcije, ai pa pospešek v i interakciji.

Na začetku vsakega diskretiziranega časovnega intervala (z možnostjo nastavitve dolžine) so

uporabljene končne vrednosti prejšnjega intervala, gibanje znotraj posameznega intervala pa

se obravnava kot enakomerno pospešeno in tako preko numerične integracije sproti

izračunamo trenutno hitrost ter lego potapljača:

, (a)

, (13b)

kjer je vi+1 hitrost potapljača na koncu i+1 iteracije, vi hitrost na koncu i-te iteracije, hi+1 in hi

legi potapljača na koncu i+1 in i-te iteracije ter časovni interval posamezne iteracije [13,

14, 15].

Končne vrednosti sile in hitrosti ter lege na izbranem časovnem intervalu se potem spet

uporabijo kot začetne vrednosti naslednjega intervala.

Grafična predstavitev dobljenih rezultatov je dinamične narave, kjer se v enakomernih

presledkih izrisuje lega potapljača in njegova hitrost. Časovni interval izrisovanja je poljuben

večkratnik časovnega intervala simulacije.

Začetne parametre je moč poljubno nastavljati, nekatere pa kot optimalne predlaga simulator.

Od optimalne začetne nastavitve, npr količina dodatne obtežitve, je v veliki meri pogojeno

kasnejše obnašanje potapljača pod vodo, tako da uporabnik lahko praktično preizkusi, koliko

težje je v primeru neprimerno izbrane opreme zagotavljati nevtralno plovnost potapljača [16,

17].

12

Page 18: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

3.1. Izhodiščne vrednosti osnovnih spremenljivk

Potapljaču se plovnost spreminja zaradi zunanjih vplivov, kot so npr. globina in s tem

povezane spremembe volumnov obleke in kompenzatorja, zaradi dihanja in zaradi

napihovanja ali praznjenja kompenzatorja. Za zagotovitev čim večjega ujemanja z realnim

stanjem in s tem verodostojnosti simulacije ter primerljivosti z realnim primerom smo izvedli

meritve fizikalnih lastnosti potapljaške opreme in upoštevali fiziološke značilnosti in odzive

človeškega telesa med potapljanjem [5].

Za lažje razumevanje smo dodali seznam uporabljenih spremenljivk, ki smo jih zbrali v 2

tabelah. Tabela 1 predstavlja parametre in v njej je za vsako spremenljivko podano ime, opis

in nastavljena vrednost. Parametri se ves čas programa spreminjajo in izračunavajo. V tabeli 2

pa so zbrane konstante, ki se nanašajo na simuliranega potapljača in se med simulacijo ne

spreminjajo.

Tabela 1: Parametri programa

Splošni fizikalni parametri

Ime Opis Vrednost Enota

13

Page 19: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

p.d.h Globina potapljača 0 mp.d.v Hitrost potapljača 0 m/sp.d.vPrev Hitrost potapljača v prejsnjem časovnem trenutku 0 m/sp.d.dv Sprememba hitrosti 0 m/sp.d.a Pospešek potapljača 0 m/s2

p.d.Fr Sila upora 0 Np.d.V Skupen volumen 0 lp.d.Vfiksen Fiksen volumen 0 lp.d.Vcas Volumen odvisen od časa 0 lp.d.r Polmer krogle, s katerim aproksimiramo potapljača 0 mp.d.Fg Sila teze potapljača 0 Np.d.Fb Izračunamo silo vzgona (buoyant force) 0 Np.d.ph Tlak v odvistnosti od globine 1 barp.d.phPrev Prejšnji tlak v odvistnosti od globine 1 barp.d.smer Smer gibanja (gor = 1, dol = -1) 0 -p.d.m Skupna masa 0 kgp.d.mfiksna Fiksna masa, ki se ne spreminja 0 kgp.d.mcas Masa odvisna od časa 0 kg

Dihanje

p.r.f Frekvenca dihanja (respiration rate) 8 vdihi/minp.r.V Volumen zraka v pljučih (lung volume) med dihanjem 2.5 lp.r.Vs Volumen zraka v pljučih (lung volume) med dihanjem –

slider0 l

p.r.Vsh Volumen zraka v pljučih (lung volume) odvisen od globine 0 l

Kompenzator plovnosti

p.b.V Volumen zraka v kompezatorju plovnosti, če bi bili na površini

2 l

p.b.Vk Volumen zraka v kompenzatorju plovnosti (BCD-ju) potapljač je v ravnovesju

2.6001 l

p.b.Vh Volumen zraka v kom.plov. v odvisnosti od globine 2.60001 lp.b.dV Trenutni pretok iz/v BCD 0 l/s

Jeklenka

p.t.V Volumen jeklenke 0 lp.t.dV Sprememba volumna v jeklenki 0 lp.t.ma Masa zraka v jeklenki 2.6 kgp.t.p Pritisk zraka v jeklenki 0 bar

Obleka

p.s.V Volumen obleke(suit) pozneje izračunamo 0 l

Tabela 2: Konstante programa

Ime Opis Vrednost Enota

Splošni fizikalni parametri

14

Page 20: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

c.d.g Gravitacijski pospešek 10 m/s2

c.d.m Masa potapljača z opremo 75 kgc.d.p0 Tlak na površini 100.000 Pac.d.ro Gostota vode 1000 kg/m3

c.d.mi Viskoznost 0.0013 kg/msc.d.hNull Minimalna globina 0 mc.d.hMin Minimalna globina 0 mc.d.hMax Maksimalna globina -40 mc.d.vMin Hitrost na dnu oz. na površini 0 m/sc.d.aMin Pospešek na dnu oz. površini 0 m/s2

c.d.Fep silon Ustavljanje potapljača 10 Nc.d.vepsilon Ustavljanje potapljača 0 m/s

Dihanjec.r.fMax Maksimalna frekvenca dihanja 60 vdihi/minc.r.VMax Maksimalni volumen pljuč (+/- od ravnovesja) 1.5 l

Kompenzator plovnostic.b.VMax Maksimalni volumen zraka v kompenzatorju (pri

normalnem tlaku)20 m3

c.b.VMin Minimalen volumen zraka v kompenzatorju (pri normalnem tlaku)

0 m3

c.b.fs Vzorčevalna frekvenca za zvok 8000 Hzc.b.SoundIn Zvok ob polnjenju in praznjenju kompenzatorja Glej prog. -c.b.SoundOut Zvok ob polnjenju in praznjenju kompenzatorja Glej prog. -

Jeklenkac.t.p Pritisk zraka v jeklenki 200 barc.t.dVp Pretok zraka iz jeklenke v kompenzator plovnosti 1 l/sc.t.dVm Pretok zraka iz kompenzatorja plovnosti 2 l/sc.t.V Volumen jeklenke [l] pri talku 1 bar 12 lc.t.m Masa jeklenke c.t.V * 1.5 kgp.t.prezerva Rezerva v jeklenki je 50 barov. 50 barp.t.pnull Jeklenka je prazna. 0 barc.t.desetbar Izpiše obvestilo, da je še 10 barov v jeklenki. 10 barc.t.rezerva Jeklenka je na rezervi in izpiše obvestilo. 50 bar

Oblekac.s.t Debelina obleke potapljača (suit thickness) 5 mmc.s.m Masa obleke (c.s.t * 3 * masa/100) 4 kgc.s.k Aproksimacija človeka 0.5 -

Uteži c.w.m Dodatne uteži potapljača, ki je enaka predlagani masi uteži. 0 kg c.e.m Masa ostale opreme 8 kg

15

Page 21: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

3.1.1. Dihanje

Ritem dihanja pri odraslem človeku je med 15 in 18 vdihov na minuto, pri povprečnem vdihu

in izdihu pa se izmenja od 0,5 do 1 l zraka. Pri fizičnem naporu se poveča poraba zraka, kar se

manifestira tako v ritmu dihanja kakor amplitudi posameznega vdiha [18, 19].

Med potapljanjem potapljači običajno dihajo tako, da je amplituda posameznega vdiha večja,

frekvenca pa se ne poveča, temveč celo nekoliko zmanjša. Povprečna poraba zraka med

potapljanjem je približno 20 l/min.

V simulaciji je dihanje izraženo s sinusno funkcijo ustrezne frekvence in amplitude:

, ()

kjer je V0 amplituda, kar znaša polovični volumen povprečnega vdiha ali izdiha, vdiha pa

frekvenco dihanja. Obstoji možnost nadgradnje simulatorja z ustreznim receptorjem dihanja,

bodisi preko merjenja pretoka skozi cev, ki si jo uporabnik da v usta, bodisi preko

dinamičnega merjenja obsega prsnega koša.

Vpliv dihanja je upoštevan preko spremembe volumna potapljača in spremembe mase zraka v

jeklenki, pri čemer se upošteva tudi globina, na kateri se potapljač nahaja, saj je od tega

odvisna gostota zraka, ki ga diha [5, 20].

3.1.2. Kompenzator plovnosti

Volumen kompenzatorja plovnosti lahko prosto nastavljamo, tipična vrednost pri simulaciji

pa je 20 litrov. Naslednja ključna podatka sta še pretok zraka pri polnjenju in praznjenju

kompenzatorja. V realnem primeru pretoki lahko presežejo tudi 3 l/, vendar je z ukazi preko

tipkovnice težko v celoti simulirati polnjenje in praznjenje kompenzatorja preko realnih

ventilov na inflatorju, zato je v simulaciji tipična vrednost polnjenja nastavljena na 1 l/s in

praznjenja na 2 l/s [5].

Podobno kot pri dihanju tudi tukaj upoštevamo spremembo volumna v odvisnosti od količine

zraka in tlaka okolice, kakor tudi mase pri izpuščanju zraka iz kompenzatorja.

Volumen zraka se med potopom v kompenzatorju plovnosti spreminja zaradi globine

(sprememba pritiska) in zaradi polnjenja ali praznjenja kompenzatorja. V sami simulaciji smo

zvezno spremembo diskretizirali in v vsakem koraku opisali z enačbo:

16

Page 22: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

, ()

kjer je volumen zraka v odvisnosti od globine, ob koncu izbranega časovnega intervala

(ene numerične iteracije), sprememba volumna zraka zaradi polnjenja ali praznjenja v

danem časovnem intervalu (v konkretnem primeru simulacije časovni interval enega koraka

numerične integracije), p(h) on p'(h) tlaka v odvisnosti od globine na začetku in koncu

posamezne iteracije.

3.1.3. Konstante

Razmere so odvisne še od mnogih drugih konstant, kot npr. volumen in stisljivost potapljaške

obleke, volumen in masa jeklenke, optimalna dodatna obtežitev itd. Vrednost teh parametrov

je v simulaciji moč poljudno nastavljati, vendar so iz praktičnih razlogov običajno fiksirani na

standardizirane veličine [16, 17].

17

Page 23: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

4. PROGRAMSKA IMPLEMENTACIJAZa implementacijo fizikalnega modela lahko uporabimo različne programske jezike in orodja

[21, 22, 23]. V fazi razvoja je pomembno, da uporabimo namensko matematično orodje, s

katerim lahko enostavno napišemo poljubne ukaze. Najpogosteje uporabljena matematično

orientirana programska orodja so Matlab, Mathematica, LabView in drugi.

4.1. Simulacija

Opis programske implementacije fizikalne simulacije plovnosti smo razdelili na 6 sklopov:

1. dokumentacija,

2. inicializacija spremenljivk,

3. inicializacija uporabniškega vmesnika,

4. glavna zanka in nadzor nad izvajanjem simulacije,

5. podprogrami za nadzor simulacije in

6. fizikalna simulacija.

4.1.1. Dokumentacija

Dokumentacija je del vsakega programa. Namenjena je spremljanju in nadzoru vstavljenih

ukazov in sprememb. Časovni razpored dokumentiranja nam lahko pomaga, da pozneje lažje

najdemo napake, ki jih v prejšnjih verzijah programa ni bilo. Pri pisanju programa je vsak del

kode jasen, ampak čez čas se to pozabi. Če se pravilno komentira program, nam to tudi

pozneje ne bo delalo preglavic. V primeru, če se odločimo, da bomo razvoj programa kasneje

nadaljevali, se v dokumentiranem programu lažje znajdemo.

4.1.2. Inicializacija spremenljivk

V vsakem programu je večje število spremenljivk. Pred začetkom pisanja programa se je

smotrno odločiti za pravilno poimenovanje le-teh. Smiselna določitev imen in zgradbe

spremenljivk nam lahko zelo olajša poznejše delo. Odločili smo se, da spremenljivke

razdelimo glede na uporabo:

Spremenljivke za uporabniški vmesnik, ki se uporabljajo za inicializacijo

uporabniškega vmesnika.

18

Page 24: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Parametre, ki se ves čas delovanja programa spreminjajo in računajo s pomočjo

podprogramov.

Konstante, kot že pove ime, se med delovanjem programa ne spreminjajo.

Časovne spremenljivke, ki so namenjene za spremljanje realnega časa v programu.

Kontrolne spremenljivke za nadzor modela.

Dodali smo še spremenljivke, ki se uporabljajo za shranjevanje vrednosti spremenljivk

modela.

4.1.3. Inicializacija uporabniškega vmesnika

Za uporabnika je najpomembnejši primeren uporabniški vmesnik. Uporabniški vmesnik naj

bo enostavno zasnovan, obenem pa naj omogoča tudi primerno število ukazov in izbir, s

katerim lahko vplivamo na delovanje programa. Za sestavo uporabniškega vmesnika izhajamo

iz fizikalnega modela. Pri fizikalnem modelu so pomembne naslednje spremenljivke in ukazi:

izris,

parametri,

konstante,

dihanje,

kompenzator plovnosti in

nadzor nad programom.

Za izris potapljača je primerno izbrati največji razpoložljivi del uporabniškega vmesnika. S

tem smo olajšali delo uporabnika, da lahko lepo spremlja navidezni potop. Za različne potope

so tudi različni pogledi na prikaz potapljača, npr.:

celoten potop je viden na ekranu in

animacija, časovna os se premika po x osi.

Za izbiro opcij pri izrisu smo se odločili pri parametrih, ker se ta del ves čas v programu

posodablja. Za nas je pomemben navaden izris, relativen izris in izpis vrednosti parametra v

ukaznem oknu. Včasih je izrisovanje nepregledno in lažje spremljamo številčne vrednosti,

katere si lahko ogledamo, ko program ustavimo, ali izberemo premor.

Konstante so tisti del prikaza, ki se ne spreminjajo, uporabnik pa na začetku lahko spremeni

vrednosti.

19

Page 25: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Dihanje se lahko prikaže z drsnikom. Ritem dihanja se med potopom spreminja in se lahko to

tudi poljubno nastavlja.

Kompenzator plovnosti je pomemben za dvig in spust na želeno globino. S tem lahko

uravnavamo hitrost potapljača.

Program še omogoča zagon, premor, ponovno nastavitev vrednosti in izhod iz programa.

4.1.4. Glavna zanka in nadzor nad izvajanjem simulacije

Glavna zanka v programu je namenjena temu, da se lahko nastavijo začetne spremenljivke in

se te ponudijo v uporabniškem vmesniku. To lahko uporabnik pred zagonom programa

prilagodi svojim potrebam. Glavna zanka ves čas preverja, kateri ukazi so izvršeni v

uporabniškem vmesniku in glede na to pokliče podprogram, ki nato izvrši ukaz.

4.1.5. Podprogrami za nadzor simulacije

Za lažje programiranje je program sestavljen iz več podprogramov:

Ponastavitev spremenljivk in uporabniškega vmesnika.

Zagon simulacije.

Posodobitev vrednosti v uporabniškem vmesniku.

Shranjevanje spremenljivk.

Posodobitev vrednosti za dihanje.

Praznjenje in polnjenje kompenzatorja plovnosti.

Izris spremenljivk.

Izračun v fizikalnem modelu.

4.1.6. Fizikalna simulacija

V fizikalni simulaciji se za vsak časovni interval izvrši ena iteracija, v kateri se sproti

izračunavajo vse spremenljivke, ki opisujejo dinamično stanje potapljača pod vodo.

4.2. Matlab

Za programsko izvedbo smo izbrali orodje Matlab podjetja MathWorks. Omogoča enostavno

pisanje programa, izvajanje različnih matematičnih operacij, risanje grafov ter grafični prikaz

rezultatov in tudi animacij. Program napišemo v datoteko s končnico m, ali pa ga kar pišemo

v ukaznem oknu. Pisanje programa v m-datoteko nam omogoča, da ga lahko pozneje

20

Page 26: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

poljubnokrat spreminjamo in izvajamo. V ukaznem oknu pa lahko hitro izvedemo poljuben

ukaz [24].

4.2.1. Zahteve programa Matlab

Za zagon programa Matlab je potreben operacijski sistem Windows ali Linux. Zaradi

zahtevnega risanja, računanja in programa Matlab je potreben hitrejši računalnik, ranga

Pentium IV in večja količina spomina, vsaj 512 MB [24].

4.2.2. Uporabniški vmesnik Matlaba

Uporabniški vmesnik (slika 3), imenovan Matlab Desktop, omogoča uporabniku enostavno

uporabo in pregled nad programi in spremenljivkami. Ukazno okno (Command Window)

omogoča izvajanje ukazov in priklic drugih oken. Ukazi, ki jih izvedemo, se hranijo v

Command History. Od tod jih lahko ponovno prikličemo, ali shranimo v datoteko. Katere

spremenljivke pa uporabljamo in njihove vrednosti, pa lahko pogledamo v oknu Workspace.

Brskanje po datotekah in področjih nam omogoča okno Current Directory. Lahko pa brskamo

tudi v ukaznem oknu z DOS/Linux ukazi, kot jih poznamo iz komande lupine [25].

Slika 3: Uporabniški vmesnik programa Matlaba [24]

4.3. Uporabniški vmesnik simulacije

Uporabniški vmesnik za nadzor simulacije je sestavljen iz dela, kjer se prikazuje gibanje in iz

dela za nadzor nad potapljačem. Pred zagonom simulacije nastavimo konstante, kot so teža

21

Page 27: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

potapljača, želena globina potapljanja, velikost jeklenke, uteži in debelina obleke. Lahko

dodamo še kaj se bo risalo, oziroma, kje se bo izpisovalo v ukaznem oknu. Bolj natančne

nastavitve pa lahko določimo v samem programu. V programu lahko izberemo poljubno

fizikalno količino, katero program računa in jo nato prikažemo za vsak čas simulacije. Po

vseh nastavitvah lahko zaženemo simulacijo s pritiskom na gum Run.

Vloga uporabniškega vmesnika je zagotoviti lažje in preglednejše spremljanje dogajanja pri

fizikalni simulaciji potapljanja in se prikaže po inicializaciji spremenljivk za uporabniški

vmesnik (slika 4), ki je razdeljen na štiri dele: izris, parametri, konstante in nadzor.

Slika 4: Zaslon kot ga po inicializaciji prikaže uporabniški vmesnik

4.3.1. Prikaz gibanja

Prikaz gibanja in lege potapljača je predstavljen z vektorskim poljem, kjer se v vodoravni

smeri spreminja čas, lega in smer vektorja. V navpični smeri pa ponazarjata globino, na kateri

se potapljač nahaja in njegovo morebitno hitrost gibanja v navpični smeri (slika 5).

22

Page 28: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Slika 5: Prikaz gibanja in lege potapljača.

S kljukico pri črki A izberemo možnost animacije. To pomeni, da se čas spreminja po osi-x.

Z izbiro črke Y, izberemo, da se celotno dogajanje prikazuje na ekranu.

4.3.2. Parametri

Za lažje spremljanje potapljača, pa se lahko rišejo različni parametri, kot je hitrost, ki je

predstavljena s smerjo in velikostjo. Nekaj od teh parametrov lahko vidimo na sliki 6.

Slika 6: Parametri simulacije

Pri nastavitvah parametrov lahko nastavljamo različne načine risanja in izpisovanja.

Nastavljamo lahko, s katerimi parameteri se bo risalo, relativno risalo ali izpisovalo v

ukaznem oknu. Želene parametre pa lahko na enostaven način dodajamo in odvzamemo v

programu.

23

Page 29: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

4.3.3. Konstante

Pomembnejše konstante nam program predlaga sam in jih lahko obdržimo, ali pa spremenimo

na želeno vrednost (slika 7). Po spremembi vrednosti simulacijo zaženemo z novimi

vrednostmi.

Slika 7: Konstante, ki opisujejo stanje in značilnosti simuliranega potapljača.

4.3.4. Nadzor

Zadnji del je namenjen za nadzor dihanja, krmiljenje kompenzatorja plovnosti in programa

(slika 8). Omogoča nastavljanje hitrosti in zaustavljanja dihanja. To je tudi na nazoren način

prikazano. Kompenzator plovnosti lahko praznimo, ali polnimo z jeklenko. Program lahko

tudi ustavimo in ponovno zaženemo simulacijo.

Slika 8: Upravljanje simulacije

4.4. Zgradba simulacijskega vmesnika

Po zagonu programa v programskem okolju Matlab se prikaže uporabniški vmesnik fizikalne

simulacije plovnosti. V tem trenutku je začela delovati glavna zanka. Namen glavne zanke je,

da lahko prek uporabniškega vmesnika nadziramo simulacijo (programska koda 1).

Initialise GUI

24

Page 30: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

while (dokler se program ne konča){ if (če je dihanje vključeno) izračunaj volumen v pljučih in jeklenki

if (simulacija teče) preveri stanje gumbov kompenzatorja plovnosti posodobi vrednosti volumna v kompenzatorju plovnosti in jeklenki

if (izračuna čas simulacije) izračun fizikalnih enačb nariši in izpiši vrednosti spremenljivk shrani spremenljivke sleep (počakaj, da se doseže realni čas)}

Programska koda 1: Pseudo koda glavne zanke

Glavna zanka se izvaja ves čas programa in se konča, ko končamo s programom[1].

Pomemben del v programu je realni čas (programska koda 2).

% Ažuriranje ure (in morebiten premor)% Preverimo porabljen računski čas za zadnji cikel glavne zanke.t.Loop = toc;

% Če smo porabili manj časa, kot bi naj trajal en odsek realnega časaif t.Loop < t.dt % v simulaciji, potem počakamo na naslednji časovni trenutek. pause(t.pause+t.dt - t.Loop); end

% Pomik na naslednji časovni trenutek v simulacijit.t = t.t + t.dt; tic;

Programska koda 2: Ažuriranje ure

Nadaljnje delovanje programa se krmili prek podprogramov, ki skrbijo za risanje

spremenljivk, izračun spremenljivk (glavni fizikalni del), shranjevanje spremenljivk, ponovno

nastavljanje spremenljivk in posodabljanje spremenljivk v uporabniškem vmesniku

(programska koda 3).

if t.dti == 0 % Števec vmesnih iteracij je odštel. MainVBC('Recalculate'); % Izračunamo nove vrednosti modela. MainVBC('UpdateUIValues');% Ažuriramo podatke za GUI. MainVBC('StoreModel'); % Shranimo vse trenutne vrednosti modela. MainVBC('Plot'); % Narišemo zahtevane vrednosti parametrov % modela (iz predhodnih vrednosti in podatkov)

% Ponovno postavimo števec vmesnih iteracij glavne simulacijske zanke t.dti = t.dtI;

25

Page 31: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

p.d.ti = p.d.ti + t.dtM;end

set(ui.h.RunButton, 'String', ['Run (t = ' num2str(t.tM,'%5.1f') ' s)']);,t.tM = t.tM + t.dt; % Povečamo cas.

%Odštejemo števec vmesnih iteracij (do naslednjega izračuna).t.dti = t.dti - 1;

Programska koda 3: Klicanje podprogramov

V glavnem fizikalnem delu se izračunavajo trenutna stanja spremenljivk pri potapljaču.

Izračunavajo se mase, volumni, tlaki, sile za jeklenke, potapljača in kompenzatorja plovnosti.

Ti izračuni omogočajo dokaj enostavno nadziranje potapljača s pomočjo fizikalnih zakonov.

4.5. Podatkovni model

V programu je uporabljeno veliko število parametrov in konstant. Da olajšamo branje in

poenostavimo pisanje, smo uvedli strukturiranje parametrov in konstant (tabela 3).

Tabela 3: Razvrstitev spremenljivk

Tip Opist Časovne (time) spremenljivke (simulacija, dihanje, realni čas)m Spremenljivke za kontrolo modela (zastava, indikator)s Spremenljivke za shranjevanje (storage) vseh spremenljivk v modelu

p.d, c.d Parametri in konstante, ki se nanašajo na potapljača (diver)p.r, c.r Parametri in konstante, ki se nanašajo na dihanje (respiration)p.b, c.b Parametri in konstante, ki se nanašajo na kompenzator plovnosti (BCD)p.t, c.t Parametri in konstante, ki se nanašajo na jeklenko (tank)

26

Page 32: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

5. PRIMERI DELOVANJA SIMULACIJE IN REZULTATI

5.1. Testiranje modela

Simulacijo smo že med samim razvojem, kakor tudi kasneje testirali na trivialnih primerih,

katerih izid lahko vnaprej predvidimo.

Tako smo spreminjali količino dodatne obtežitve z utežmi, ali debelino potapljaške obleke in

to primerjali s potrebnim volumnom zraka v kompenzatorju plovnosti, spreminjali smo

velikost ali tlak v jeklenki in spremljali vpliv tega na dolžino potopa in podobno.

Eden izmed dinamičnih testov je tudi na začetku nevtralno ploven potapljač, kateremu se

zaradi dihanja zmanjšuje količina zraka v jeklenki in povečuje plovnost.

Prav tako smo med testi izklopili določene operacije kot npr. dihanje in spremljali zmeraj

hitrejše padanje na začetku nekoliko negativno plovnega potapljača, ali pospešeno dvigovanje

v obratnem primeru.

Prav tako smo nerealno povečali amplitudo dihanja in s tem povečali kratko časovni odziv

potapljačeve plovnosti, kar je vodilo do nekontroliranega spuščanja potapljača (plovnost se

potapljaču na začetku zmanjša, zato tone in se mu zmanjša volumen obleke in kompenzatorja

plovnosti, kar mu plovnost dodatno zmanjša in ob naslednjem vdihu se padanje več ne

ustavi), kar je ena nevarnejših situacij med realnim potapljanjem.

5.2. Simulacija plovnosti

V nadaljevanju si bomo ogledali nekaj primerov uporabe modela simulacije in tipične

rezultate, ki jih pri tem dobimo.

Na sliki 9 lahko vidimo primer simulacije izbranega potopa. Rdeči graf prikazuje dihanje

potapljača, temno moder graf prikazuje mesto potapljača, svetlo moder graf pa prikazuje smer

in velikost hitrosti potapljanja. Na sliki je lepo vidno, kako se spreminja velikost hitrosti

potapljanja.

27

Page 33: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Slika 9: Prikaz lege, hitrosti in dihanja potapljača.

Na sliki 10 je prikazan začetni primer, ko potapljač lebdi na gladini vode. V tem primeru ima

pozitivno plovnost, zato dihanje ne vpliva na njegovo lego, kar je razvidno iz spodnjega grafa.

V drugem delu grafa je prikazan primer, ko je potapljač izpustil zrak iz kompenzatorja in se je

začel potapljati. Potop upočasni, ko v kompenzator spusti zrak iz jeklenke, kar je razvidno na

zadnjem delu grafa skrajno desno.

Slika 10: Lebdenje v vodi in potop

28

Page 34: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Globina potopa je omejena z globino vode, kar v programu nastavimo na začetku z ustrezno

konstanto. Na sliki 11 je prikazan primer, ko potapljač doseže dno. Tukaj miruje, vse dokler

zaradi polnjenja kompenzatorja ne doseže pozitivne plovnosti, ko se prične dvigovati nazaj

proti površini.

Slika 11: Ustavljanje potapljača na dnu

Slika 12 kaže primer, ko se kompenzator polni le do trenutka dvigovanja potapljača, kljub

temu pa se ne dviga z enakomerno hitrostjo, temveč pospešeno, saj se z zmanjševanjem

globine povečuje celoten volumen potapljača in s tem plovnost.

Slika 12: Pospešeno dvigovanje potapljača

29

Page 35: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Zanimivo je ta rezultat primerjati z enakimi pogoji, vendar na globini 40 m. V tem primeru je

dvigovanje veliko bolj enakomerno, saj je tam pri enaki višinski razliki relativna sprememba

tlaka veliko manjša in zaradi tega tudi manjši vpliv pozitivne povratne zanke na povečevanje

plovnosti.

Na sliki 13 je primer, ko simuliramo potop do določene globine. Iz grafa je lepo razvidno,

kako težko je doseči nevtralno plovnost, tj. potapljača umiriti na dani globini. Pri realnem

potopu je to sicer nekoliko lažje zaradi plavanja, vendar nam prav ta primer lepo kaže, kako

pomembno didaktično orodje je model simulacije plovnosti, še posebej na začetnih

potapljaških tečajih [1].

.

Slika 13: Ustavljanje potapljača na globini

5.3. Povezava programa s strojno opremo

Simulacijo potapljača na tej stopnji v glavnem krmilimo preko ukazov z miško, razvito pa je

tudi nekaj strojne opreme opremljene z ustreznimi senzorji, ki lahko tipajo stanje in odziv

človeškega telesa.

Kot primer navedimo strojni dodatek za upravljanje (slika 14), preko katerega lahko polnimo,

ali praznimo kompenzator plovnosti, pri čemer senzor zaznava lego inflatorja. Pri realnem

potapljanju lahko kompenzator praznimo le, če je cev inflatorja navpično dvignjena nad sam

kompenzator, v nasprotnem primeru namreč pride do sifona in zrak ne more uhajati iz

kompenzatorja [1].

30

Page 36: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

Slika 14: Strojni dodatek za upravljanje računalniške simulacije [1]

5.4. Uporaba simulacije pri potapljaških tečajih

Naštete možnosti fizikalne simulacije plovnosti zagotavljajo široko uporabno vrednost

modela tudi na potapljaških tečajih. Ob njegovem osnovnem namenu, dinamičnem

spremljanju razmer in lege potapljača, namenjeni individualni simulaciji posameznikom ima

model tudi veliko demonstracijskih možnosti.

Tako lahko inštruktorji tečajnikom na tečajih potapljanja nazorno prikažejo odziv potapljača

pod vodo na hitro polnjenje ali praznjenje kompenzatorja, nekontrolirane dvige ali spuste

zaradi pozitivnih povratnih zank pri plovnosti (globlje, kot je potapljač, bolj ga stisne in bolj

se mu plovnost zmanjša, zaradi česar še hitreje tone in obratno, višje kot je, bolj se mu

volumen poveča, še posebej v kompenzatorju, zaradi česar se še hitreje dviguje).

Prav tako lahko inštruktor tečajnikom demonstrira, kako pomembna je pravilna izbira

potapljaške opreme, npr. koliko težje je zagotavljati nevtralno plovnost, v kolikor na začetku

izbere preveč dodatne obtežitve in posledično to kompenzira z večjim volumnom zraka v

kompenzatorju [1, 26].

31

Page 37: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

6. ZAKLJUČEKPo pregledu literature in znanih računalniških programov nismo nikjer zasledili simulatorja

plovnosti potapljačev, zato smo razvili učinkovito orodje in didaktični pripomoček, ki

zapolnjuje to vrzel. Vzporedno z razvijanjem programa in fizikalnega modela je potekalo tudi

razvijanje strojnih dodatkov, kot je upravljanje kompenzatorja plovnosti in spremljanje

dihanja potapljača. Razvili smo primeren uporabniški vmesnik, ki omogoča enostaven prikaz

velikega števila parametrov. Pomembno je tudi, da lahko poljubno spreminjamo, katere

parametre želimo prikazovati. Program omogoča tudi testiranje in prikaz odziva potapljača v

razmerah, ki jih v realnem potopu ni mogoče izvesti, ali njihova realizacije ne bi bila varna za

potapljače.

Simulacija v največji možni meri simulira fizikalni razvoj vseh merodajnih količin med

potapljanjem, v veliki meri pa smo uspeli upoštevati tudi fiziološke odzive telesa.

Računalniški program napisan v Matlabu lahko enostavno prenesemo v druge programske

jezike. Sam program Matlab v novejših verzijah omogoča prenos programa na internet s

pomočjo MATLAB Web Server. Za ta prenos potrebujemo operacijski sistem Windows

Server ali primerno verzijo Linuxa. Lahko pa se prenese tudi v programski jezik Java, kjer je

moč enostavno pripraviti prikaz na internetu in se s tem razširi uporabnost programa. Program

se lahko prilagodi do tolikšne mere, da se predstavi kot didaktična igrica. V tem primeru

postane zanimiva tudi za osnovno in srednjo šolo. Učenci in dijaki ob igri spoznavajo

fizikalne količine in zakone.

Z manjšimi spremembami je mogoče program prenesti v VRML okolje, kar je bil tudi prvotni

namen. V VRML okolju postane potapljanje bolj realno, ker omogoča pogled v 3 D svet. Z

uporabo 3D čelade, pa postane še to bolj zanimivo, ker spremlja vsak naš gib. Z dodajanjem

drugih zunanjih komponent, kot je spremljanje dihanja potapljača in upravljanje

kompenzatorja plovnosti, se lahko dodatno razširi uporabnost programa. Program je

zastavljen tako, da ga je enostavno nadgraditi z novimi aplikacijami (npr. simulacija

dekompesijske bolezni, zunanje dihanje, plavanje potapljača itd.) ali izboljšati obstoječe (npr.

vizualizacija potapljača kot objekta). Prav tako omogoča dopolnitve s področja potapljanja,

npr. z opozarjanjem na nevarnost barotravme pljuč pri prehitrem dvigovanju z zadrževanjem

diha, ali manjša ventilacija kisika pri zadihanosti.

32

Page 38: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

7. LITERATURA1. D. Korošec, 1M. Slavinec, D. Bernad, K. Prnaver: Architecture of the virtual training

system for buoyancy control, (Faculty of Electrical Engineering and Computer Science, 1Faculty of Education, Department of Physics, University of Maribor, JOINT 7. International Immersive Projection Technologies Workshop and the 9. Eurographics Workshop on Virtual Environments (IPT/EGVE 2003), May 22./23. 2003 in Zurich, Switzerland).

2. L. Škerget: Mehanika tekočin, (V Mariboru: Tehniška fakulteta, v Ljubljani: Fakulteta za strojništvo, 1994).

3. J. Strnad: Fizika 1: Mehanika, toplota, (Društvo matematikov, fizikov in astronomov Slovenije, Ljubljana , 1995).

4. R. Kladnik: Visokošolska fizika 1. del: Mehanski in toplotni pojavi, (DZS, Ljubljana, 1985).

5. I. Urh: Potapljač: potapljaški priročnik, (Slovenska potapljaška zveza, Ljubljana, 2002).

6. M. Ambrožič, E. Karič, S. Kralj, G. Planinšič, M. Slavinec, A. Zidanšek: Fizika, narava, življenje 1, (DZS, Ljubljana, 2000).

7. K. Johnson, Fizika: preproste razlage fizikalnih pojavov, (Tehniška založba Slovenije, Ljubljana, 1996).

8. B. Vuga: Otroško potapljanje, Potapljač 1, št. 3, 25, 2002.9. B. Vuga: Otroško potapljanje: pravila Slovenske potapljaške zveze za otroško

potapljanje, (Slovenska potapljaška zveza, Ljubljana, 2003).10. B. Vuga: Otroško potapljanje: gradivo za inštruktorski seminar, (Slovenska

potapljaška zveza, Ljubljana, 2003).11. T. Lampič: Potapljanje: Razgibajmo življenje, (Športna zveza Slovenije, Ljubljana,

1992).12. V. Verdnik: Potop v modro, ( V. Verdnik … et al., Ljubljana, 1995).13. Z. Bohte: Numerične metode, (Društvo matematikov, fizikov in astronomov

Slovenije, Ljubljana, 1991).14. I. Vidav: Višja matematika 2, (DZS, Ljubljana, 1979).15. I. Kuščer: Matematika v fiziki in tehniki, (Društvo matematikov, fizikov in

astronomov, Ljubljana, 1994).16. M. Slavinec: Potapljanje, Presek, št. 2, 66, 1992/93.17. M. Slavinec: Potapljanje, Presek 11. Ljubljana, 20-30 str., 1995.18. Tečaj potapljanja za CMAS P-1, (Slovenska potapljaška zveza, Ljubljana, 1986).19. http://www.spz.si , (Slovenska potapljaška zveza).20. R. Resnick, D. Halliday, K. S. Krane: Physics: Volumen 1, (J. Wiley & sons, New

York, 1992).21. V. Udir: Izvajanje, preverjanje in ocenjevanje eksperimentov pri pouku fizike v

osnovni šoli: priročnik za učitelje fizike, (Zavod Republike Slovenije za šolstvo, Ljubljana, 1999).

22. J. Graham, P. Mellett, J. Challoner, S. Angliss: Prvi korak v znanost z več kot 150 vznemirljivimi poskusi, (Pomurska založba, Murska Sobota, 2002).

23. N. Žonta, V. Kariž Merhar, T. Lazič Ponikvar, M. Trampuš, R. Snoj, U. Boltin, L. Babič, V. Kožuh, V. Udir, zbrala in uredila V. Kariž Merhar: Zbirka nalog in primerov načrtovanja iz fizike, (Zavod Republike Slovenije za šolstvo, Ljubljana, 2003).

24. http://www.mathworks.com/ , (Matlab).

33

Page 39: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

25. B. Jurčič-Zlobec: Matlab z uvodom v numerične metode, (Fakulteta za elektrotehniko, Ljubljana, 2005).

26. B. Potočnik, D. Heric, T. Tomažič, D. Zazula, D. Bernad, B. Cigale, R. Cellard: SimBio - a generic environment for bio-numerical simulation: final evaluation & validation report, 5th European Framework Programme, the IST programme, (Fakulteta za elektrotehniko, računalništvo in informatiko, 2003).

34

Page 40: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

8. PRILOGA

function MainVBC(Action)% =======================================================================%% MainVBC 3.2%% Programsko ogrodje fizikalnega modela VBC% (C) Dean, Dani, Mico 2002-05%% Globalne spremenljivke:%% ui = struktura s podatki uporabniskega vmesnika% .h = rocice (handles)% .p = opisi (ime, vrednost, enota...) para.modela, ki jih je mogoce izrisati% .c = opisi (ime, vrednost, enota...) kons.modela, ki jih je mogoce izrisati%% p = parametri (spremenljivke) modela% c = konstante modela% .d = diver (osnovni param, in fiz. konst., ki se navezujejo na potapljaca)% .r = respiration (parametri, ki se navezujejo na dihanje - pljuca)% .b = buoyancy control device (param., ki se navezujejo na kompenzatorja)% .t = tank (parametri, ki se navezujejo na jeklenko)% .s = obleka potapljaca (suit thickness)% .w = utezi potapljaca(svinci) (weight)% .e = masa ostale opreme (equipment)%% t = casovne spremenljivke modela%% m = kontrolne spremenljivke modela%% s = storage (shranjene vrednosti spremenljivk modela)% .i = indeks simulacijskega cikla za izracun modela% .t = vektor casa% .p = matrika vrednosti spremenljivk (tistih, ki se izrisujejo)%global ui p c t m s

if nargin < 1 % -------------------------------------------------------------------------- % % Inicializacija spremenljivk fizikalnega modela % % ---------------------------------------------------------------------------

% Casovne spremenljivke [s] t.t = 0; % Cas od zagona programa t.dt = 0.1; % Sprememba simulacijskega casa t.tM = 0; % Cas od pricetka preracunavanja modela t.dtM = 0.4; % Sprememba simulacijskega casa - veckratnik t.dt! t.dtI = round(t.dtM/t.dt); % St. vmesnih iteracij glavne t.dti = 0; % Stevec stevila vmesnih iteracij t.tR = 0; % Cas za simulacijo dihanja t.Loop = 0; % Realni cas (stoparica t.pause = 0; % dodatna pause, za lazje spremljanje modela p.d.ti = 0; t.epsilon = 0; % Kontrolne spremenljivke za tok programa m.Running = 0; % Zastavica za preracun modela m.Respiration = 0; % Zastavica za simulacijo dihanja m.Quit = 0; % Zastavica za konec programa m.Animacija = 1; % Zastavica za animacijo (premicen KS) m.Tank = 0; % Zastavica za prazen tank % Spremenljivka za hranjenje vrednosti izracunanih parametrov modela s.i = 0; % Stevec izracunov (skalar) s.t = []; % Cas izracunov (vektor) [s] s.p = []; % Vrednosti parametrov (matrika) % PARAMETRI % Fizikalni p.d.h = 0; % (x) Globina potapljaca [m] p.d.v = 0; % Hitrost potapljaca [m/s] p.d.vPrev = 0; % Hitrost potapljaca v prejsnjem casovnem trenutku [m/s] p.d.dv = 0; % Sprememba hitrosti [m/s] p.d.a = 0; % Pospesek potapljaca [m/s^2] p.d.Fr = 0; % Sila upora [N] p.d.V = 0; % skupen volumen (prej fisken volumen) [l] p.d.Vfiksen = 0; % fiksen volumen p.d.Vcas = 0; % volumen odvisen od casa p.d.r = 0; % Polmer krogle, s katero aproksimiramo potapljaca [m]

35

Page 41: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

p.d.Fg = 0; % sila teze potapljaca [N] p.d.Fb = 0; % izracunamo silo vzgona (buoyant force)= [N] p.d.ph = 1; % tlak v odvistnosti od globine [bar] p.d.phPrev = p.d.ph; % prejsnji tlak v odvistnosti od globine [bar] p.d.smer = 0; % smer gibanja gor = 1, dol = -1 p.d.m = 0; % skupna masa p.d.mfiksna = 0;% fiksna masa p.d.mcas = 0; % masa odvisna od casa

% Za simulacijo dihanja p.r.f = 8; % Frekvenca dihanja (respiration rate) [vdihi/min] p.r.V = 2.5; % Volumen zraka v pljucih (lung volume) med dihanjem [l] p.r.Vs = 0; % V. zraka v pljucih (lung volume) med dihanjem [l] - slider p.r.Vsh = 0; % Volumen zraka v pljucih (lung volume) odvisen od globine [l]

% Za BCD p.b.V = 2; % V. zraka v kompezatorju plovnosti ce bi bili na povrsini [l] p.b.Vk = 2.6001; % (Vk) V. zraka v kompenzatorju [l]potapljac je v ravnovesju p.b.Vh = 2.60001; % (Vkx) V. zraka v kom.plov. v odvisnosti od globine [l] p.b.dV = 0; % Trenutni pretok iz/v BCD [l/s]

% Za jeklenko p.t.V = 0; % Volumen jeklenke (pozneje izracunamo) p.t.dV = 0; % razlika med p.t.ma = 2.6; % masa zraka v jeklenki [kg] p.t.p = 0; % p.t.p pritisk zraka v jeklenki p.t.desetbar = 10; % Izpise obvestilo, da je se 10 barov v jeklenki p.t.rezerva = 50; % Jeklenka je na rezervi in izpise obvestilo

% Za obleko p.s.V = 0; % Volumen obleke(suit) pozneje izracunamo

% KONSTANTE % Fizikalne c.d.g = 10; % Gravitacijski pospesek [m/s^2] c.d.m = 75; % Masa potapljaca z opremo [kg] c.d.p0 = 100000; % Tlak na povrsini [Pa] c.d.ro = 1000; % Gostota vode [kg/m^3] c.d.mi = 0.0013; % Viskoznost [kg/ms] c.d.hNull = 0; % Minimalna globina [m] c.d.hMin = 0; % Minimalna globina [m] c.d.hMax = -40; % Maksimalna globina [m] c.d.vMin = 0; % Hitrost na dnu oz na povrsini [m/s] c.d.aMin = 0; % Pospesek na dnu oz. povrsini [m/s^2] c.d.Fepsilon = 10;% ustavljanje potapljaca [N] c.d.vepsilon = 0.1; % ustavljanje potapljaca [m/s]

% Za simulacijo dihanja c.r.fMax = 60; % Maksimalna frekvenca dihanja [vdihi/min] c.r.VMax = 1.5; % Maksimalni volumen pljuc (+/- od ravnovesja) [l]

% Za BCD c.b.VMax = 20; % Max volumen zraka v kompenzat.(pri normalnem tlaku) [m^3] c.b.VMin = 0; % Min volumen zraka v kompenzat.(pri normalnem tlaku) [m^3] c.b.fs = 8000; % Vzorcevalna frekvenca za zvok [Hz]

% Zvoka ob polnjenju in praznjenju kompenzatorja c.b.SoundIn = 0.2 * randn(1, c.b.fs * 0.5*t.dt); c.b.SoundOut = 0.3 * filter(ones(1,4)/4, 1, randn(1, c.b.fs * 0.5*t.dt));

% Za jeklenko c.t.p = 200; % Pritisk zraka v jeklenki [bar] c.t.dVp = 1; % Pretok zraka iz jeklenke [l/s] c.t.dVm = 2; % Pretok zraka iz jeklenke [l/s] c.t.V = 12; % Volumen jeklenke [l] pri talku 1 bar c.t.m = c.t.V * 1.5; % masa jekelnke (c.t.V * 1.5) [kg] p.t.prezerva = 50; %rezerva v jeklenki je 50 barov p.t.pnull = 0; % jeklenka je prazna

% Za obleko (suit) c.s.t = 5; % debelina obleke potapljaca (suit thickness) [mm] c.s.k = 0.5; % konstanta, ki pove, da se spreminja samo pol cloveka

% Za utezi (weight) c.w.m = 0; % dodatne utezi potap.,ki je enaka predlagani masi utezi [kg]

% Za ostalo opremo c.e.m = 8; % masa ostale opreme [kg] % Izracunamo masa svinca, katero bomo predlagali % Racunamo na tem mestu, ker se naj vidi ob zagonu programa p.w.ms = c.s.t * c.d.m * 3 / 100; c.w.m = p.w.ms; % pritisk zraka v jeklenki p.t.V = c.t.V * c.t.p; p.t.p = p.t.V / c.t.V; % p.t.p pritisk zraka v jeklenki

36

Page 42: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

%---------------------------------------------------------- % nastavimo volumen komenzatorja na enko vrednost kot je masa % jeklenke. Pristejemo se 0.0001 zaradi zaokroevanja p.b.Vh = (c.t.V * c.t.p * 1.3 / 1000) + 0.0001; p.b.Vk = (c.t.V * c.t.p * 1.3 / 1000) + 0.0001; % -------------------------------------------------------------------------- % Inicializacija uporabniskega vmesnika % Rocice (handles) vseh elementov uporabniskega vmesnika so shranjene % v spremenljivku uih (kratica od 'User Interface Handles', tip: struct) ) % Najprej kreiramo okno ... ui.h.fig = figure(... 'Units', 'Normalized',... 'Position',[0.1 0.1 0.75 0.8], ... 'Name', 'Potapljac 3.1 (C) 2002-05 D&D&M');

% ... in v njem grafikon za izris poteka parametrov ui.h.graf = axes('Position', [0.05 0.05 0.7 0.90]); hold on; title([' \it\bf pot: \rm Fu+Fvzg=Fg \bf|\it\bf dvig: \rm Fvzg=Fg+Fu']); % --------------------------------------------------------------------------- % PARAMETER % V prvem delu inicializacije uporabniskega vmesnika kreiramo kontrolnike za % tiste parametre modela, ki jih je mogoce narisati x1 = 0.995; y1 = 0.972; % Izhodiscne koordinate za prvi dy = 0.0285; % Vertikalni razmak med vrsticami dx = 0.005; % Vodoravni razmik med komponentami h = 0.027; % Visina kontrolnikov hp = 0.1; % Visina popup menija

nW = 0.08; % Sirina nazivov parametrov ('text', nameWidth) pW = 0.015; % Sirina 'plot' polja ('checkbox', plotWidth) vW = 0.05; % Sirina 'value' polja ('edit', valueWidth) uW = 0.04; % Sirina enot ('text', unitWidth) x1Max = nW + 3*pW +vW + uW + 5*dx; % Skupna sirina bloka kontrolnikov

% Vsi opisi parametrov modela so shranjeni v spremenljivki 'ui.p' ui.p = struct('NoParam', 11,... 'Name', {{'h' 'v' 'p.t.p' 'p.d.ph' 'Fv=p.d.Fb' 'Fu=p.d.Fr' 'p.d.Fg'

'smer' 'pred.utezi' 'p.r.Vs' 'p.b.Vh' }},... 'Var', {{'p.d.h' 'p.d.v' 'p.t.p' 'p.d.ph' 'p.d.Fb' 'p.d.Fr' 'p.d.Fg'

'p.d.smer' 'p.w.ms' 'p.r.Vs' 'p.b.Vh'}},... 'Value', [p.d.h p.d.v p.t.p p.d.ph p.d.Fb p.d.Fr p.d.Fg p.d.smer

p.w.ms p.r.Vs p.b.Vh],... 'Unit', {{'m' 'm/s' 'bar' 'bar' 'N' 'N' 'N' '' 'kg' 'l' 'l'}},... 'Plot', [1 1 0 0 0 0 0 0 0 1 0 0 0 0],... 'PlotRel', [0 1 0 0 0 0 0 0 0 0 0 0 0 0],... 'Print', [0 0 0 0 0 0 0 0 0 0 0 0 0 0],... 'PlotPat', {{'b.-' 'cd-' 'ys:' 'ms:' 'g.-' 'g.-' 'b.-' 'cd-' 'ys:'

'r.-' 'cd.-' 'b.-'}});

s.pName = ui.p.Name; % Imena parametrov zabelezimo tudi v strukturo za %shranjevanje vrednosti parametrov modela

uicontrol(... % Naslov 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [x1 - x1Max, y1, x1Max, h],... 'HorizontalAlignment', 'center',... 'FontWeight', 'bold',... 'String', 'PARAMETERS');

for i = 1 : ui.p.NoParam % Za vsak parameter kreiramo 4 kontrolnike y = y1 - i * dy; % Izpis imena spremenljivke % (ozadje enake barve kot krivulja na grafikonu) ui.h.p.Name(i) = uicontrol(... 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [x1 - x1Max, y, nW, h],... 'HorizontalAlignment', 'right',... 'BackgroundColor', ui.p.PlotPat{i}(1),... 'FontWeight', 'bold',... 'String', ui.p.Name(i)); % Kljukica, ki oznacuje, da se vrednost parametra izrisuje na grafu ui.h.p.Plot(i) = uicontrol(... 'Style', 'Checkbox',... 'Units', 'Normalized',... 'Position', [x1 - x1Max + nW + dx, y, pW, h],... 'Value', ui.p.Plot(i),... 'Callback', 'MainVBC(''UpdateModelValues'')'); % Kljukica, ki oznacuje, da se vrednost parametra izrisuje na grafu % relativno kot vertikalni vektor glede na prvi parameter (h = globina) ui.h.p.PlotRel(i) = uicontrol(... 'Style', 'Checkbox',... 'Units', 'Normalized',... 'Position', [x1 - x1Max + nW + (dx + pW) + dx, y, pW, h],...

37

Page 43: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

'Value', ui.p.PlotRel(i),... 'Callback', 'MainVBC(''UpdateModelValues'')'); % Kljukica, ki oznacuje, da se vrednost parametra izrisuje na grafu ui.h.p.Print(i) = uicontrol(... 'Style', 'Checkbox',... 'Units', 'Normalized',... 'Position', [x1 - x1Max + nW + 2*(dx + pW) + dx, y, pW, h],... 'Value', ui.p.Print(i),... 'Callback', 'MainVBC(''UpdateModelValues'')'); % Izpis stevilcne vrednosti parametra ui.h.p.Value(i) = uicontrol(... 'Style', 'Edit',... 'Units', 'Normalized',... 'Position', [x1 - x1Max + nW + 3*(dx + pW) + dx, y, vW, h],... 'String', num2str(ui.p.Value(i)),... 'Callback', 'MainVBC(''UpdateModelValues'')'); % Izpis merske enote parametra ui.h.p.Unit(i) = uicontrol(... 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [x1 - x1Max + nW + 3*(dx + pW) + dx + vW + dx, y, uW,

h],... 'HorizontalAlignment', 'left',... 'String', ui.p.Unit(i)); end %end za: for % Onemogocimo izbiro relativnega izrisa prvega parametra (samega na sebe!) set(ui.h.p.PlotRel(1), 'Enable', 'off') % --------------------------------------------------------------------------- % KONSTANTE % V drugem delu inicializacije kreiramo kontrolnike za konstante modela

y2 = y1 - (ui.p.NoParam+1.0)*dy; % Izhodiscne x2Max = nW + dx + vW + dx + uW; % Skupna sirina bloka kontrolnikov % Vsi opisi konstant modela so shranjeni v spremenljivki 'ui.c' ui.c = struct('NoConst', 9,... 'Name', {{'m' 'hMax' 'c.t.dV' 'jeklenka' 'tlak' 'd obleke' 'utezi'

'F epsilon' 'c.d.vepsilon'}},... 'Var', {{'c.d.m' 'c.d.hMax' 'c.t.dV' 'c.t.V' 'c.t.p' 'c.s.t' 'c.w.m'

'c.d.Fepsilon' 'c.d.vepsilon'}},... 'Value', [c.d.m c.d.hMax c.t.dV c.t.V c.t.p c.s.t c.w.m c.d.Fepsilon

c.d.vepsilon],... 'Unit', {{'kg' 'm' 'l' 'l' 'bar' 'mm' 'kg' 'N' 'm/s'}});

uicontrol(... % Naslov 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [x1 - x2Max, y2, x2Max, h],... 'HorizontalAlignment', 'center',... 'FontWeight', 'bold',... 'String', 'CONSTANTS');

for i = 1 : ui.c.NoConst % Za vsako konstanto kreiramo 3 kontrolnike y = y2 - i * dy; % Izpis imena konstante ui.h.c.Name(i) = uicontrol(... 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [x1 - x2Max, y, nW, h],... 'HorizontalAlignment', 'right',... 'FontWeight', 'bold',... 'String', ui.c.Name(i)); % Izpis stevilcne vrednosti konstante modela ui.h.c.Value(i) = uicontrol(... 'Style', 'Edit',... 'Units', 'Normalized',... 'Position', [x1 - x2Max + nW + dx, y, vW, h],... 'String', num2str(ui.c.Value(i)),... 'Callback', 'MainVBC(''UpdateModelValues'')'); % Izpis merske enote parametra ui.h.c.Unit(i) = uicontrol(... 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [x1 - uW, y, uW, h],... 'HorizontalAlignment', 'left',... 'String', ui.c.Unit(i)); end % end za: for % --------------------------------------------------------------------------- % V tretjem delu inicializacije kreiramo kontrolnike za simulator dihanja y3 = y2 - (ui.c.NoConst + 1.3) * dy ; % Izhodiscne xs3 = (x2Max - dx) / 2; % Sirina drsnikov ys3 = 0.2; % Visina drsnikov hb = 1.3 * h; % Visina gumba x3Max = xs3 + dx + xs3; % Skupna sirina bloka kontrolnikov % Gumb za vklop in izklop simulacije dihanja ui.h.Respiration = uicontrol(...

38

Page 44: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

'Style', 'ToggleButton',... 'Units', 'Normalized',... 'Position', [x1 - x3Max, y3, x3Max, hb],... 'String', 'Respiration',... 'Value', m.Respiration,... 'Callback', 'global m; m.Respiration = ~m.Respiration;'); % Drsnik za nastavitev in izpis frekvence dihanje

ui.h.r.fText = uicontrol(... 'Style', 'Edit',... 'String', num2str(p.r.f, '%4.1f/min'),... 'Units', 'Normalized',... 'Position', [x1 - x3Max, y3 - dy, xs3, h]);

ui.h.r.fSlider = uicontrol(... 'Style', 'Slider',... 'Units', 'Normalized',... 'Position', [x1 - x3Max, y3 - dy - ys3, xs3, ys3],... 'Min', 0,... 'Max', c.r.fMax,... 'Value', p.r.f,... 'SliderStep', [.05 0.20],... 'CallBack', 'MainVBC(''UpdateRR'')'); % Drsnik za prikaz in izpis trenutnega volumna zraka v pljucih

ui.h.r.VText = uicontrol(... 'Style', 'Edit',... 'String', num2str(p.r.Vs, '%3.2f l'),... 'Units', 'Normalized',... 'Position', [x1 - xs3, y3 - dy, xs3, h]); ui.h.r.VSlider = uicontrol(... 'Style', 'Slider',... 'Units', 'Normalized',... 'Position', [x1 - xs3, y3 - dy - ys3, xs3, ys3],... 'Min', -c.r.VMax,... 'Max', c.r.VMax,... 'Value', p.r.Vs,... 'SliderStep', [.05 0.20]);

% --------------------------------------------------------------------------- % V cetrtem delu inicializacije kreiramo gumba za % polnjenje in praznjenje BCD-ja

y4 = y3 - hb - dy - ys3 - dy + h - dy + h; % Izhodiscne % Gumb za polnjenje BCD-ja ui.h.b.ButtonIn = uicontrol(... 'Style', 'ToggleButton',... 'Units', 'Normalized',... 'Position', [x1 - x3Max, y4, xs3, hb],... 'String', 'BCD +',... 'Value', 0,... 'Callback', 'MainVBC(''FillBCD'')');

% Gumb za praznjenje BCD-ja ui.h.b.ButtonOut = uicontrol(... 'Style', 'ToggleButton',... 'Units', 'Normalized',... 'Position', [x1 - x3Max + xs3 + dx, y4, xs3, hb],... 'String', 'BCD -',... 'Value', 0,... 'Callback', 'MainVBC(''EmptyBCD'')'); % --------------------------------------------------------------------------- % V petem, zadnjem delu inicializacije kreiramo se gumbe za nadzor simulacije

y5 = y4 - hb - dy + h; % Izhodiscne koordinate

% Gumba za resetiranje casa uicontrol(... 'Units', 'Normalized',... 'Position', [x1 - x3Max, y5, xs3, hb],... 'String', 'Reset',... 'Callback', 'MainVBC(''Reset'')');

% Gumb za vklop/izklop toka simulacije ui.h.RunButton = uicontrol(... 'Style', 'ToggleButton',... 'Units', 'Normalized',... 'Position', [x1 - x3Max + xs3 + dx, y5, xs3, hb],... 'String', 'Run',... 'Value', m.Running,... 'Callback', 'MainVBC(''Run'')');

% Gumb za izhod iz programa uicontrol(... 'String', 'Exit',... 'Units', 'Normalized',... 'Position', [x1 - x3Max, y5 - hb - dy/1.5, x3Max, 2*h],... 'CallBack', 'global m; m.Running = 0; m.Quit = 1; close;');

39

Page 45: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

% Kljukica za izbiro izhodisca casovne (x) osi na grafikonu % True = x os drsi v fiksnem oknu, False = cas se zacne pri 0 % Izpis merske enote parametra ui.h.Animation.text = uicontrol(... 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [0.01, 0.1, pW, h],... 'HorizontalAlignment', 'left',... 'String', 'A'); % gumb ui.h.Animation = uicontrol(... 'Style', 'Checkbox',... 'Units', 'Normalized',... 'Position', [0.03, 0.1, pW, h],... 'Value', 0);

% Kljukica za izbiro izhodisca casovne (Y) osi na grafikonu % True = x os drsi v fiksnem oknu, False = cas se zacne pri 0 % Izpis merske enote parametra ui.h.YFiksen.text = uicontrol(... 'Style', 'Text',... 'Units', 'Normalized',... 'Position', [0.01, 0.07, pW, h],... 'HorizontalAlignment', 'left',... 'String', 'Y'); % gumb ui.h.YFiksen = uicontrol(... 'Style', 'Checkbox',... 'Units', 'Normalized',... 'Position', [0.03, 0.07, pW, h],... 'Value', 0); % Konec inicializacije graficnega uporabniskega vmesnika % -------------------------------------------------------------------------- % Glavna zanka % V neskoncni glavni zanki izracunavamo novo stanje modela % in izrisujemo gibanje parametrov tic; % Zazenemo stoparico za merjenje porabljenega casa v eni

while ~m.Quit; % % Simulacija dihanja tece neodvisno od izracunavanja modela % if m.Respiration% m.Running % Izracunamo nov volumen zraka v pljucih p.r.Vs = c.r.VMax * sin(2 * pi * p.r.f/60 * t.tR); % zaokrozimo na 4 decimalke p.r.Vs = roundn(p.r.Vs,-4); % Azuriramo prikaz zraka v pljucih na drsniku in s stevilom set(ui.h.r.VSlider, 'Value', p.r.Vs); set(ui.h.r.VText, 'String', num2str(p.r.Vs, '%3.2f l')); t.tR = t.tR + t.dt; if (t.tR > gledanje_spremenjljiv) & (t.tR < (gledanje_spremenjljiv+1)) disp(['cas t.tR = ' num2str(t.tR)] ); gledanje_spremenjljiv=gledanje_spremenjljiv+10; end % ----------------------------------------------------- % PRAZNIMO JEKLENKO % pripravimo volumen za pravo spremembo casa p.r.Vs = p.r.Vs * t.dt; % zaokrozimo na 4 decimalke p.r.Vs = roundn(p.r.Vs,-4); % % pogledamo, ce smo vdihnili if p.r.Vs < 0 % izracunamo volumen vdiha na globini h p.r.Vsh = p.r.Vs * p.d.ph; p.t.V = p.t.V - abs(p.r.Vsh); p.t.p = p.t.V / c.t.V; % p.t.p pritisk zraka v jeklenki end end % end za: m.Respiration % Stanje jeklenke, rezaerva, prazno if p.t.p < p.t.prezerva %p.t.prezerva disp('UPS, Jeklenka je na rezervi'); text(0.1,0.9,'{\itUPS, Jeklenka je na rezervi}'); elseif p.t.p < p.t.desetbar %p.t.pnull disp('UPS, Jeklenka je prazna'); text(0.1,0.7,'{\itUPS, Jeklenka je skoraj prazna}'); end % end za: if p.t.p < p.t.prezerva % Izracun deluje, ce simulacija ni zaustavljena if m.Running

40

Page 46: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

% ------------------------------------------------------------- % izracuni, ki jih potrebuje model in jih lahko na zacetku % (t=0) spreminjamo if t.tM < t.dt; %---------------------------------------------------------- % izracunamo maso jeklenke = c.t.m [kg] c.t.m = c.t.V * 1.2; %---------------------------------------------------------- % izracunamo ZACETNO maso zraka = p.t.ma [kg] % pozenejse maso zraka je potrebno racunat izven te zanke % p.t.ma = 2.6 kg p.t.ma = c.t.V * c.t.p * 1.3 / 1000; %---------------------------------------------------------- % nastavimo volumen komenzatorja na enko vrednost kot je masa % jeklenke. Pristejemo se 0.0001 zaradi zaokroevanja p.b.Vh = (c.t.V * c.t.p * 1.3 / 1000) + 0.0001; p.b.Vk = (c.t.V * c.t.p * 1.3 / 1000) + 0.0001; %---------------------------------------------------------- % skupna masa je masa vse delov na sebi (masa potapljaca[c.d.m] % + masa jeklenke[c.t.m] + masa zraka v jeklenki[p.t.ma] + % ostala oprema[c.e.m] + masa utezi(svinca) % p.d.m = 105.6 kg p.d.mfiksna = c.d.m + c.t.m + c.e.m + c.w.m; p.d.mcas = p.t.ma ; p.d.m = p.d.mfiksna + p.d.mcas; %---------------------------------------------------------- % volumen obleke = p.s.V [l] % p.s.V = 12 l p.s.V = c.s.t * 3 * (c.d.m / 100); %---------------------------------------------------------- % Nastavimo skupen volumen (prej fisken volumen), torej % to je tisti volumen katerega uporabimo, % da se potapljac(diver) na globini h umiri. p.d.Vfiksen = c.d.m + c.t.m + c.e.m; p.d.Vcas = p.s.V + p.b.Vk; p.d.V = p.d.Vfiksen + p.d.Vcas; %---------------------------------------------------------- % Polmer krogle, s katero aproksimiramo potapljaca = r [m] % p.d.r = 0.2932 m p.d.r = ((3 * p.d.m)/(4*pi*c.d.ro))^(1/3); % ------------------------------------------------------------- % Volumen razpetega zraka v jeklenki. = p.t.V [l] % p.t.V = 2000 l p.t.V = c.t.V * c.t.p; end %end za: if t.tM < t.dt; % Najprej preverimo stanje gumbov kompenzatorja if get(ui.h.b.ButtonIn, 'Value') % BCD + if p.b.Vh < c.b.VMin p.b.Vh = c.b.VMin; elseif p.b.Vh > c.b.VMax | p.b.Vh == c.b.VMax p.b.Vh = c.b.VMax; elseif p.t.V > 0 % Z zrakom iz jeklenke polnimo kompenzator p.b.Vh = (p.b.Vh + p.b.dV); % ----------------------------------------------------- % PRAZNIMO JEKLENKO p.t.dV = abs(p.b.dV * p.d.ph); p.t.V = p.t.V - p.t.dV; p.t.p = p.t.V / c.t.V; % p.t.p pritisk zraka v jeklenki % wavplay(c.b.SoundIn, c.b.fs, 'async'); % Zvok-kompenzatorja else text(1,-1/3,'{\itUPS, Jeklenka je prazna.}'); disp('UPS, Jeklenka je prazna.'); m.Running = 0; end end %end za: if get(ui.h.b.ButtonIn, 'Value') if get(ui.h.b.ButtonOut, 'Value') % BCD - % preverimo volumen zraka v kompenzatorju, da ne pade pod nic % (c.b.VMin) in % ne gre cez mejo (c.b.VMax) if p.b.Vh < c.b.VMin | p.b.Vh == c.b.VMin p.b.Vh = c.b.VMin;

41

Page 47: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

elseif p.b.Vh > c.b.VMax | p.b.Vh == c.b.VMax p.b.Vh = c.b.VMax; else % Zrak iz kompenzatorja izpuscamo p.b.Vh = p.b.Vh + p.b.dV; % wavplay(c.b.SoundOut, c.b.fs, 'async'); % Zvok-kompenzatorja end end %end za: if get(ui.h.b.ButtonOut, 'Value') % ce ni bil BCD pritisnjen, ga posatavimo na nic if get(ui.h.b.ButtonOut, 'Value')==0 & get(ui.h.b.ButtonIn, 'Value')==0 p.b.dV = 0; end %end za: get % Fizikalni modela izracunavamo in risemo redkeje, kot se % spreminja simulacijski cas, le na vsakih t.dtI vmesnih iteracij if t.dti == 0 % Stevec vmesnih iteracij je odstel MainVBC('Recalculate'); % Izracunamo nove vrednosti modela MainVBC('UpdateUIValues'); % Azuriramo podatke za GUI MainVBC('StoreModel'); % Shranimo vse trenutne vrednosti MainVBC('Plot'); % Narisemo zahtevane vrednosti % parametrov modela (iz predhodnih % vrednosti in podatkov za GUI) t.dti = t.dtI; % Ponovno postavimo stevec vmesnih %iteracij glavne simulacijske zanke p.d.ti = p.d.ti + t.dtM; end %end za: t.dti == 0 set(ui.h.RunButton, 'String', ['Run (t = ' num2str(t.tM,'%5.1f') '

s)']);, t.tM = t.tM + t.dt; % Povecamo cas t.dti = t.dti - 1; % Odstejemo stevec vmesnih iteracij (do

%naslednjega izracuna) end %end za: if m.Running % Azuriranje ure (in morebitna pauza) t.Loop = toc; % Preverimo porabljen racunski cas za

% zadnji cikel glavne zanke. if t.Loop < t.dt % Ce smo porabili manj casa, kot bi naj

%trajal en odsek realnega casa pause(t.pause+t.dt - t.Loop); % v simulaciji, potem pocakamo na

%naslednji casovni trenutek. end t.t = t.t + t.dt; % Pomik na naslednji casovni trenutek v

% simulaciji tic; end % end za: while ~m.Quit; % Konec glavne zanke else % end za: nargin < 1 % -------------------------------------------------------------------------- % V nadaljevanju so funkcije, ki se izvedejo ob % aktiviranju posameznih kontrolnikov uporabniskega vmesnika ('callback') % ali kot klici podprogramov. switch Action case 'Reset' % --------------------------------------------- % Na novo pozenemo cas in zaustavimo simulacijo t.tM = 0; % Restiramo cas simulacije [s] m.Running = 0; % Simulation flag set(ui.h.RunButton,... 'Value', m.Running,... 'String', 'Run'); case 'Run' % --------------------------------------------- % (Ponovni) zagon in (zacasna) zaustavitev simulacije m.Running = ~m.Running;

% De/aktiviramo vsa edit vnosna polja if m.Running OnOff = 'Off'; else OnOff = 'On'; end for i = 1 : ui.p.NoParam set(ui.h.p.Value(i),'Enable', OnOff); end; for i = 1 : ui.c.NoConst set(ui.h.c.Value(i),'Enable', OnOff); end; case 'UpdateUIValues' % ---------------------------------------------

42

Page 48: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

% Po vsakem simulacijskem koraku % azuriramo izpisane vrednosti parametrov for i = 1 : ui.p.NoParam PrireditveniStavek = ['ui.p.Value(i) = ' ui.p.Var{i} ';']; eval(PrireditveniStavek); set(ui.h.p.Value(i), 'String', num2str(ui.p.Value(i))); end; case 'UpdateModelValues' % --------------------------------------------- % Akcijo sprozijo vsi 'edit' kontrolniki parametrov in konstant. % Azuriramo vse nastavljive vrednosti parametrov in konstant modela. for i = 1 : ui.p.NoParam ui.p.PlotRel(i) = get(ui.h.p.PlotRel(i), 'Value'); if ui.p.PlotRel(i) % Ce risemo relativno, potem vklopimo tudi risanje, ce ze ni set(ui.h.p.Plot(i), 'Value', 1); end ui.p.Plot(i) = get(ui.h.p.Plot(i), 'Value'); ui.p.Print(i) = get(ui.h.p.Print(i), 'Value'); ui.p.Value(i) = str2num(get(ui.h.p.Value(i), 'String')); % Vrednost parametra iz uporabniskega vmesnika prepisemo v %spremenljivko modela PrireditveniStavek = [ui.p.Var{i} ' = ui.p.Value(i);']; eval(PrireditveniStavek); end; for i = 1 : ui.c.NoConst ui.c.Value(i) = str2num(get(ui.h.c.Value(i), 'String')); % Vrednost konstante iz uporabniskega vmesnika prepisemo v % konstanto modela PrireditveniStavek = [ui.c.Var{i} ' = ui.c.Value(i);']; eval(PrireditveniStavek); end; case 'StoreModel' % --------------------------------------------- % Vse trenutne vrednosti parametrov shranimo v vektorje s.i = s.i + 1; % Povecamo stevec simulacijskih izracunov s.t(s.i) = t.tM; % Shranimo simulacijski cas for i = 1 : ui.p.NoParam s.p(s.i, i) = ui.p.Value(i); % Shranimo vrednosti parametrov end; case 'UpdateRR' % --------------------------------------------- % Akcijo sprozi drsnik za nastavitev frekvence dihanja. % Spremenimo frekvenco dihanja in azuriramo njen stevilcni prikaz. p.r.f = get(ui.h.r.fSlider, 'Value'); set(ui.h.r.fText, 'String', num2str(p.r.f, '%4.1f/min')); case 'FillBCD' % BCD + % --------------------------------------------- % Detektiramo polnjenje BCD-ja if get(ui.h.b.ButtonIn, 'Value') % Pricnemo polnjenje BCD-ja (in ustavimo morebitno praznjenje) set(ui.h.b.ButtonOut, 'Value', 0); p.b.dV = + c.t.dV * t.dtM ; % pomnozimo z t.dtM, ker je pretok

% definiran kot liter na sekundo end case 'EmptyBCD' % BCD - % --------------------------------------------- % Detektiramo praznjenje BCD-ja if get(ui.h.b.ButtonOut, 'Value') % Pricnemo praznjenje BCD-ja (in ustavimo morebitno polnjenje) set(ui.h.b.ButtonIn, 'Value', 0); p.b.dV = - c.t.dV * t.dtM; % pomnozimo z t.dtM, ker je pretok

% definiran kot liter na sekundo end case 'Plot' % --------------------------------------------- % Narisemo vse zahtevane parametre % Podprogram klicemo iz glavne zanke % axes(ui.h.graf); if s.i > 1 PrintString = []; for i = 1 : ui.p.NoParam if ui.p.Plot(i) if ui.p.PlotRel(i) % Vrednost parametra narisemo relativno na prvi parameter (globino) plot([s.t(s.i) s.t(s.i)], s.p(s.i,1) + [0 s.p(s.i,i)],

i.p.PlotPat{i}); %text(0.1,0.9,'{\itUPS, AAA}'); else % Vrednost parametra narisemo na grafikon absolutno plot([s.t(s.i-1) s.t(s.i)], [s.p(s.i-1,i) s.p(s.i,i)],

ui.p.PlotPat{i}); %text(0.1,0.9,'{\itUPS, BBB}'); end end;

43

Page 49: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

if ui.p.Print(i) % Dodamo vrednost parametra za izpis PrintString = [PrintString ui.p.Name{i} ' = '

num2str(s.p(s.i,i)) '; ']; end end; if length(PrintString) > 0 % Izpisemo vrednosti vseh zeljenih parametrov disp(['tM = ' num2str(t.tM) ': ' PrintString]); end end; if get(ui.h.Animation, 'Value') x0 = t.tM-10; else x0 = -1; end set(ui.h.graf,... 'XLim', [x0 t.tM],... 'XTick', x0 : t.tM); if get(ui.h.YFiksen, 'Value') y0 = c.d.hMax; set(ui.h.graf,... 'XLim', [x0 t.tM],... 'XTick', x0 : t.tM,... 'YLim', [y0 1]); else end %end za: if get(ui.h.YFiksen, 'Value') case 'Recalculate' % ***************************************************************** % ZACETEK % GLAVNI FIZIKALNI DEL % ***************************************************************** %---------------------------------------------------------- % Izracunamo masa svinca, katero bomo predlagali p.w.ms = c.s.t * c.d.m * 3 / 100; %---------------------------------------------------------- % tlak v odvistnosti od globine = p [bar] p.d.ph = (c.d.p0 - c.d.ro * c.d.g * p.d.h); % p.d.ph [Pa] p.d.ph = p.d.ph / c.d.p0; % p.d.ph [bar] %---------------------------------------------------------- % volumen obleke na doloceni globini = p.s.Vh [l] % c.d.p0 zbrisal, ker je Pa, c.d.p0 v barih pa je 1 p.s.Vh = ((c.s.k * p.s.V) + ((1 - c.s.k)*p.s.V/p.d.ph)); if (p.b.Vh == c.b.VMin & p.b.dV > 0) | (p.b.Vh > 0 & (p.b.Vh < c.b.VMax

| p.b.Vh == c.b.VMax)) %---------------------------------------------------------- % vol.kom. v odvisnosti od globine(h) = Vh (l) p.b.Vh = ((p.b.Vh + p.b.dV) * p.d.phPrev) / (p.d.ph); if p.b.Vh > c.b.VMax p.b.Vh = c.b.VMax; end end %---------------------------------------------------------- % izracunamo silo upora potapljaca = p.d.Fr [N] p.d.Fr = (0.4*0.5*c.d.ro*(p.d.v)^2*pi*(p.d.r)^2); %---------------------------------------------------------- % izracunamo silo teze = p.d.Fg [N] p.d.Fg = c.d.g * p.d.m; %---------------------------------------------------------- % izracunamo silo vzgona(skupen vol.+vol.komp.+vol.pljuc) = p.d.Fb [N] % vol.komp. +- zato, da nastavimo zacetno vrednost p.d.Fb = c.d.ro * c.d.g *((p.d.V-p.b.Vk+p.b.Vh+p.r.Vs)/1000); %---------------------------------------------------------- % Pogledamo kam kaze gibanje if p.d.v > 0 p.d.Fr = - p.d.Fr; p.d.smer = 1; % gor elseif p.d.v < 0 p.d.Fr = p.d.Fr; p.d.smer = -1; % dol end %-------------------------------------------------------------- % preverimo velikost dt-ja, ce je manjsi kot 2.1 potem % je natačnost programa zelo mala if t.dtM < 2.1 %---------------------------------------------------------- % izracunamo pospesek potapljaca = a[m/s^2] % pospesek = - sila teze + sile vzgona + sila upora

44

Page 50: Fizikalna simulacija plovnosti · Web viewPodpisani Daniel Bernad , roj. 04. 03. 1974 , študent Pedagoške fakultete Univerze v Mariboru, smer fizika , izjavljam, da je diplomsko

p.d.a = (-p.d.Fg + p.d.Fb + p.d.Fr)/p.d.m;; %---------------------------------------------------------- % izracunamo hitrost potapljaca = v[m/s] p.d.v = p.d.v + p.d.a * t.dtM; %---------------------------------------------------------- % olajsamo ustavljanje potapljaca if p.d.h > 1 if abs(p.d.v) < c.d.vepsilon disp('Potapljaca ustavljamo, torej v=0, aaaaaaaaaa'); pause(t.epsilon/10); end if abs(p.d.vPrev) < c.d.vepsilon & abs(p.d.v) < c.d.vepsilon &

abs(p.d.Fb - p.d.Fg + p.d.Fr) < c.d.Fepsilon % dol if abs(p.d.Fb - p.d.Fg) < c.d.Fepsilon p.d.v = 0; disp('Potapljaca ustavljamo, torej v=0, FFFFFFFFF'); pause(t.epsilon); end if abs(p.d.v) < c.d.vepsilon p.d.v = 0; disp('Potapljaca ustavljamo, torej v=0, vvvvvvvvv'); pause(t.epsilon); end p.d.v = 0; disp('Potapljaca ustavljamo, torej v=0'); pause(t.epsilon); end end %---------------------------------------------------------- % izracunamo globino potapljaca = h[m] p.d.h = p.d.h + ((p.d.v + p.d.vPrev) / 2) * t.dtM; else %else za: if t.dtM < 2.1 disp('****************************************************'); disp(' t.dtM je prevelik. t.dtM < 2.1 '); disp('****************************************************'); close; end %end za: if t.dtM < 2.1 %---------------------------------------------------------- % pogledamo, ce smo na dnu ali na povrsini if p.d.h > c.d.hNull %& p.d.Fb > p.d.Fg % Fb = sila vzgona % ------------------------------------------------------ % Na povrsini postavimo globino, hitrost in pospesek % na vrednost nic p.d.h = c.d.hNull; p.d.v = c.d.vMin; p.d.a = c.d.aMin; p.d.a1 = c.d.aMin; elseif p.d.h < c.d.hMax %& p.d.Fb > p.d.Fg % Fb = sila vzgona % ------------------------------------------------------ % Na dnu postavimo hitrost in pospesek % na vrednost nic % Globino pa postavimo na dovoljeno vrednost p.d.h = c.d.hMax; p.d.v = c.d.vMin; p.d.a = c.d.aMin; p.d.a1 = c.d.aMin; end % Shranimo vrednost trenutne hitrosti in tlak p.d.vPrev = p.d.v; p.d.phPrev = p.d.ph; % je v: case 'Recalculate' %********************************************************************** % KONEC %********************************************************************** end %end za: Switchend % end za: if nargin < 1

45