Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

6 Toestandsdiagrammen (opdrachten)

In dit deel vind je enkele voorbeelden, deels uitgewerkt, en deels zijn het opdrachten. Deze helpen om toestandsdiagrammen te begrijpen en te oefenen met het maken van toestandsdiagrammen. Kies zelf welke je interessant vindt.

6.1Voorbeeld: lichtbediening

Zonder toggle functie (versie 1)

In deze paragraaf ga je een toestandsdiagram maken voor een lamp die aan en uit kan met een drukknop.

Gebruik een drukknop om een lamp aan en uit te zetten. Zolang de drukknop is ingedrukt staat de lamp aan. Zodra de drukknop wordt losgelaten gaat de lamp uit.

Er zijn de volgende overgangen:

Er zijn de volgende acties:

  1. Lamp aan

  2. Lamp uit

Solution to Exercise 1

Met toggle functie (versie 2)

In deze paragraaf ga je een toestandsdiagram maken voor een lamp die aan en uit kan met een drukknop die een toggle functie heeft.

Bij de lamp uit de vorige opdracht ging de lamp uit zodra je de knop losliet. Dat is erg onhandig als je het licht wilt gebruiken om een boek te lezen. Je kunt in de plaats van een drukknop gebruik maken van een schakelaar. Een schakelaar blijft in de stand staan waarnaar je hem duwt. Het kan ook met een drukknop, maar dan moet je een toestandsdiagram maken dat een toggle functie nadoet.

Bij een drukknop met toggle functie zijn de volgende overgangen:

Er zijn de volgende acties:

  1. Lamp aan

  2. Lamp uit

Dit zijn dezelfde overgangen en acties als bij de drukknop zonder toggle, maar om een toggle te maken gebruik je elke overgang twee keer. Dit werkt als volgt.

Solution to Exercise 2

6.2Voorbeeld: hotelschakelaar

Met schakelaars (versie 1)

In deze paragraaf ga je een toestandsdiagram maken voor een lamp die aan en uit kan met twee schakelaars.

In hotels zijn vaak twee schakelaars aanwezig om het licht te bedienen: een schakelaar bij de deur en een schakelaar bij het bed. Dit voorbeeld gaat over het toestandsdiagram van een hotelschakelaar met twee schakelaars en een lamp (led).

Een hotelschakelaar werkt als volgt: als de stand van één van de schakelaars verandert, dan verandert de status van de lamp. Begin met alle schakelaar omlaag en de lamp uit. Als schakelaar A omhoog wordt gezet dan gaat de lamp (LED) aan. Als vervolgens B omhoog wordt gezet, dan gaat de lamp weer uit. Wordt vervolgens aan weer omlaag gezet, dan gaat de lamp weer aan, enzovoort.

Je hebt de volgende mogelijke toestandsovergangen:

De mogelijke acties zijn:

Solution to Exercise 3

Met drukknoppen (versie 2)

In deze paragraaf ga je een toestandsdiagram maken voor een lamp die aan en uit kan met twee drukknoppen met een toggle functie.

In nieuwe hotels zijn de schakelaars vaak vervangen door drukknoppen zonder toggle functie. Dit voorbeeld gaat over een toestandsdiagram van een hotelschakelaar met twee drukknoppen en een lamp (led).

Je gaat nu het toestandandsdiagram voor de hotelschakeling nog eens maken, alleen met drukknoppen werkt het op een iets andere manier dan met schakelaars. Als je een drukknop indrukt en vervolgens loslaat moet de lamp aangaan. Als een drukknop weer indrukt en vervolgens loslaat gaat de lamp weer uit. De drukknopjes krijgen dus een toggle-functie.

Je kunt de volgende toestandsovergangen gebruiken:

De mogelijke acties zijn:

Solution to Exercise 4

Oplossing met acht toestanden.

Legenda:

  • 1 = licht uit, geen knop ingedrukt

  • 2 = licht uit, knop A ingedrukt

  • 3 = licht uit, knop A en B ingedrukt

  • 4 = licht uit, knop B ingedrukt

  • 5 = licht aan, geen knop ingedrukt

  • 6 = licht aan, knop A ingedrukt

  • 7 = licht aan, knop A en B ingedrukt

  • 8 = licht aan, knop B ingedrukt

  • L- - licht uit

  • L+ = licht aan

  • A- = knop A ingedrukt

  • A+ = knop A niet ingedrukt

  • B- = knop B ingedrukt

  • B+ = knop B niet ingedrukt

Oplossing met drie toestanden.

Legenda:

  • 1 = licht uit, geen knop ingedrukt

  • 2 = licht aan, één knop ingedrukt

  • 3 = licht uit, twee knoppen ingedrukt

6.3Voorbeeld: lichtregulering

Dit voorbeeld gebruikt toestandsovergangen bij gebeurtenissen. De gebeurtenis vindt plaats het moment dat de status van een knop verandert van niet-ingedrukt naar ingedrukt. Lees het vorige hoofdstuk over toestandsovergangen met gebeurtenis of status als je het verschil tussen een gebeurtenis en status niet begrijpt.

Deel 1: drie standen

In deze paragraaf ga je een toestandsdiagram maken voor een lamp waarvan de felheid kan worden ingesteld met twee drukkknoppen.

Het systeem bestaat uit een lamp en twee knoppen. De lamp kan in drie standen worden gezet:

Het systeem heeft twee knoppen (A en B). Met knop A gaat de lamp feller branden. Bijvoorbeeld: als de lamp half aan is en knop A wordt ingedrukt, dan gaat de lamp helemaal aan. Met knop B gaat de lamp minder fel branden. De lamp is altijd in één van de drie bovengenoemde standen.

Solution to Exercise 5

Hieronder volgt een mogelijke uitwerking van opdracht a) over de lichtregulering.

Het begint met het proberen te bepalen welke toestanden er zijn. In de opdrachtomschrijving staat dat de lamp in drie standen kan staan. Het ligt voor de hand dat we die gebruiken voor de toestanden:

  1. Lamp is uit

  2. Lamp is half aan

  3. Lamp is helemaal aan

Die toestanden kunnen we vast tekenen, als drie bollen

Belangrijk om te weten is welke gebeurtenissen er zijn, op basis daarvan kun je de toestandsovergangen bepalen. Als je de tekst van de opdracht leest blijkt dat er twee knoppen zijn. Dat zijn de gebeurtenissen, er zijn er dus twee:

  • knop A wordt ingedrukt (en weer losgelaten)

  • knop B wordt ingedrukt (en weer losgelaten)

Voor elke toestand (dat zijn er drie) en elke gebeurtenis (dat zijn er twee) kunnen we bepalen wat de toestandsovergang wordt (3 x 2 = 6). Elke toestandsovergang teken je als een pijl. Dan krijg je zoiets als hieronder.

A betekent: knop A wordt ingedrukt, B betekent: knop B wordt ingedrukt.

Nu moeten de acties er nog bij. Bijvoorbeeld, wat moet er gebeuren als de lamp in toestand 2 is en op knop B wordt gedrukt? Dan moet de lamp uit gaan. Een actie zet je altijd bij een toestandsovergang (dus niet bij een toestand). Je krijgt dan dit:

Je ziet, niet bij iedere toestandsovergang hoeft een actie te staan.

We zijn nog niet helemaal klaar, begintoestand moet er bij. Dat is de initiele toestand waar het systeem in begint. Het lijkt logisch dat de lamp eerst uit is, we kiezen daarom toestand 1 als begintoestand. En om het toestandsdiagram overzichtelijk te houden, laten we de toestandsovergangen die naar zichzelf verwijzen en geen actie hebben weg. Dan krijg je dit.

We houden de teksten kort in het diagram om het overzichtelijk te houden. Het nadeel is dat misschien niet helemaal helder is wat er wordt bedoeld. Bijvoorbeeld, de pijl van toestand 1 naar toestand 2 waar bij staat A: lamp half aan zou beter kunnen zeggen:

(gebeurtenis) knop A wordt ingedrukt -> (actie) zet de lamp met halve intensiteit aan.

Deel 2: drie standen en twee kleuren

Solution to Exercise 6

De eerste vraag die je jezelf moet stellen is: welke toestanden herken ik? De lamp kent nu naast de drie standen (uit, half aan, fel) ook nog de mogelijkheid voor twee kleuren (rood en blauw). Hoeveel toestanden zijn er dan? Het lijkt er op dat dat er zes zijn, namelijk 3 standen x 2 kleuren:

  1. Lamp is uit / rood

  2. Lamp is half aan / rood

  3. Lamp is helemaal aan / rood

  4. Lamp is uit / blauw

  5. Lamp is half aan / blauw

  6. Lamp is helemaal aan / blauw

Laten we proberen het toestandsdiagram uit a) uit te breiden. We laten de acties nog even weg.

Wat zijn de mogelijke gebeurtenissen? Er zijn nu drie knoppen, dus drie gebeurtenissen:

  • knop A wordt ingedrukt

  • knop B wordt ingedrukt

  • knop C wordt ingedrukt

Dat betekent dat er mogelijk 6 (toestanden) x 3 (gebeurtenissen) = 18 mogelijke toestandsovergangen zijn. Nu kun je gaan kijken wat die toestandsovergangen precies zijn en ze als een pijl gaan tekenen. Eerst maar eens kijken wat er moet gebeuren als knop C wordt ingedrukt voor ieder van de toestanden.

Dan zijn we er nog niet, want we moeten ook duidelijk maken wat er gebeurt als knop A of B wordt ingedrukt als het systeem in toestand 4, 5 of 6 is.

Vervolgens moeten de acties erbij, dat doen we hieronder, weliswaar in het kort, anders wordt het onoverzichtelijk.

Het nadeel van korte teksten is dat het misschien niet helemaal helder is wat er moet gebeuren. Bijvoorbeeld, de pijl van toestand 2 naar toestand 5 waar bij staat C: blauw, zou beter kunnen zeggen:

(gebeurtenis) knop C wordt ingedrukt : (actie) zet het rode licht uit en zet het blauw licht half aan

Nog een voorbeeld: de pijl van toestand 1 naar toestand 2 waar bij staat A: 50% rood, zou beter kunnen zeggen:

(gebeurtenis) knop A wordt ingedrukt : (actie) zet het rode licht half aan

Een begintoestand hadden we al, dus dit zou het moeten zijn. Test je toestandsdiagram vervolgens voor jezelf. Wat gebeurt er bijvoorbeeld als je de knoppen C, dan A, dan C, dan A indrukt? En klopt dat met wat je verwacht dat het zou moeten doen?

Solution to Exercise 7

** Uitleg ** Er staat geen actie bij omdat het licht al uit is en uit moet blijven, zowel in toestand 1 als in toestand 4. Er hoeft dus niets te gebeuren als dan knop C wordt ingedrukt en dus is er geen actie.

6.4Voorbeeld: tamagotchi

Hier komt misschien nog wat, nu mag je het overslaan.

6.5Voorbeeld: valdetectie

Hier komt misschien nog wat, nu mag je het overslaan.