• Nie Znaleziono Wyników

De Sedimet: Een sedimentatiebalans

N/A
N/A
Protected

Academic year: 2021

Share "De Sedimet: Een sedimentatiebalans"

Copied!
63
0
0

Pełen tekst

(1)

I

I

I

I

I

I

I

I

I

,

r!t

~,

f

TU

Delft

I

Technische Universiteit Delft

Faculteit der Civiele Techniek Vakgroep Waterbouwkunde

(2)

I

,

I

/'I'!"

r~

I-:,;,:

I

I

I

I

I

De Sedimet

een

sedimentatiebalans

A.M. den Toom C. Kranenburg

Rapport no. 4 - 92

Technische Universiteit Delft Faculteit der Civiele Techniek

Vakgroep Waterbouwkunde Laboratorium voor Vloeistofmechanica

I

I

(3)

I

Inhoud

1. Inleiding 1

2. Ontwerp en uitvoering 2

2.1. Algemeen 2

2.2. Onderdelen van de Sedimet 3

3. Het werken met de Sedimet 7

I

4. Reproduceerbaarheid en nauwkeurigheid 9 5. Slotopmerkingen 13

I

Bijlagen.

A

.

B.

C.

Verwerking meetgegevens en foutenanalyse Handleiding Sedimet Software 15 19 27

I

,

I

I

I

(4)

I

1

1. Inleiding

I

Wanneer in een vat een korrelvormige vaste stof met een vloeistof wordt gemengd en de dichtheid van de vaste stof groter is dan die van de vloeistof, zal de stof bezinken. In dat geval zullen er na verloop van tijd boven een bepaald niveau in het vat geen deeltjes van de vaste stof voorkomen waarvan de valsnel

-heid groter is dan de afstand van dat niveau tot het vloeistofoppervlak gedeeld door de verstreken tijd. Door nu op een bepaald niveau (onderin het vat) op bepaalde tijdstippen het gewicht te meten van het materiaal dat op een schaaltje

is bezonken, kaneen valsnelheidsverdeling worden bepaald. Voor de bepaling van valsnelheden van korrelige materialen in water is dit een gebruikelijke methode. In het Laboratorium voor Vloeistofmechanica wordt deze methode gebruikt voor de bepaling van valsnelheidsverdelingen van slib en andere materialen met afme

-tingen van 2 tot 64JLm. Tot nu toe gebeurde dit met de z.g. pipetmethode volgens Andreasen-Eisenwein. Om de bepaling volgens deze laatste methode goed uit te voeren moet men over voldoende ervaring beschikken. Bovendien is de methode

erg arbeidsintensief en vereist zij een hoge graad van nauwkeurigheid bij de

uitvoering.

De in de handel zijnde apparatuur waar de bepalingen meer geautomatiseerd mee uitgevoerd kunnen worden is erg kostbaar (o.a. Sedimentograph, laser partiele analyser). De Sedibalans van de firma Sartorius, die eveneens voor dit doel geschikt zou zijn, is niet meer verkrijgbaar. Er is daarom gekozen voor het bouwen van een sedimentatiebalans, de Sedimet, waarmee de bepalingen op eenvoudige wijze kunnen worden uitgevoerd.

In dit rapport wordt de Sedimet beschreven. Besproken worden ontwerp, meet-principe, berekeningsmethode, software, testresultaten en foutenanalyse. Daar

-naast is een handleiding toegevoegd. Omdat de valsnelheid afhankelijk is van onder meer de vloeistofeigenschappen worden de valsnelheden omgerekend naar equivalente deeltjesgrootten van de vaste stof.

I

,

I

I

I

I

(5)

I

2

2. Ontwerp en uitvoering

2.1. Algemeen

Om een valsnelheid van een deeltje tebepalen moet dit deeltje worden

ge-volgd en de afgelegde weg per tijdseenheid wordenbepaald. In een

bezinkingspro-ces kande tijd worden gemeten die een deeltje erover doet om over een zekere

afstand te bezinken. Bij het meten met de Sedimet wordt in een meetvat een

homogeen mengsel aangemaakt van het te onderzoeken materiaal en water. Na het

mengen laat men de deeltjes van het materiaal bezinken. De meeste deeltjes

zullen bezinken op een schaaltje dat onderin het meetvat hangt. De vele deeltjes

bezinken elk met hun eigen valsnelheid; de valhoogte van een deeltje is niet

bekend. Aangenomen kanechter worden dat bij goede doormenging de valhoogte

van de deeltjes in een bepaalde grootteklasse gelijkmatig over de hoogte van het meetvat is verdeeld. Het gewicht op het schaaltje neemt in een tijdsinterval toe met de som van de gewichten van alle deeltjes die in dat tijdsinterval bezinken. Het gewicht van het bezonken materiaal wordt daarom op gezette tijden gemeten.

Uit deze gewichten en de tijdstippen waarop ze zijn bepaald kande

valsnelheids-verdeling worden berekend (bijlage A).

De vaststelling van de valsnelheidsverdeling van een monster moet door een

ieder uitvoerbaar zijn en kleine variaties in de verschillende handelingen

mogen geen merkbaar verschil in de uitkomsten veroorzaken. Het ontwerp is

hierop afgestemd. De te verrichten handelingen worden beschreven in de

handleiding (bijlage B).

I

I

I

I

I

I

I

(6)

I

3

2.2. Onderdelen van de Sedimet

I

De Sedimet bestaat uit: een balans, een tafel met afschermkast, een meetvat en PC met software (programma sedimet).

I

De opstelling, zoals hiernaast schematisch

afge-beeld, staat op een stabiele tafel.

I

A. Balans (Sartorius R200-D)B. Bedieningspaneel en display C. Tafel/afschermkast D. Tweedelige ophangstang E. Deksel F. Meetvat G. Schaaltje

I

De balans is een semi-microbovenweger van het fabrikaat Sartorius, type R200, met een afleesnauwkeurigheid van 10 IJ.g. Zij heeft een RS232 seriële interface MP8-6 voor communicatie met een PC. Aan de onderzijde is de balans voorzien van een haakje waaraan met een tweedelige ophangstang het opvang schaaltje in het meetvat hangt. De balans is op een tafel boven het meetvat geplaatst.

De balans is door de fabrikant voorzien van een weegprogramma. Met behulp van het bedieningspaneel kunnen de parameters voor dit programma worden ingesteld. De precieze werking van het weegprogramma is onbekend. Hieron-der volgt een overzicht van de in te stellen parameters en gekozen instellingen.

De nummering en omschrijving van de parameters komen overeen met de handleiding van Sartorius voor de balans, de vermelde instelling is de menuco-de zoals menuco-deze in het weegprogramma wordt ingevoerd.

I

I

I

(7)

4

1.1 Ambient conditions.

Hiermee wordt de stabiliteit van de opstelling ingesteld. Mogelijkheden zijn: zeer rustig, rustig, onrustig en zeer onrustig. De instelling beïnvloedt de middelingstijd van de filterfunktie in het weegprogramma. Het interne filter wordt zoveel mogelijk uitgeschakeld.

Instelling: 111, zeer rustig.

I

1.2 Stability range.

Hiermee wordt de toegestane bandbreedte van de signaalvariaties ingesteld. Indien de variaties binnen de ingestelde breedte vallen, wordt de uitlezing als stabiel aangemerkt (er verschijnt een g in het display). De instelling kan varië-ren van 0,25 tot 64 digit. In het weegbereik tot 42 g komt 1 digit overeen met

10j.Lg. De Sedimet gebruikt het stabiliteitskenmerk niet.

Instelling: 125, 4 digits (display tijdens meting meestal met g).

I

I

'.' 1.3 Display format.

Hiermee wordt ingesteld hoe het gewicht op het display wordt aangegeven.

Instelmogelijkheden zijn: laatste cijfer wel of niet, laatste cijfer alleen bij stabiliteit of alle cijfers pas bij stabiliteit aangeven. Het weegprogramma van de R200 bevat een fout: bij instelling 132, laatste cijfer uit, geeft de seriële uitlezing zo nu en dan in plaats van het teken een einderegel (OxOA).

Instelling: 131,laatste cijfer aan.

I

1.4 Tare parameter.

Hiermee wordt ingesteld of bij tarreren aan de voorwaarden van Stability range (1.2) moet worden voldaan. Instelmogelijkheden zijn: zonder of bij stabiliteit.

Instelling: 141, zonder stabiliteit.

I

1.5 Auto zero.

Hiermee wordt een functie in- of uitgeschakeld, waardoor de balans variaties

in de buurt van de O-uitlezing, die kleiner zijn dan 0,25 digit per seconde, wegregelt.

Instelling: 152, uit.

(8)

I

5

De volgende instellingen hebben betrekking op de seriële communicatie met de PC.

I

2.1 Data output.

Hiermee kan ingesteld worden op welk tijdstip de data op de seriële lijn wordt

gezet. Instelmogelijkheden zijn: na extern printcommando zonder of bij

stabiliteit, synchroon met het verversingstijdstip van het display zonder of na stabiliteit. De verversingsfrequentie van het display bedraagt

0,2 s.

Instelling: 213, synchroon display zonder stabiliteit.

I

2.2 Baudrate.

Hiermee wordt de overdrachtssnelheid van de uitlezing naar de PC ingesteld

(Baudrate). Instelmogelijkheden zijn 150, 300, 600, 1200, 2400, 4800 en 9600

bits per seconde. De beperking wordt opgelegd door de PC. Voor een XT is

het maximum

2400

bitst s.

Instelling: 224, 1200 bitsIs.

I

I

2.3 Paritybit.

Hiermee kan de pariteitscontrole van de overdracht worden ingesteld.

Instel-mogelijkheden zijn: Mark, space, odd en even. Door aan de PC-zijde van de

communicatie te kiezen voor no-parity is de keuze minder belangrijk. Instelling: 234, even parity.

I

De overige instellingen zijn voor de Sedimet niet van belang (zie handleiding R200D en MP8-6 van Sartorius).

I

(9)

6

I

De tafel met afschermkast bestaat uit een frame met blad waar de balans op is geplaatst. Het meetvat bevindt zich onder de tafel. Om ongewenste

luchtbewegingen rond de ophangstang van het schaaltje te voorkomen is het

frame van de balanstafel voorzien van een om manteling die het meetvat

afschermt van de buitenwereld. Aan de voorzijde is een deurtje, waardoor het

meetvat kan worden geplaatst of weggenomen.

I

I

Het meetvat is een dubbelwandige glazen cilinder. De mantel is gevuld

met water om de temperatuur in de binnencilinder stabiel te houden. Snelle

temperatuurvariaties van de omgeving worden hierdoor gedempt. Tijdens de meetduur moet de omgevingstemperatuur constant worden gehouden. Met het oog hierop is de meetruimte voorzien van een airconditioner, die de tempera -tuur binnen

±

2 graden C van de ingestelde temperatuur houdt. In de

binnen-cilinder zijn op de wand drie verticale ribben aangebracht, die de door het

mengen opgewekte stromingen onderdrukken. Op de binnencilinder is een

maatverdeling aangebracht, waar de valhoogte mee kan worden afgelezen.

Î

I

I

Het verwerkingsprogramma sedimet voorziet in een gebruikersinterface waarmee de gebruiker de nodige parameters kan instellen, de meting starten en

eventueel onderbreken. Er is een hulpfaciliteit aanwezig die uitleg geeft met betrekking tot de actuele parameter; voor de andere parameters kan met behulp

van een index uitleg worden gevraagd. Na het starten van de meting zal het

programma de benodigde metingen verrichten, de data verwerken, en data en

resultaten opslaan in een file (bijlage B).

I

I

I

I

(10)

I

7

3. Het werken met de Sedimet

I

Het mengen van het materiaal in het meetvat gebeurt door het schaaltje met de stang in het meetvat op en neer te bewegen. Na het mengen wordt het schaaltje onder aan de balans gehangen, waardoor het gewicht aan de balans met ongeveer 30 g toeneemt. Het tijdstip waarop het bezinken begint is in het verwerkingsprogramma gedefinieerd als het tijdstip waarop het gewicht aan de balans met 1 g is toegenomen. Hierdoor wordt een fout geïntroduceerd in de starttijd (zie bijlage A). De aankomsttijd van het deeltje is het tijdstip waarop het deeltje op het schaaltje bezinkt. Op vooraf berekende tijdstippen wordt het gewicht van het schaaltje met het daarop liggende materiaal gemeten. De maximale tijdsduur die nodig is om een getal van de balans uit te lezen, hangt af van de snelheid van de PC, de gekozen baudrate en de snelheid waarmee de balans de gegevens ververst. Proefondervindelijk is vastgesteld dat de uitlees-tijd varieert van 0.3 tot 0.4 s. De nauwkeurigheid van de weging wordt bepaald door de nauwkeurigheid van het gebruikte weegappparaat en de

omstandigheden (zie specificaties Sartorius R200D-balans).

De omstandigheden die de nauwkeurigheid van de meting onder meer beï

-nvloeden zijn: trillingen van en luchtbewegingen rond de opstelling. De invloeden van deze omstandigheden moeten tijdens de duur van de meting zoveel mogelijk worden uitgeschakeld. De Sedimet is geplaatst op een speciale tafel, die de stabiliteit voldoende waarborgt. Bovendien is de constructie van de Sedimet zodanig, dat de invloed van luchtbewegingen in de omgeving wordt uitgeschakeld.

De valsnelheid van het materiaal in de vloeistof wordt beïnvloed door de temperatuur, omdat de dichtheid en de viscositeit van de vloeistof alsmede de dichtheid van het materiaal afhankelijk zijn van de temperatuur. De tempera-tuur wordt daarom op de hiervoor aangegeven wijze tijdens de meting constant gehouden.

Het te onderzoeken monster kan bestaan uit minerale materialen, al dan niet vermengd met kalk, organische stoffen, zout of andere onbekende stoffen. De sedimentatievloeistof kan bestaan uit zoet water, zout water, glycerine-water mengsels of olieachtige stoffen. Alle delen van de opstelling zijn vervaardigd

I

I

I

I

I

I

(11)

8

van glas, roestvaststaal of kunststof. Het glazen meetvat is gemakkelijk te reinigen. Het mengen van het materiaal en de vloeistof in het meetvat gebeurt met behulp van het schaaltje dat in het vat hangt. Het schaaltje is door middel van een tweedelige stang aan het ophangpunt van de balans bevestigd. Om te mengen wordt het schaaltje met het daaraan vastzittende deel van de stang op en neer door de vloeistof bewogen. De hierdoor opgewekte (heftige) vloeistof-beweging zorgt ervoor dat het mengsel nagenoeg homogeen wordt. Te kort of

te langzaam mengen veroorzaakt een minder homogeen mengsel. Op het

belang van goed mengen wordt ook in de handleiding gewezen. Na het mengen wordt het schaaltje aan de balans gehangen en de PC start de meting.

Een mogelijke bron van fouten vormen dichtheidsstromen, die optreden als het

schaaltje zich op een te grote afstand boven de bodem van het vat bevindt.

Omdat er gebruik zal worden gemaakt van verschillende met de hand gemaakte

vaten, die niet alle gelijk zijn, is er in de tweedelige ophangstang een afstelmo

-gelijkheid gemaakt. Het schaaltje moet voor de meting zo worden afgesteld dat

de afstand tot de bodem maximaal 2 mm bedraagt. Om de verdamping van het

water in het vat te beperken wordt het vat na het mengen afgedekt met een

tweedelig deksel, dat in het midden is voorzien van een gat van 6 mm voor het

vrij doorlaten van de ophangstang van het schaaltje.

I

I

I

I

I

I

(12)

I

9

4. Reproduceerbaarheid en nauwkeurigheid

I

Voor het onderzoek naar reproduceerbaarheid en nauwkeurigheid van

de Sedimetis een aantal metingen uitgevoerd.

I

De reproduceerbaarheid is onderzocht met behulp van een monster bestaandeuit glasparels met een diameter tussen 12 en 50 JLm. Uit de metingen van drie monsters met een gewicht van 0,5 g, I g en 5 g zijn de standaardafwijkingen bepaald van de fractie per diameterklasse. Voor het monster van 1 g zijn 15 metingen gedaan, voor de andere monsters 6. De resultaten kunnen worden afgelezen uit onderstaande tabel.

I

~Standaardafwijkingen berekend uit metingen met de Sedimet, glasparels 12-50 Itm.

afmeting valsnelheid 0,5 g 1,0 g 5,0 g 64,0-45,2 Itm 3,77-1,88 mm/s, 1,6 % 1,6 % 1,1 % 45,2-32,0Jlm 1,88-0,94 mmls. 1,4% 1,7% 0,5 % 32,0-22,6 Itm 0,94-0,47 mm/s, 1,0 % 1,2 % 0,8 % 22,6-16,0 Itm 0.47-0,24 mm/s, 0,4 % 0,6 % 0,1 % 16,0-11,3 Itm 0,24-0,12 mm1s. 0,3 % 0,2 % 0,1 %

I

De reproduceerbaarheid is ruim voldoende.

I

Van de mogelijke invloeden op de nauwkeurigheid zijn onderzocht: de

grootte van het monster, de temperatuur, de verdamping en handelingen in de

omgeving van de Sedimet.

I

I

(13)

I

10

De invloed van het monstergewicht op het resultaat is afgeleid uit de metingen die gedaan zijn ten behoeve van de vaststelling van de reproduceerbaarheid.

I

Overzicht fractiegemiddelden uit metingen met de Sedimet, glasparels 12-50 J.Lm.

afmeting valsnelheid 0,5 g 1,0 g 5,0 g 64,0-45,2 J.Lm 3,77-1,88 mmls. 25,3 % 27,1 % 26,3 % 45,2-32,0 J.Lm 1,88-0,94 mmls. 45,4 % 47,5 % 48,6 % 32,0-22,6 J.Lm 0,94-0,47 mmls. 24,1 % 21,2 % 20,4 % 22,6-16,0 J.Lm 0.47-0,24 mmls. 4,6 % 3,8 % 4,2 % 16,0-11,3 J.Lm 0,24-0,12 mmls. 0,6 % 0,4 % 0,5 %

I

I

Uit deze gemiddelden kan geen systematische invloed van het monstergewicht worden geconstateerd.

I

De temperatuur, alsmede de afwijking van de Sedimet ten gevolge van

verdam-ping en temperatuur zijn gemeten gedurende 48 uur. De afwijking ten gevolge

van temperatuurvariaties is

<

I mg per graad Celsius. Opgave fabrikant: gevoeligheidsdrift balans

<

0, I mg per graad Celsius.

De afwijking ten gevolge van de optredende verdamping voor de situatie dat

het meetvat afgesloten is met het deksel, is

<

1 mg per 24 uur.

De afwijking ten gevolge van de optredende verdamping met het meetvat

zonder deksel is

±

5 mg per 24 uur.

I

De invloed van handelingen in de omgeving van de Sedimet, zoals stoten tegen

de stabiele tafel en hard openen en sluiten van de deuren, geven afwijkingen

tot 500 mg in de uitlezing. Tijdens de meting moet dit soort gebeurtenissen worden vermeden. Uit 20 tests voor beide genoemde gebeurtenissen blijkt dat de blijvende afwijking maximaal 0,5 mg is.

I

I

I

(14)

I

11

I

Om de uitkomsten van een bepaling met behulp van de Sedimet te vergelijken met de uitkomsten van een andere methode, is er van een glaspa-relmonster een korrelgroottebepaling gemaakt door Grondmechanica Delft. Deze bepaling is gedaan met een Sedigraph. Met dit apparaat wordt een registratie gemaakt van het verloop van de sedimentconcentratie in een valbuis -je waarin zich een sediment-water mengsel bevindt. De concentratie wordt gemeten met behulp van Röntgenstralen. Een hoeveelheid van 10 g glasparels met een diameter

<

40 J.Lm is verdeeld in 5 monsters van 2 g. Met één monster daarvan zijn zes metingen met de Sedimet gedaan, drie andere mon-sters zijn samengevoegd voor een bepaling bij Grondmechanica Delft. De bepaling met de Sedimet is uitgevoerd tot een kleinste diameter van 2 J.Lm, de bepaling van Grondmechanica geeft een percentage aan deeltjes

>

2 J.Lm van 95. De waarden gemeten door Grondmechanica zijn herleid naar 100% voor deeltjes

>

2 J.Lm. De resultaten zijn weergegeven in onderstaande grafiek en tabel. Daaruit blijkt dat, bij een bepaald percentage, de diameters bepaald met de Sedimet ongeveer een factor 1,3 groter zijn dan die bepaald met de

Sedi-graph

.

De oorzaak hiervan is niet met zekerheid bekend. Een dergelijk verschil

wordt vaker waargenomen bij het vergelijken van meetmethoden voor de groottebepaling van kleine deeltjes.

I1

I

I

I

I

I.

.•.•... é metingen Sed1met.

___ Gemldde~de u1.t. 6 m.etingen Sedlllet ._- Meting Grondmecbanlca Delft

--- . t1et.lnq Grondmechanlca Del.ft. (zonder fractie <2 urn)

(15)

I

12

Cumulatievekorrelgrootteverdelingenvan glasparelmonstersbepaald met Sedimet en Sedigraph(%).

~IJ ,... ~ ." :2 ;:: e IJ IJ :S

...

'<t ~ ..c ..c

~

-

Ol) NOl) MOl) Ol) It'lOl) IDOl) 1$

e-

e,

e

e .5 .5 .5 .5 .5 c .5 Ol) Ol)

.!!! 'iS 'iS 'iS 1$ 1$ .~ ] ] ]

Cl e e e e e s V) V) V) 64,0~m 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 45,2~m 0,5 0,0 0.5 0,7 0,0 0,3 0,0 0,0 0,0 32,0 ~m 2,8 0,0 1,6 2,5 1,5 1,3 1,3 0,0 0,0 22,6~m 2,5 1,6 2,6 1,3 3,0 1,4 2,1 0,0 0,0 16,0 ~m 9,1 9,2 10,2 10,6 8,1 9,2 9,4 2,1 2,0 11,3~m 36,8 37,4 38,6 38,4 35,5 35,7 37,1 20,0 19,0 8,0~m 62,7 64,1 65,7 66,3 62,9 62,9 64,1 48,4 46,0 5,6~m 82,4 83,3 84,1 84,7 82,7 82,7 83,3 70,5 67,0 4.0 ~m 93,3 94,1 94,6 94,9 94,0 94,2 94,2 85,8 81,5 2,8 ~m 97,9 98,6 98,6 99,1 98,8 98,8 98,6 95,8 91,0 2,0~m 100 100 100 100 100 100 100 100 95

I

I

I

I

I

I

I

I

I

(16)

I

13

5.

Slotopmerkingen

I

Met de Sedimet kunnen op eenvoudige wijze valsnelheidsverdelingen

worden bepaald. De reproduceerbaarheid en de nauwkeurigheid zijn bevredi-gend en de gebruikersvriendelijkheid van het geheel is goed. Het mengen van het te onderzoeken materiaal met de meetvloeistof heeft tot gevolg dat in het

meetvat een stroming wordt opgewekt, die het bezinkingsproces op

onvoorspel-bare wijze beïnvloedt. De in het vat aangebracht ribben onderdrukken de ongewenste stroming zo snel mogelijk. Door de stroming met behulp van een lichtmes zichtbaar te maken kon worden geconstateerd dat de stromingen na ca 50 s praktisch verdwenen zijn. De invloed van de stromingen in de eerste 50 s van het bezinkingsproces is nog niet onderzocht.

I

I

I

I

I

I

(17)

I

15

Bijlagen

I

A

.

Verwerking meetgegevens en foutenanalyse

1. De formule van Oden

I

De valsnelheidsverdeling volgt uit de cumulatieve verdeling van de

valtijden, waarbij de valtijd van een deeltje is gedefinieerd als het quotiënt van de hoogte van de vloeistofkolom in het meetvat en de valsnelheid van het deeltje. De verdeling van de valtijden wordt bepaald met behulp van het gemeten gewicht. Noem 'Y(t) het gemeten gewicht op tijdstip t, gedeeld door het gemeten gewicht voor t-oo (het eindgewicht). Op een willekeurig tijdstip t is al het materiaal met valtijd kleiner dan t bezonken. De afgeleide d'Y(t)/dt vertegenwoordigt de deeltjes met valtijden groter dan t. Van deze deeltjes is na de aanvang van de meting op t = 0 een hoeveelheid td'Y(t)/dt bezonken. Op het tijdstip t wordt daarom de fractie f(t) van het bezonken materiaal met

valtijden kleiner dan

t

gegeven door

I

I

I

f(t)

=

'Y(t) - t d'Y(t)

dt (Al)

I

Dit resultaat staat bekend als de formule van Oden. De functie f(t) is de cumulatieve verdeling van de valtijden.

In praktische toepassingen moeten -y en d-y/dt worden geschat uit meetgege

-vens. Deze schattingen worden aangeduid met een overstreping, zodat

I

f(t) = ~(t) - t d~(t)

dt (A2)

I

I

(18)

I

16

2. Berekeningsmethode

Om

:y

en d:y/dl uit de metingen te bepalen, wordt het gemeten

verloop van

:y

lokaal benaderd door een rechte gegeven door

I

(A3)

I

-waarin 10 het tijdstip is waarop

f

bepaald moet worden, '1'0

=

:Y(/o) en

'0 = d:Y(/o)/dt . De constanten '1'0 en '0 worden bepaald met een klein

-stekwadratenmethode, zodanig dat de rechte een aantal meetwaarden in de

omgeving van I

=

10 zo goed mogelijk benadert (Bendat & Piersol, 1971).

Er geldt

I

S2S3-S1S4 '1'0

=

si

-

(m+n+I)S4 '0

=

SIS2 - (m+n+ I)S3

s

i -

(m-n» I)S4 waarin n n SI

=

L

'Yj S2

=

L

(Ij-/o) j--m jz-m n n

S3

=

L

(Ij-Iohj S4

=

L

(lj_/o)2

ja-m j--m (A4)

I

(A5)

I

I

De indexj loopt van -m tot +n; er worden m meetpunten met I</0 en n

meetpunten met I> 10 meegenomen. Het totale aantal meetpunten betrokken

bij de berekening van f(/~ bedraagt dus m

+

n

+

1. In het programma

"sedimet" (bijlage C) volgen de tijdstippen to uit de gekozen klasseninde

-ling.

I

(19)

I

17

-3. Precisie van de verdelingsfunctie

f

I

De invloed van random fouten in de gemeten gewichten op de precisie van

f

wordt geanalyseerd in Kranenburg (1992). Het blijkt dat de standaard -afwijking Sj van de grootheid

f

volgt uit

I

S;f ::=: ( 12 )';'!...s

m+n+l T "( (A6)

I

waarin s; de standaardafwijking van het gemeten (en dimensieloos gemaakte) gewicht is, en T het tijdsinterval waarbinnen de meetwaarden liggen die gebruikt worden om 1'0 en ro (vergelijkingen A4 en A5) te berekenen. Bij constant bemonsteringsinterval !:&tgeldt dus T = (m+n+1)!:&t. Uit (A6) blijkt

I

-dat de precisie van

f

toeneemt met het aantal meetwaarden (m+n+1) en het meetinterval (de "filtertijd" T). Door een grote waarde van T neemt echter de resolutie af, zodat een compromis gezocht moet worden tussen precisie en resolutie.

In het programma "sedimet" is gekozen

1

m

=

n

=

8 en

Tlt

=

1/8 zodat

Sj ::=: 6,7s"(

I

4. Referenties

I

l.S. Bendat & A.G. Piersol, Random Data: Analysis and Measurement Procedures. Wiley Intersience, New York, 1971.

C. Kranenburg, On the precision of sedimentation balance measurements, Report No. 1-92, Dept. of Civil Engineering, Delft University of Technology, Delft, 1992.

I

I

1 De waarden voor n en Tlt in het programma "sedimet" wijken soms wat af van de

opgegeven waarden, doordat (1) voor het bemonsteringsinterval is gekozentl(8*17) (naar boven

afgerond op hele seconden) en (2) meetwaarden in het interval(t-TI2. t+ T12)in de berekening van

par. 2 worden betrokken.

(20)

I

19

I

B. Handleiding Sedimet

1. De Sedimet

De Sedimet is een meetopstelling waarmee de valsnelheid- en deeltjesgrootte-verdelingen van een materiaal (bestaande uit deeltjes met afmetingen 2 tot 64

jLm) kunnen worden bepaald.

I

De Sedimet bestaat uit:

a. een balans met opvangschaaltje en ophangstang. b. een tafel met afschermkast.

c. een meetvat.

d. PC/software (programma sedimet).

I

a. De balans is een semi-microbovenweger van het fabrikaat Sartorius, type

R200, met een afleesnauwkeurigheid van 10 jLg. Zij heeft een RS232 seriële

interface MP8-6 voor communicatie met een PC. Aan de onderzijde is de

balans voorzien van een haakje waaraan het opvangschaaltje in het meetvat

hangt. De balans is op een tafel boven het meetvat geplaatst.

I

b. De tafel met afschermkast bestaat uit een frame met blad waar de balans op

is geplaatst. Het meetvat bevindt zich onder de tafel. Om ongewenste luchtbe

-wegingen rond de ophangstang van het schaaltje te voorkomen is het frame van de balanstafel voorzien van een ommanteling die het meetvat afschermt van de

buitenwereld. Aan de voorzijde is een deurtje, waardoor het meetvat kan

worden geplaatst of weggenomen.

I

I

c. Het meetvat is een dubbelwandig glazen cilinder. De mantel is gevuld met

water om de temperatuur in de binnencilinder stabiel te houden. Snelle tempe

-ratuurvariaties van de omgeving worden hierdoor gedempt. Tijdens de meet

-duur moet de omgevingstemperatuur constant worden gehouden. Met het oog

hierop is de meetruimte voorzien van een airconditioner, die de temperatuur

binnen

±

2 graden C van de ingestelde temperatuur houdt. Op de binnenci

-linder is een maatverdeling aangebracht, waar de valhoogte mee kan worden afgelezen.

I

(21)

I

20

d. Het verwerkingsprogramma sedimet voorziet in een gebruikersinterface waarmee de gebruiker de nodige parameters kan instellen, de meting starten en eventueel onderbreken. Na het starten van de meting zal het programma de benodigde metingen verrichten, de data verwerken, en data en resultaten opslaan in een file.

Onderstaand een voorbeeld van de uitvoer van het programma.

I

I

File : SEDIMENT.DAT Opmerking:

valhoogte: 0.250 m

I

temp. : 20.0 C viscositeit: l.oo3780e-06 m*mls

Rho water: 998.2 kg/m*m*m Rbo sediment: 2650 kg/m*m*m

afmeting valtijd valsnelheid Sample K.gewicht K.perc. fout

I

64.0 mu 64.7 s 3.9 mmls 0.2598 g -0.4372 g 0.0 % 0.1 % 45.2 mu 129.4 s 1.9 mmls 0.8475g 0.0426g 26.8 % 0.1 % 32.0 mu 258.8 s 1.0 mmls 1.2184 g 0.9138 g 75.6 % 0.1 % 22.6 mu 517.6 s 0.5 mmls 1.3294g 1.2639 g 95.2 % 0.1 %

I

16.0 mu 1035.3 s 0.2 mmls 1.3484 g 1.3401g 99.4 % 0.2 % 11.3mu 2070.6 s 0.1 mmls 1.3507 g 1.3504 g 100.0 % 0.2 %

I

I

I

I

(22)

I

21

I

Werkwijze.

I

1. Verwijder voor zover nodig het schaaltje uit het meetvat.

2. Neem het meetvat onder de balans weg.

3. Reinig indien nodig het meetvat (binnencilinder).

4. Vul het meetvat met ontlucht water.

5. Voeg het sediment toe (max. 0,2 % van het volume van het water in het

meetvat) en meng het geheel grondig.

6. Plaats het vat onder de balans.

7. Bevestig het schaaltje en centreer het vat.

8. Stel het schaaltje m.b. v. het bovenste verstelbare deel van de ophangstang

op maximaal 2 mm boven de bodem van het meetvat.

9. Start het programma en controleer (wijzig) de parameters.

10. Kies METEN.

11. Maak het schaaltje weer los en meng hiermee de inhoud van het meetvat.

12. Start de meting met het schaaltje los van de balans. Het programma tikt

(gereed!!) en wacht.

13. Hang het schaaltje aan de balans als de inhoud grondig gemengd is. Het

programma start de meting.

14. Leg het deksel op het vat en sluit het deurtje.

15. Kies QUIT na afloop van de meting (signaal!!), copieer ev. de data-file.

I

I

I

I

I

Opmerkingen:

Op het scherm wordt de voortgang van de meting getoond. De meting kan

desgewenst worden onderbroken door een willekeurige toets in te drukken.

Let tijdens de meting op het display van de balans. Een sterk onstabiele uitlezing kan worden veroorzaakt door het niet vrij in het meetvat hangen van het schaaltje.

De stappen 4 en 5 kunnen worden vervangen door het vullen van het vat met een sediment-water mengsel. Dit moet echter van te voren worden ontlucht (vacuüm in exsiccator).

De vorming van vlokken kan worden tegengegaan door het oplossen van een

I

I

(23)

I

22

peptisator (in bepaalde gevallen voldoet 0,1 % calgon van het gewicht van het water, maar afhankelijk van de samenstelling van het monster kan een andere

peptisator nodig zijn). De oplossing moet tenminste 12 uur staan.

I

Het programma sedimet.

I

Het programma communiceert met de gebruiker door middel van scherm,

geluid en toetsenbord; er is een hulpfaciliteit aanwezig, die wordt geactiveerd. na het indrukken van functietoets Fl. Hulp wordt geboden door middel van tekst, die betrekking heeft op de actuele parameter; voor de andere parameters kan met behulp van een index uitleg worden gevraagd. De gemeten data wordt naar een door de gebruiker genoemde file geschreven. Na het opstarten van het programma wordt aan de gebruiker een scherm getoond met de van belang zijnde parameters en de keuzeknoppen voor METEN en QUIT. De meeste

parameters kunnen door de gebruiker worden gewijzigd. Dit kan op de

standaard 'edit' manier, d.m.v. het keyboard. Hierbij geldt dat een wijziging alleen wordt uitgevoerd als zij wordt afgesloten door een 'return/enter'.

I

I

I

Parameters: 1. maximale diameter 2. viscositeit 3. dichtheid water 4. dichtheid sediment

I

5. temperatuur 6. valhoogte 7. filenaam 8. opmerkingen 9. klassenindeling in diameters 10. valtijden bepaald per klasse

I

I

1. Maximale diameter.

(24)

I

23

I

De maximale te meten diameter van het sediment wordt door de gebruiker

opgegeven. Wanneer de gebruiker een waarde

>

64 opgeeft, zal het

program-ma deze wijzigen in 64J.Lm. Het programma berekent vervolgens 11 klassen op

de volgende wijze: diam_mu[i + 1] = diam_mu[i]/pow(2.0,.5). Zie ook 9.

Eenheid isJ.Lm (111.000.000 m)

I

2. Viscositeit.

De kinematische viscositeit wordt berekend volgens het Handbook of

Chemis-try and Physics, 54th edition: viscositeit = (pow(lO,( ( 1.3272

*

(20-temp)

-.001053

*

(temp-20)

*

(temp-Zû) / (temp+l05» )

*

1,(02) / (1000

*

rho-water).

De eenheid is m2/s.

De vloeistof is water. De viscositeit kan door de gebruiker worden gewijzigd;

indien dit is gebeurd, zal het programma bij wijziging van de

temperatuurpara-meter niet meer de viscositeit en de dichtheid van het water aanpassen. De gebruiker krijgt hiervan een melding.

I

I

I

3. Dichtheid water.

De dichtheid van het water wordt berekend volgens het Handbook of

Chemis-try and Physics, 54th edition: rho_water = RHO_W_30 + (pow (30,2)

-pow(temp,2) + 30 - temp) / 200. De eenheid is kg/rrr'.

I

I

4. Dichtheid sediment.

De dichtheid van het sediment wordt door de gebruiker opgegeven. De eenheid is kg/m',

De defaultwaarde is 2650.

I

5. Temperatuur.

De temperatuur van de vloeistof (water) wordt door de gebruiker opgegeven. De eenheid is graden C.

De defaultwaarde is 20.

(25)

I

24

6. Valhoogte.

De valhoogte wordt door de gebruiker opgegeven. De valhoogte is de afstand van de waterspiegel tot de bovenzijde van het schaaltje.

De eenheid is m.

De defaultwaarde is 0,25.

I

7. Filenaam.

De filenaam wordt door de gebruiker opgegeven. Deze kan worden

voorafge-gaan worden door een pad.

De defaultnaam is SEDIMENT. DAT.

I

I

8. Opmerkingen.

De eventuele opmerkingen worden door de gebruiker ingetoetst (maximaal 255

tekens).

I

9. Klassenindeling in diameters.

De klassenindeling in diameters wordt door de gebruiker opgegeven. Er zijn

11 klassen. Indien minder klassen gewenst zijn, wordt voor de eerste niet

gewenste klasse voor de kleine diameter een waarde 0 gegeven; het aantal

metingen wordt dan tot aan die klasse beperkt. Om een beperking van het aantal te meten klassen op te heffen moet bij max. diameter (links bovenaan)

een waarde worden ingetoetst. Bij max. diameter kan een andere diameter worden opgegeven, waarvan het programma een nieuwe reeks defaultwaarden

genereert, die gebaseerd is op de opgegeven maximale diameter.

De eenheid is ",m.

Het programma genereert een reeks gebruikelijke defaultwaarden, die

geba-seerd is op een maximum diameter van 64 J.'m

I

I

I

10.Valtijden bepaald per klasse.

De valtijden per klasse worden door het programma volgens de wet van Stokes berekend: valtijd

=

18.0

*

kinematische viscositeit

*

valhoogte / ( (rho_sed

-rho_water) / rho_water

*

G

*

pow«diam/lOOOOOO.0),2» G

=

9.81 versnelling t.g.v. de zwaartekracht in m/s'.

I

I

(26)

I

25

De eenheid is s.

I

Na het eventueel aanpassen van de defaultwaarden van de parameters kan met de keuze METEN de meting worden begonnen, dan wel met QUIT het programma worden beëindigd.

I

Na de keuze METEN verschijnt het meetscherm. Getoond worden de verstre-ken tijd, de diameters en valtijden per klasse, de filenaam en keuzeknoppen voor START, STOP en QUIT. Indien gewenst kan de filenaam nog gewijzigd worden.

I

I

Na de keuze START wacht het programma, totdat het schaaltje na het mengen weer is bevestigd aan de balans. Daarna start de meting en worden de verstre-ken tijd en het resultaat op het scherm getoond. Zie punt 11 van de Werkwij-ze.

I

I

I

I

(27)

I

27

C. Software

I

De software bestaat uit het programma 'sedimet.exe' en de helpfile

'sedi-help.txt'. Het programma is geschreven in C en gecompileerd met de Borland

C

+ +

compiler; er is gebruik gemaakt van het interface management system

C-scape. Onderstaand volgt een globale bespreking van de werking van de belangrijkste onderdelen van het programma, een schematisch overzicht van het programma, de volledige souree met beknopt commentaar en de helpfile

'sedihelp.txt' .

I

I

Het programma is opgebouwd uit main en een aantal functies; er is

gebruik gemaakt van de standaard C-functies, Borland C-functies en de

functies uit de C-scape library.

I

hoofdfunctie maint): ParmO = InitParmO;

Viscositeit(parmO) ;

Valtijd(parmO); Menu(parmO); free (parmO); textmode(3) ;

I

I

Het type parm is gedeclareerd als een structure die alle parameters bevat welke

door de verschillende functies worden gebruikt; parmO is de pointer naar een structure van het type parm. In de functie InitParmO wordt de pointer

geïnitia-liseerd, geheugenruimte gereserveerd en de variabelen (parameters) voor zover

nodig op de defaultwaarden geïnitialiseerd. Vervolgens worden in de functie Viscositeitï) de dichtheid en de viscositeit van het water berekend; aansluitend worden in de functie Valtijdï) de valtijden van de default korrelgrootten

berekend. Na deze voorbereidende stappen wordt het gebruikersinterface

geactiveerd in de functie Menu(); na terugkeer uit de functie Menu() wordt met de functie free() de gereserveerde geheugenruimte vrijgegeven en vervolgens met de functie textmode() de PC in standaard textmode gezet. Het programma

I

I

I

(28)

I

28 is dan klaar.

I

functie Menuï): InitSchermO;

disp_Init(def_ModeGraphics, cmwin_Class); sed = Init_Menu_sed(parmt);

fopen("sedihelp.txt", "rb");

help_Init(fp,help_Xref, 32768,&hx_sedimet)

start loop while(menu_message! = QUIT_MESSAGE) menu_message = sed_Go(sed)-l;

keuze switch(menu_message) case METEN:

Meting(parmt);

menu_message = QUIT_MESSAGE; case STOP:

menu_message = QUIT_MESSAGE; einde loop sed_Close(sed);

closegrapht); disp_Closet); fclose(fp); SchrijtNaarFile(parmt) ;

I

I

I

I

I

De functies Initêchermt), dispInitt), Init_Menu_sedO en help_InitO initialise -ren respectievelijk een grafisch scherm voor het tekenen van de grafiek, het display-interface voor de C-scapefuncties, de layout voor het hoofdmenu van het gebruikersinterface en de hulpfaciliteit. De functie fopenï) heeft de helpfile 'sedihelp.txt' geopend t.b.v. de functie helpInitï). Na de initialisatie wordt een loop gestart, die doorgaat totdat de C-scapefuntie sed_GoO 0 (QUIT.: MESSAGE) teruggeeft; deze functie regelt het gedrag van het gebruikersinter -face en geeft de waarde van het veld waarin een handeling is verricht. Er wordt op grond van de waarde uit sed_GoO een keuze gemaakt: voor veld METEN wordt de functie Metingï) aangeroepen, voor veld STOP wordt de

I

I

I

(29)

I

29

I

loop beëindigd, voor de andere velden (parametervelden) wordt geen actie ondernomen. Het bijwerken van de parameters gebeurt vanuit sed, GoO door de functie spcMenuï), Na de keuze STOP worden met sedCloseï), close-graphï), dispcloseï) en fcloseï) achtereenvolgens het hoofdmenu, het grafische scherm, het display-interface en de help file gesloten en de gereserveerde geheugenruimte vrijgegeven. De functie SchrijfNaarFileO berekent de gewens-te waarden en schrijft de resultagewens-ten van de meting naar de opgegeven file.

I

I

functie Metingt):

meet_sed = Init_Meetsed(parmt); Setupï);

start loop while (menu_message!= QUIT_MESSAGE) menu_message = sed_Go(meet_sed)-l;

keuze switch(menu_message) case START METING:

Meten(parmf, meet_sed);

pop_Message(Meting gereed!);

Attentieï);

case STOP METING: case QUIT:

menu_message = QUIT_MESSAGE;

I

I

einde loop sed Close(meet sed);

_

_

I

I

De functies Init Meetsedï) en Setupï) initialiseren respectievelijk de layout voor het meetmenu van het gebruikersinterface en de seriële poort voor de communicatie met de balans. Na de initialisatie wordt een loop gestart die doorgaat totdat de C-scapefuntie sed_GoO 0 (QUIT_MESSAGE) teruggeeft; deze functie regelt het gedrag van het gebruikersinterface en geeft de waarde van het veld waarin een handeling is verricht. Er wordt op grond van de waarde uit sed_Go een keuze gemaakt: voor veld START wordt de functie MetenO aangeroepen, voor veld QUIT wordt de loop beëindigd, voor de andere velden STOP en Filenaam wordt geen actie ondernomen. Het veld STOP heeft alleen als doel de gebruiker te attenderen op de mogelijkheid de

I

I

(30)

I

30

meting te onderbreken. Na de keuze STOP wordt de loop beëindigd en met de

functie sed_Close het meetmenu gesloten, waarna de gereserveerde geheugen

-ruimte wordt vrijgegeven.

I

I functie Metent): h = getmaxyO-30;

2 hh = h - 151;

3 for (i=O;i<ARRAY_N;i++) gamma[i] =tijd[i] =0.0;

4 a[STRINGLENGTE] = '\0';

5 test 1 if (Serialüchar *)a, 0)= =0) "Storing"

6 getal = atof((char *)a);

7 loop 1 while ( (verschilgewicht) < 0.5 && lkbhitïj)

8 Seria1«char *)a, 0);

9 huidig_tijdstip enz. time(NULL);

10 start loop 2 while (Ikbhitï) && aantal <nt)

11 meettijd = huidig_tijdstip - starttijd;

I

I

I

12 13 14 15 16 17 18 19 20 test 2 test 3

tijdstap = ODEN_INTERVAL * meettijd enz. ;

volgend_tijdstip = vorig_tijdstip + tijdstap; huidig_tijdstip = time(NULL);

tijd_nu = huidig_tijdstip-starttijd; if (huidig_tijdstip> =volgend_tijdstip)

if (!Seria1«char *)a,O)) break; getal = atof(tchar *)a);

for (i=D; i<ARRAY_N-l; i++) tijd[i] = tijd[i + 1];;

I

start loop 3

I

21 einde loop 3 gamma[i] = gamma[i+l];

22

tijd[ARRAY_N-l] = (double) tijd_nu;

23 gamma[ARRAY_N-l] = getal;

I

24 test 4 25

2

6

2

7

2

8

2

9

if (tijd[ODEN_M + 1] > = sampletijden[sa] ) sound(4(00); sl = s2 = s3 = s4 = t3 = 0.0; i= 0;

I

verschil = tijd[ODEN_M]-tijd[O]; eindtijd = verschil +sampletijden[sa];

(31)

I

31

30 start loop 4 while(tijd[i] <= eindtijd)

31 t1 = gamma[i];

I

32 sl += ti; 33 t2 = tijd[i] - sampletijden[sa] ; 34 s2 += t2; 35 s3 + = (ti*t2);

I

36 s4 + = t2*t2; 37 i++; 38 einde loop 4 t3+=1.0; 39 r = (sl *s2 - t3*s3) / (s2*s2-t3*s4);

I

40 g= (s2*s3 - sl *s4)/(s2*s2-t3*s4); 41 f_Oden = g-sampletijden[sa] * r; 42 samplegewichten[sa] = g; 43 klassegew[sa] = f_Oden;

I

44 setfillstyle(SOLID_FILL, 1); 45 bar(25,h,600,hh); 46 moveto(25,h);

47 start loop 5 for (i= l: i< =parmf->sa; i++)

I

48 g = klassegew[sa]-klassegew[O];

49 y = h - 150 * enz.;

50 einde loop 5 lineto(i*40+ 65,y);

51 nosoundï);

I

52 einde test 4 sa++;

53 sed_RepaintField(sed,parmf- > sa*3);

54 vorig_tijdstip = huidig_tijdstip;

55 einde loop 2 sed_RepaintField(sed,O);

I

Dit is de functie waarin het meten wordt uitgevoerd; voor de overzichtelijkheid zijn de statements genummerd.

1-4 Initialisatie.

I

5 Test of de seriële communicatie functioneert; indien niet dan wordt de

gebruiker gewaarschuwd (zie volledige source).

6 Initialiseer gewicht balans.

(32)

I

32

7-8 Wacht totdat gewicht 0,5 g groter is geworden (zie volledige source). 9 Initialiseer diverse tijdstippen.

10 Start meetloop.

11-15 Initialiseer tijden en tijdstap.

16 Test voor tijd uitlezen balans. 17-18 Lees balans uit.

19-23 Schuif tijd en gamma-array naar links en initialiseer laatste item.

24 Test op tijd voor klasse.

25-38 Initialiseer en bereken sommaties uit gamma- en tijdarray t.b.v. Oden-formule.

39-43 Bereken sample- en klassegewicht met Oden formule.

45-50 Teken grafiek kumulatieve klassengwichten meting op het scherm.

51-52 Schakel geluidssignaal (25) uit en verhoog aantal gemeten klassen.

53 Toon gemeten samplegewicht.

54 Initialiseer tijd. 55 Einde meten.

I

I

I

I

I

I

I

I

I

(33)

I

33

I

Schema programma Sedimet

functie: Omschrijving:

Initparm declareren en initialiseren parameters

Viscositeit berekenen viscositeit

Valtijd berekenen valtijden

Menu gebruikersinterface, hoofdmenu

InitScherm scherm in grafische mode voor grafiek

disp_Init initialiseren scherm voor interface

Init_Menu_sed initialiseren lay-out voor interface hoofdmenu

help Init initialiseren help faciliteit onder Ft

sed Go controle naar interface hoofdmenu

Hoofdmenu mogelijkheid wijzigen parameters en keuze voor start of stop, na wijzigen

van parameters worden afhankelijke parameters bijgewerkt

METEN: starten meting STOP: stop en verlaat programma, ->EINDE.

Meting gebruikersinterface, meetmenu

Setup initialiseren seriële communicatie met balans

sed Go controle naar interface meten

Meetmenu mogelijkheid wijzigen filenaam en keuze voor start, stop of quit.

START: start STOP: stop QUIT verlaat programma

meten meten

disp Close sluit interface

SchrijfNaarFile foutberekening en resultaten

-naar file schrijven

return terug naar main

EI N D E PROGRAMMA

Meten meet opgegeven aantal klassen

(vervolg op volgende blz.)

I

I

I

I

I

I

I

I

(34)

34

Schema programma Sedimet (vervolg)

Meten meet opgegeven aantal klassen test seriële communicatie

wacht totdat gewicht groter wordt en geef zolang geluidssignaal (tikken) loop: meet opgeven aantal klassen, stop na commando gebruiker

initialiseer interval en tijdstap time bepaal tijd

Serial lees balans uit

schuif Oden-array, bepaal afgeleide, teken grafiek op scherm en print gemeten gewicht; stop als gebruiker op een toets drukt

return terug naar meetmenu

I

I

I

I

I

I

I

I

I

I

(35)

I

35 Souree sedimet.c

I

#incIude#include <<stdio.h >graphics.h > #include <math.h > #include <stdlib.h > #include <time.h > #include <sys\timeb.h > #include <dos.h > #include <rnalloc.h > #include "cscape.h" #include "ostdlib.h" #include "helpdecl.h" #include "popdecl.h" #include "pcscan.h" #include <alloc.h>

I

I

I

/*** Definities t.b.v. seriele communicatie ** #detine FALSE 0

#detine ESCAPE 27 /* AscII-code voor escape

*/

I

#detine CR #detine LF #detine ESCAPE #defineMASKER #detine ZFLAG #detine RS232 #detine SETUP #detine CHAROUT #detine COM 1 #detine DTARDY #define THRRDY

OxOd /* carriage return OxOa /* linefeed

27 /* Escape

Ox7f /* Masker voor AscII 7-bits

Ox40 /* Zero flag

Ox14 /* 8086 software interruptnr. voor serial Ox82 /* 1200 bps, 8 bit, 1 stopbit

2 /* intdos flag stuur character

o

/* int86 flag voor offset coml OxOl /* inp flag data-ready?

Ox20 /* inp flag klaar voor zenden ?

*/ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */

I

#detine THR#detine COM BASE0 Ox3f8 /* base-adres voor coml:/* transmitter holding register

#detine RDR 0 /* receiver data register #detine LSR 5 /* line status register

/*** Definities fysische grootheden ** #detine G 9.81236/* Nederland gemiddeld!

#detine D MAX 64 /* Valtijden voor grotere deeltjes te kort #detine RHO W 30 995.68 /* rho water bij 30 graden C.

#detine RHO_Q_20 2650.0 /* rho materiaal bij 20 graden C.

I

I

/*** definities diversen ** #detine VIDEOOxlO

#detine STRINGLENGTE 20 #detine MAX KLASSEN20

#detine AANTAL_KLASSEN 12 /* aantal klassen snelheidsverdeling #detine ODEN M 8 /* aantal punten kleinste kwadr methode #detine ARRAY_N(ODEN_M*2) +4 /* lengte array t.b.v. Odenfunktie

*/

*/

*/ */

(36)

I

36

#detine ODEN_INTERV ALO.125/* interval voor Id. kw. methode 1/8*tijd

#detine SA_TO.2 /*standaardafwijking tijd sec.

#detine SA_G.0005 /* standaardafwijking gewicht gram

#detine STARTTUD_FOUT1.5 /* aanname fout in starttijd 1.5 sec

#detine QUIT_MESSAGE 0

*/ */ */

*/

I

/*** definities t.b.v. menu sed

#detine MAX DIAMETERO

#detine VISCOSITEIT AANTAL KLASSEN*2 + 1

#detine DICHTHEID WATERVISCOSITEIT+l

#define DICHTHEID SEDIMENTDICHTHEID WATER + 1

_

_

#detine TEMPERATUURDICHTHEID _SEDIMENT + 1

#detine VALHOOGTETEMPERATUUR + 1

#detine METENV ALHOOGTE+ 1

*

*/

I

#detine FILENAAM METEN+ 1 #detine OPMERKINGFILENAAM + 1

#detine STOP OPMERKING+1

I

/*** definities t.b.v. meet sed *

#detine FILENAAM M (AANTAL_KLASSEN*3) + 1

#detine START METING FILENAAM M + 1

#defrne STOP M

_

ETINGSTART METING + 1

_

*/

#detine QUITSTOP_METING+1

I

#detine LENGTE_OPMERKING 255

/*** type-definitieparameter-structure ** */

typedef struct {

double diam_mu[MAX_KLASSEN],/* te bepalen diameters inmu samplegewichten[MAX_KLASSEN], /* gemeten gewichten

sampletijden[MAX_KLASSEN],

fout[MAX_KLASSEN], /* fouten %

gewicht[ARRAY_N],/* array voor Oden funktie

ldassegewichten[MAX_KLASSEN], /* berekend gewicht valsnelheid[MAX_KLASSEN], /* de valsnelheden valhoogte, /* maximale valhoogte in m.

rho_water, /* dichtheidvan het water in kg.lm*m*m

rho_sed, 1* dichtheid van de deeltjes idem

temp, /* temperatuur ingraden Celcius tijd, /* tijd inseconden

viscositeit;/* viscositeit m*mls

long starttijd, tijd_nu;

int sample_aantal, sample_nt,visc_rho_sein;

char filenaam[50],opmerking[LENGTE_OPMERKING]; FILE *fs_data; } parm; */ */

I

*/ */ */ */ */ */ *1 */ */ */

I

I

I

/*struct hv_struct hv_sedimet

=

{

-1, -1, -I, -I, 21, bd_prompt};

structhx_struct hx_sedimet = {Ox02,Ox20,Ox12,Ox02,bd_xref};

*/

(37)

I

37

I

char visc_boodschapj]"Indien de viscositeits- en/of rho_water- parameter wordt gewijzigd, "=

"neemt het programmaaan dat het een andere meetvloeistof betreft dan water. " "Bij wijziging van temperatuur zal daarom niet de viscositeit en dichtheid" "van de meetvloeistof worden berekend !!\n"

"Ukrijgt hiervan een telkens melding.\n"

"Wilt u de opgegeven wijziging doorvoeren j(a) of n(ee)?";

I

1*** funktie-declaratie's ** *1

I

void mainf);

void Attentie();

sed_type Init_Meetsed(parm *parmt);

sed_type Init_Menu_sed(parm *parmt);

parm * InitParmO;

int Initêchermï);

booleanspc_Menu(sed_type sed, int scancode);

void Meld_Fout(char *a);

void Meten(parm *parmf, sed_type sed);

void Meting(parm *parmt);

boolean spc_Meet(sed_type sed, int scancode);

void Menu(parm *parmt);

void Opendatafile(parm *parmt);

void SchrijtNaarFile(pann*parmf);

I

int Serial(char *c, int s);

I

void Setupï);

void Valtijd(parm *parmt); void Viscositeit(parm *parmf);

I

I

I

I

(38)

I

39

/*** F U N K TIE S ** */

I

/* funktie Attentie: Attendeerd gebruiker. /* parameters : geen. /* retumwaarde : geen. */ */ */ void AttentieQ

I

{ int i;

long volgend_tijdstip;

I

while(!kbhitO) {

for (i= 1800; i> 100; i-= 100) { sound(i); delay(lOO); } nosoundï); volgend_tijdstip = time(NULL)+60;

while (time(NULL)<volgend_tijdstip&& !kbhitO); } getchï); }

I

I

I

I

I

I

(39)

I

40

int InitSchermO

{

int gdriver = DETECT, gmode, errorcode;

I

setgraphbufsize(256);

if (registerbgidriver(EGA VGA_driver)<0 11 registerbgifont(gothic _font)<0) {

printf ('1\nRegistratie grafische-driver of font mislukt! "); exit(l);

}

detectgraph(&gdriver, &gmode); if (gdriver!

=

VGA) return(O); initgrapb(&gdriver, &gmode, "");

errorcode = graphresultï);

if (errorcode != grOk) I*' an error occurred {

I

*'/

I

return(O); } return(l); }

I*' return with error code *'/

I

I

I

I

I

I

(40)

I

41

I

/* funktie Init_Meetsed: Initialiseerd een sed voor de meting /* parameters :parmf pointer naar strueture met alle parameters /* retumwaarde :de sed.

*/ */ */ sed_type Init_Meetsed(parm *parmt)

I

{ int i;

unsigned ehar kleur;

menu_type menu; sed_type sed;

I

if «menu = menu_Open(» = = NULL) {

printf("Openen menu is mislukt !!\n"); exit(O);

}

menu_Printf(menu, "@p[O,l)@fp[Tijd = ###### s]", &parmf- > tijd_nu, &slong_funes);

for (i=O; i <AANTAL_KLASSEN; i+ +) {

menu_Printf(menu, "@p[%d,I)@fp[diam. > = #### mu.]",i + 1, &parmf->diam_mu[i), &sdouble_funes);

menu_Printf(menu, "@p[%d,25]@fp[######sJ",i+ 1,

&parmf- > sampletijden[i], &sdouble_funes);

menu_Printf(menu, "@p[%d,40)@fp[########## gram]" ,i + 1, &parmf- > samplegewiehten[i], &sdouble_funes);

I

I

}

menu_Printf(menu, "@p[14,l]@f[filenaam = ##########################]",

parmf- > filenaam, &string_funes);

menu_Printf(menu, "@p[14,30]@f[S T ART ]",NULL, &gmenu_funes); menu_Printf(menu, "@p[l4,45]@f[ S TOP )",NULL, &gmenu_funes); menu_Printf(menu, "@p[14,60]@f[QU I T J" ,NULL, &gmenu_funes); menu_Flush(menu);

if

«

sed = sed_Open(menu) )

= =

NULL)

{

printf("Openen menu is mislukt !!\n"); exit(O);

}

sed_SetData(sed,(void *) parmt); sed_SetSpecial(sed,spc_Meet); sed_SetLabel(sed,2);

sed_SetColors(sed, Ox31,Ox31,Ox13); sed_SetBorder(sed, bd_prompt); i = sed_SetBorderColor(sed,Ox31);

sed_SetBorderTitle (sed," MET I N G "); sed_SetPosition(sed,O,O); sed_SetHeight(sed,disp_GetHeightO-14);

I

I

I

I

(41)

I

43

I

'*

Funktie spe_Meet: Kent nieuwe waarde toe aan in de sed

'*

gewijzigde parameter en berekend nieuwe waarden voor

'*

overige parameters.

'*

parameters : sed de sed waar de special-funktie bijhoort.

'

*

scaneode de toets die in de sed wordt ingedrukt.

'*

returnwaarde: false of true(zie escapemanual)

*'

*'

*'

*'

*'

*'

I

boolean spe{ _Meet(sed_type sed, int scancode)

int veld_nr;

parm ""parmf;

I

if «scaneode &= OxOOft)= = OxOD){

parmf = (parm *) sed_GetData(sed); sound(1200);

delay(lOO); nosoundï):

veld_nr = sed_GetFieldN o(sed);

if (veld_nr= =FILENAAM_M) strcpyïjchar *)parmf-> filenaam,

(ehar *)sed_GetRecord(sed,veld_nr) ); sed_Repaint(sed);

}

retum(FALSE); '** altijd FALSE anders is scancode verloren voor sed_go

}

*'

I

I

I

I

I

I

(42)

44

/'" funktie Init_Menu_sed: Initialiseerd een sed voor bet menu.

/'" parameters : parmf pointer naar structure met alle parameters /'" retumwaarde : de sed.

sed_type Init_Menu_sed(parm >l<parmf) {

int i;

menu_type menu; sed_type sed;

if «menu = menu_OpenO) == NULL ) {

printf("Openen menu is mislukt !!\n");

exit(O);

}

menu_Printf(menu, "@flMaximum diam. > = #### mu. &parmf- > diam_mulû], &sdouble_funcs); for (i=O; i <AANTAL_KLASSEN; i+ +)

{

menu_Printf(menu, "@p[%d,40]@fldiam. >

=

#### mu.]",i+2, &parmf->diam_mu[i], &sdouble_funcs);

menu_Printf(menu, "@p[%d,60]@fp[###### s)" ,i+2, &parmf->sampletijden[i], &sdouble_funcs);

Valtijden.]" ,

}

menu_Printf(menu, "@p[2,O]@flVisc.water = ########### m=m/s ]", &parmf- > viscositeit, &sdouble_funcs);

menu_Printf(menu, "@p[4,O]@flRho. water = ##### kg/m"'m"'m ]",

&parmf- > rbo_water, &sdouble_funcs);

menu_Printf(menu, "@p[6,O]@flRho.sediment = ##### kg/m"'m*m )", &parmf-> rbo_sed, &sdouble_funcs);

menu_Printf(menu, "@p[8,O]@ttTemperatuur =#### ge. ]",

&parmf-> temp, &sdouble_funcs);

menu_Printf(menu,"@p[lO,O]@flValhoogte = ##### m ]", &parmf- > valhoogte,&sdouble_funcs);

menu_Printf(menu,"@p[13,5]@flM E T E N)",NULL, &gmenu_funcs);

menu_Printf(menu, "@p[15,5]@flFilenaam = ###############################]",

parmf-

>

filenaam,&string_funcs);

menu_Printf(menu, "@p[17,5]@fw40[Opmerking: @[ %d,#])" ,parmf- > opmerking,

. &string_funcs,LENGTE_ OPMERKING);

menu_Printf(menu,"@p[19,5]@flQ U I T)",NULL, &gmenu_funcs); menu_Flusb(menu);

if « sed = sed_Open(menu) ) = = NULL ) {

printf("Openen menu is mislukt !!\n"); exit(O);

}

sed_SetData(sed,(void *) parmf); sed_SetSpecial(sed,spc_Menu);

I

"'/ */ */

,

I

I

I

I

I

I

I

,

I

(43)

I

45

I

sed_SetLabel(sed,l);

sed_SetColors(sed,Ox21, Ox21, Ox42); sed_SetBorder(sed, bd_title);

i

=

sed_SetBorderColor(sed,Ox21);

sed_SetBorderTitle (sed,

S E DIM ENT A TIE MET I N G ");

sed_SetPosition(sed,O,O);

sed_SetHeight(sed,disp _GetHeightO-5); sed_SetWidth(sed,disp_GetWidthO-5); sed_GotoField(sed,TEMPERATUUR); sed_Repaint(sed); retum(sed); }

I

I

I

I

I

I

I

(44)

I

46

/* Funktie spe _Menu: Kent nieuwe waarde toe aan in de sed

/* gewijzigde parameter en berekend nieuwe waarden voor

/* overige parameters.

/* parameters : sed de sed waar de special-funktie bijhoort. /* scaneode de toets die in de sed wordt ingedrukt.

/* returnwaarde: false of true(zie escape manual)

*/ */ */ */ */ */

I

boolean spc_Menu(sed_type sed, int scaneode)

{

int i, veldnr, array_nr; parm *parmf;

I

parmf = (parm *) sed _GetData(sed);

if «scaneode &= OxOOff) = = OxOD) /* indien return, wijzig parmf

{

sound(5000); delay(lOO); nosoundï);

veld_nr = sed_GetFieldNo(sed);

if (veld_nr!=MAX_DIAMETER && veld_nr < (AANTAL_KLASSEN*2) ) /* diameters */

I

wijzigen

{

array_nr = veld_nr/2;

parmf->diam_mu[array_nr] = atof«ehar *)sed_GetRecord(sed,veld_nr»;

if (parmf-> diam_mu[array_nr] = =0.0) parmf->sample_nt = array_nr; else Valtijd(parmf);

}

1* andere parameters wijzigen

swi tch( veld _nr)

{

case MAX DIAMETER:

parmf->diam_mu[O] = atof«ehar *)sed_GetRecord(sed,veld_nr»; if(parmf->diam_mu[O]>D_MAX) parmf->diam_mu[O] = D_MAX;

for (i=O; i<AANTAL_KLASSEN; i+ +)

parmf->diam_mu[i+l] = parmf->diam_mu[i]/pow(2.0,.5); Valtijd(parmt); break; case VISCOSITEIT: pop_Message(visc_boodschap,-l ,-1,-1 ,60,Ox70,bd_2); while(!kbhitO); if ( (i = geteh()) = = 'j' ) {

parmf- >viscositeit = atof«ehar *)sed_ GetRecord(sed, veld _nrj):

parmf->visc_rho_sein = 1;

Valtijd(parmf);

}

pop _Message(NULL, -1,-1,-1, -1,Ox70,bd _2); break; */

I

*1

I

I

I

(45)

I

47

I

case DICHTHEID WATER:

pop_Message(visc_boodschap,-I,-I,-1,60,Ox70,bd_2); while(!kbhitO);

if ( (i = getchO) = = 'i' )

{

parmf- > rho_water = atof« char *)sed_GetRecord(sed,veld_nrj); parmf->visc_rho_sein = 1;

Valtijd(parmf);

}

pop_Message(NULL,-1 ,-1 ,-1,-1 ,Ox70,bd_2);

break;

case DICHTHEID SEDIMENT:

parmf- > rho_sed

=

atof«char *)sed_GetRecord(sed,veld_nn): Valtijd(parmf);

break;

case TEMPERATUUR:

parmf- > temp = atofûchar *)sed_Getkecordïsed.veldnrj):

if (parmf- > temp <-10) parmf- > temp = -10;

Viscositeit(parmf); Valtijd(parmf); break;

case VALHOOGTE:

parmf->valhoogte = fabs( atof( (char *)sed_GetRecord(sed,veld_nr» ); Valtijd(parmf);

break;

case FILENAAM:

strcpyïjchar *)parmf- > filenaam, (char *)sed_GetRecord(sed, veld_nr) );

break;

case OPMERKING:

strcpy« char *)parmf-> opmerking, (char *)sed_GetRecord(sed, veld_nr) ); sed_GotoField(sed,METEN-l);

break; default: break;

I

I

I

I

} sed_Repaint(sed); }

retum(F ALSE); /** altijd FALSE anders is scancode verloren voor sed_go }

*/

I

(46)

I

48

1*** Funktie Init_Pann:Alocatie en initialisatie structure pann

**

1*** parameters: geen.

**

1*** returnwaarde:pointer naar structure pann

**

*1 *1 *1

pann *InitPannO {

char filenaam[50] = "SEDIMENT.DAT"; int i;

pann *parmf;

I

1********* Allocatie geheugen voor structuren

****

parmf

=

(pann *) mailocïsizeofîparmj);

if (parmf= =NULL) {

printf("geheugenallocatie mislukt !!\n"); exit(O);

}

pannf->rho_sed = RHO_Q_20;

parmf- > valhoogte

=

.25; parmf->temp

=

20.0;

parmf->diam_mu[O] = D_MAX;

for (i=D; i <AANTAL_KLASSEN; i++) {

parmf->diam_mu[i+ 1]

=

parmf->diam_mu[i]/pow(2.0,.5); parmf-> samplegewichten[i] = parmf- > klassegewichten[i] = 0.0; }

for (i=O;i <ARRA Y_N; i + +) parmf-> gewicht[i] = 0.0; pannf->tijd_nu = OL;

parmf- > sample_aantal = 0;

parmf- > sample_nt =AANTAL_KLASSEN;

parmf- > visc_rho_sein

=

0; 1*viscositeit en rhowater zijn niet gewijzigd

strcpy(parmf- > filenaam, filenaam); parmf- > fs_data

=

NULL;

parmf->opmerking[O]

=

'\0'; retum(parmt); } *1

I

I

I

*/

I

/*Funktie MeldFout: Meldt een boodschap(fout) via een ok-prompt.

1*parameters :a characterstring die de boodschap bevat.

1*retumwaarde: geen

*/

*1

*1

void MeldFout(char *a)

{

pop_Prompt(a,-1 ,-1 ,-1 ,-1,Ox70,bd_2); }

I

I

(47)

I

49

I

1* Funktie Menu: Maakt menu en handelt keuze gebruiker af. 1* paramete':8 : parmf pointer naar structure met alle parameters 1* retumwaarde: geen

*1 *1 *1

void Menu(parm *parmf)

I

{ int menu_message=255; FILE *fp; menu_type menu; sed_type sed;

I

InitSchermO; disp_Init(def_ModeGraphics,cmwin_ Class); sed = Init_Menu_sed(parmf); if ( (fp= fopen("sedihelp.txt" ,"rb") )= = NULL) MeldFout("'ngeen helpfile !!'n ");

else if ( (help_Init(fp,help _Xref, 32768,&hx_sedimet) != HELP_OK) MeldFout("'n init help mislukt!!\n");

while(menu_message!= QUIT_MESSAGE) { menu_message = sed_Go(sed)-l; switch(menu_message) { case METEN: Meting(parmf); menu_message = QUIT_MESSAGE; break; case STOP: menu_message = QUIT_MESSAGE; break; default: break;

I

I

I

I

} } sed_Close(sed); closegraphï); disp_Closet); fclose(fp); SchrijfNaarFile(parmf); }

I

I

(48)

50

,. Funktie Meten: Verricht vastgesteld aantal metingen of totdat

,. gebruiker om onderbreking vraagt. ,. parameters : sed de meting-sed.

,. parmf pointer naar structure met alle parameters

,. returnwaarde: geen

void Meten(parm >tAparmf,sed_type sed)

{

int veld_nr, i, screen = 1, h, bh, yO ,y;

char a[STRINGLENGTE]= "0.0 ";

char ·keus[] = { " S TOP PEN", "0 OOR G A A N", NULL };

time_t start_tijdstip, meettijd, tijdstap, huidig_tijdstip ,volgend_tijdstip, vorig_tijdstip; double getal, dummy =û.O, eindtijd, verschil, gamma[ARRAY_N], tijd[ARRAY_N],

sl,s2, s3, s4, tl, t2, t3, r, g, f_Oden; h = getmaxy()-30;

bh = h - 151;

for (i=D; i<ARRAY_N; i+ +) gamma[i] = tijd[i] = 0.0; a[STRINGLENGTE] = '\0';

if (Serialtjchar ·)a, 0)= =0) if (pop_Menu(" Storing ",keus,-I,-I,-1,-I,Ox42, O,bd_title)= = 1) return;

getal = atof«char ·)a);

,. wacht totdat gewicht groter wordt

while «dummy = atof«char ·)a) - getal )<0.5 && !kbhitO) {

if (dummy < -0.5) getal = getal + =dummy;

sound(16000); ,. dit wordt uitgeschakeld in serial en geeft een 'tik' Serial«char ·)a, 0);

}

huidig_tijdstip = volgend_tijdstip = vorig_tijdstip = parmf- > starttijd = time(NULL);

,

.

START METING

•••••••••••••••••••••••••

while (!kbhitQ && parmf-> sample_aantal < parmf- > sample_nt) {

meettijd = huidig_ tijdstip - parmf- > starttijd;

tijdstap

=

ODEN_INTERVAL * meettijd I (2*ODEN_M + 1)+ 1;

volgend_tijdstip = vorig_ tijdstip + tijdstap;

huidig_tijdstip = time(NULL);

parmf- > tijd_nu = huidig_tijdstip-parmf- > starttijd; if (huidig_tijdstip> =volgend_tijdstip)

{

if (!Serial«char ·)a,O» break; getal = atof«char .)a);

,. schuif Oden-array for (i=O; i <ARRAY_N-l; i+ +) { tijd[i] = tijd[i+ 1];;

I

.,

.

,

.,

.

,

.,

I

,I

I

I

.,

I

.,

.,

I

I

.,

I

(49)

I

51

I

gamma[i] = gamma[i + 1];

}

tijd[ARRAY_N-1] = (double) parmf->tijd_nu; gamma[ARRAY_N-l] = getal;

if (tijd[ODEN_M + 1] > = pannf->sampletijden[pannf->sample_aantal] )

{

sound(4000);

sl = s2 = s3 = s4 = t3 = 0.0; i

=

0;

verschil = tijd[ODEN_M]-tijd[O];

eindtijd = verschil +parmf-> sampletijden[pannf- > sample_aantal];

while(tijd[i] <= eindtijd)

{

ti = gamma[i]; sl+=t1;

t2 = tijd[i]-parmf- > sampletijden[pannf- > sample_aantal] ; s2 += t2; s3 += (ti*t2); s4 + = t2*t2; i++; t3+ =1.0; } r = (s l *s2 - t3*s3) / (s2*s2-t3*s4); g = (s2*s3 - s l *s4)/(s2*s2-t3*s4);

f_Oden

=

g - parmf-

>sampletijden[parmf-

>sample_aantal]

*

r;

parmf- > samplegewichten[parmf-> sample_aantal] = g; pannf- > klassegewichten[pannf- > sample_aantal] = f_Oden;

if (screen)

{

setfillstyle(SOLID_FILL, 1); bar(25,h,600,hb);

.moveto(25,h);

for (i = 1; i<=pannf- > sample_aantal; i ++)

{

g = parmf > klassegewichten[pannf > sample_aantal] -pannf- > klassegewichten[O];

y = h - 150 * (parmf- > klassegewichten[i]-pannf- > klassegewichten[O]) / g; lineto(i*40 + 65,y);

} } nosoundï);

parmf- > sample_aantal++;

sed_RepaintField(sed,pannf->sample_aantal*3); /* truc klopt }

vorig_tijdstip = huidig_tijdstip; }

sed_RepaintField( sed,0);

/** tijdstip sample ligt in werkelijkheid iets later * } }

I

I

I

I

I

I

I

*/ */

(50)

I

52

/*Funktie Meting: Initialiseerd de meting met bijbehorende sed. /*parameters : pannf pointer naar structure met alle parameters

/*retumwaarde: geen

*/

*/ */

I

void Meting(parm *parmf)

{

char a[STRINGLENGTE];

int meou_message=255;

I

sed_type meet_sed;

meet_sed = Init_Meetsed(parmf); Setupï);

while (meou_message! = QUIT_MESSAGE) {

meou_message = sed_Go(meet_sed)-I;

switch(meou_message)

{

case START METING:

sed_MarkField(meet_sed,STOP _METING,n,112); sed_UpdateField(meet_ sed,STOP_METING); Meten(pannf, meet_sed);

pop_Message(

I

I

"\0 Met i n g \0\0 i s -1,-1,-1,-1,Ox30,bd_2); Attentieï);

sed_UnMarkField(meet_sed,STOP _METING); sed_GotoField(meet_sed,QUIT);

sed_Repaint(meet_sed);

pop_Message(NULL,-I,-I,-I,-I,Ox30,bd_2); break;

case STOP METING: break;

case QUIT:

\0\0 gereed!!!\n",

I

I

menu_message = QUIT_MESSAGE;

default: break;

I

} } sed_Close(meet_sed); }

I

Cytaty

Powiązane dokumenty

Une traduction moderne anonyme rend bien l’idée principale d’Horace : « Si, dans un mauvais poète, je trouve deux ou trois passages plaisants, je m’étonne et j’admire ;

To ostatnie jest też zasadniczym niebezpieczeństwem grożącym Rze­ czypospolitej „od wewnątrz” , a mianowicie od króla dążącego do monar­ chii. Drugim

Oznaczenie zawartości macerałów i substancji mineralnej wykonano według polskiej normy PN-ISO 7404-3:2001 oraz ICCP (2001), a mikrolitotypów według polskiej normy

The beam loading diagrams are illustrated in Figure 3. First, the P1 shelf was loaded, followed by the P2 shelf. The next stage was loading the profile in reverse order to the

Należy zatem przeanalizować, czy zainicjowa- nie i wykonanie inteligentnego kontraktu doty- czącego co najmniej dwóch użytkowników da się zakwalifikować jako złożenie przez

W roku 1912 odkryto tajną szkołę prowadzoną przez Żydów Borucha Gersztajna i Chaima Sztycera, mieszczącą się w domu Stanisława Kozyrskiego.26 Nie­ spodziewana

Throughout the presentation of two characters from his major novels, namely Rose from Brighton Rock and the whisky priest from The Power and the Glory, an attempt

Uczymy grać w koszykówkę: taktyka, technika, metodyka nauczania koszykówki w lekcjach wychowania fi zycznego.. 1, Indywidualny i zespołowy