Als voorbeeld van een regelprobleem, op te lossen met een regelalgoritme, beschouwen we een bak met water die tot een bepaald niveau gevuld moet worden. De bak is een eenvoudige bak waarbij de oppervlakte over de gehele hoogte constant is. De bak wordt van boven gevuld door een kraan, die een constante stroom water levert; we kunnen in eerste instantie de kraan alleen aan- en uitzetten. We modelleren de bak volgens de principes van Hoofdstuk 4; een korte uitleg volgt hieronder. In dit hoofdstuk ligt de focus op de besturing van de kraan waarmee we de bak vullen. We bekijken een aantal varianten: in de eerste plaats, het vullen van een waterdichte bak tot een bepaald niveau. Vervolgens, het modelleren van het leeglopen van een lekke bak; tenslotte, het vullen van een lekke bak.Modellering
Het modelleren van de waterbak doen de in de volgende stappen:
Voor het rekenen aan het model gebruiken we hier een spreadsheet; voor complexere modellen zijn gespecialiseerde pakketten beschikbaar.
Identificeren van de concepten en relaties
De onderdelen waaruit de waterbak opgebouwd is, ofwel de componenten die samen de structuur vormen:
De toestand van deze componenten, en daarmee de toestand van het systeem, wordt bepaald door:
Formaliseren van de concepten en relaties
We proberen de formules op te stellen voor de concepten die de toestand van het systeem representeren.
In het model beschouwen we de tijd alleen op discrete tijdstippen: 0, 1*deltaT, ..., (n-1)*deltaT, n*deltaT, ... ; we schrijven in plaats van V(t) respectievelijk V(t-deltaT) daarom meestal V(n) en V(n-1). In het spreadsheetmodel gebruiken we deze notatie.
Omzetten in een spreadsheetmodel
De syntax voor de conditionele expressie if cond then value0 else value1 is in Excel: IF(cond; value0; value1)
In Nederlandse versies van Excel wordt dit: ALS(cond; waarde0; waarde1)
Het vullen van een waterdichte bak
In de bijgeleverde spreadsheet vind je een model van de waterbak, met een eenvoudige besturing. In het eenvoudigste geval kunnen we de kraan alleen aan- en uitzetten.
Opgave: probeer na te gaan wat de gevolgen zijn van verschillende keuzes van de waterstraal van de kraan. Wat valt je op, bijvoorbeeld met betrekking tot de minimale en maximale waterhoogte? Hoe kun je dit verklaren? Wat is je conclusie?
Latency (reactietijd van de besturing): in het bovenstaande gaan we uit van een besturing die onmiddellijk reageert. In de praktijk is dit meestal niet het geval: enerzijds kunnen we de waterhoogte vaak maar op een beperkt aantal momenten meten: we werken met een beperkte bemonsteringsfrequentie. Anderzijds kost het tijd om uit te rekenen wat de volgende stap in de besturing moet zijn (rekentijd). In veel gevallen moeten er nog meer onderdelen van het systeem met dezelfde computer bestuurd worden, waarbij de verschillende delen elkaar in de weg kunnen zitten (interferentie).
We kunnen we reactietijd van de besturing in het bovenstaande model verwerken door de bestruingswaarde op tijdstip n te laten afhangen van de gemeten waarde op een eerder tijdstip; een latency van 3*deltaT geeft dan:
F(n) = if h(n-3) < hmax then Fkraan else 0
Opgave: probeer na te gaan wat de gevolgen zijn van deze latency, door de regel overeenkomstig aan te passen.
NB: de genoemde regel voor F(n) kunnen we pas vanaf n=3 in de spreadsheet gebruiken; voor n=0, 1, 2 moeten we de waarde met de hand invullen, bijvoorbeeld 0 (kraan dicht).
Opgave: probeer na te gaan wat de gevolgen zijn van verschillende keuzes van deltaT (de stap in de tijd), door hiervoor verschillende waarden in te vullen. Ga hierbij uit van het vorige voorbeeld, met een flinke vertraging (latency) in de besturing. Wat valt je op, bijvoorbeeld voor de minimale en maximale waterhoogte? Hoe kun je dit verklaren? Wat is je conclusie?
Het leeglopen van een lekke bak (modellering)
Een volgende stap in de probleemstelling betreft een bak die lek is aan de onderkant. Dit betekent dat de hoeveelheid water die per tijdseenheid weglekt, evenredig is met de momentane druk, ofwel met de momentane hoogte van het water in de bak; de hoeveelheid die weglekt per tijdseenheid is omgekeerd evenredig met de lekweerstand Rlek:
Flek(n) = h(n)/Rlek
In eerste instantie wordt de bak niet bijgevuld; de hoeveelheid water in de bak neemt per tijdseenheid deltaT af met de lekstroom gedurende die periode:
V(n) = V(n-1) - Flek(n-1)*deltaT
Dit resulteert in het volgende spreadsheetmodel:
In dit geval is er geen sprake van besturing: we laten de bak gewoon leeglopen. De onderstaande opgave heeft daarom betrekking op het model, en op de vraag of dit nog klopt met de werkelijkheid.
Opgave: probeer wat de gevolgen zijn van verschillende keuzes van deltaT, in samenhang met keuzes voor de andere parameters. Wat is de minimale waarde van deltaT waarbij het model niet meer lijkt te kloppen? Wat gebeurt er als je deltaT nog groter maakt? Wat gebeurt er als je deltaT kleiner maakt? Waarom zou je mogelijk liever niet een hele kleine deltaT willen nemen?
Opgave: Neem nu weer de kleinste deltaT waarbij het net mis gaat. Varieer hierbij de waarde van de lekweerstand. Wat is je conclusie? Verdubbel ook eens, bij de originele waarde van de lekweerstand, de oppervlakte, samen met de initiele inhoud (V(0)); wat is je conclusie?
Het vullen van een lekke bak (modellering en besturing)
Voor de volgende stap combineren we de twee voorgaande modellen. De totale stroom naar de bak is dan de stroom vanuit de kraan Fin, minus de lekstroom Flek.
Dit resulteert in het volgende spreadsheetmodel:
Optioneel: moduleren van de waterstroom
In de bovenstaande eenvoudige besturing hebben we de stroom door de kraan steeds constant verondersteld: de kraan kan alleen open of dicht. We kunnen een betere regeling krijgen als we de waterstroom kunnen moduleren, dat wil zeggen, de kraan meer op minder open zetten. Een eenvoudige regeling krijgen we door de stroom te laten afhangen van het verschil tussen de momentane hoogte en de ingestelde hoogte:
F(n) = if h(n)>hmax then 0 else Fkraan*(hmax-h(n))/hmax
ofwel
F(n) = MAX (0; Fkraan*(hmax-h(n))/hmax))
Opdracht: werk dit verder uit, en experimenteer met andere functies die afhangen van het verschil hmax-h(n).
Samenvatting
Bij regelproblemen zoals deze, waarbij continue processen bestuurd worden door een tijd- en waarden-discreet regelaar, is het van belang dat zowel het tijdsgedrag (bemonsteringsfrequentie/sample frequency; vertraging/latency) als het waarden-gedrag passen bij het gedrag van het systeem. Als bijvoorbeeld de bemonsteringsfrequentie veel lager is dan het tijdsgedrag van het systeem, zal de parameter waar we op willen sturen, zoals de gewenste waterhoogte in de bak, mogelijk grote uitschieters vertonen. Eenzelfde probleem doet zich voor als de waarden waarmee we het systeem aansturen, niet passen (in dit geval, de stroom uit de kraan).