Skip to main content

Les 3: Voorwaardelijke uitspraken

In de vorige les hebt u geleerd hoe u gegevens van de optische sensor in een project kunt gebruiken om een schijf op kleur te sorteren. In deze les bouwt u voort op wat u hebt geleerd en onderzoekt u de opties in VEXcode waarmee het project een beslissing kan nemen, ongeacht welke kleur door de optische sensor wordt gedetecteerd. Je leert over: 

  • Waarom het optimaliseren van besluitvorming belangrijk is in een industriële omgeving.
  • Het verschil tussen de blokkenAls dan,Als dan andersenAls dan.

Meerdere voorwaarden controleren

In de vorige les hebt u een project gemaakt waarmee u een schijf op kleur kunt sorteren: een rood of een groen palet. Hoewel dit effectief is, kan het project slechts één schijf tegelijk sorteren. In een fabriek moeten veel objecten herhaaldelijk worden gesorteerd en gepalletiseerd. Om dit effectief te kunnen doen, moet de 6-assige arm herhaaldelijk kunnen beslissen hoe de objecten moeten worden verplaatst, en of er menselijke tussenkomst nodig is. Denk eens aan de kubussen die u hebt verplaatst in de cursus Inleiding tot de 6-assige arm.Close-up van de 6-assige arm die een blauwe kubus boven de optische sensor houdt.

Wat als er een blauwe Cube in de laadzone zou staan? Wat zou er gebeuren in het project van de vorige les? In een industriële omgeving moeten alle mogelijke omstandigheden in overweging worden genomen. Als er een afwijkend object tussen de te sorteren objecten terechtkomt, is er waarschijnlijk menselijk ingrijpen nodig om ervoor te zorgen dat de werkcel en de werknemers eromheen veilig blijven en effectief blijven functioneren.

SequentieelAls danblokken

In de vorige les hebt u tweeAls danblokken achter elkaar gebruikt om twee afzonderlijke voorwaarden één voor één te controleren. U stelt hiermee feitelijk twee vragen binnen het project.

Voorbeeld van een VEXcode-project waarmee de uitdaging in de vorige les kan worden voltooid. Er staat een rode markering op de opmerking Verplaats de schijf naar het juiste pallet en de twee daaropvolgende If then-blokken daaronder. De blokken in het rode gemarkeerde vak luiden als volgt: als optisch 5 rood detecteert, verplaats dan arm 10 naar positie x 169 y 150 z 100, en als optisch 5 groen detecteert, verplaats dan arm 10 naar positie x 172 y 1 z 100.

Eerst Is het object rood?, danIs het object groen?. Elke voorwaarde wordt elke keer dat het project wordt uitgevoerd gecontroleerd, ongeacht wat er door de optische sensor wordt gedetecteerd. Hoewel u met deze structuur effectief één schijf tegelijk kunt sorteren, is dit niet de meest efficiënte manier om dit te doen. Een rode schijf kan worden gesorteerd, maar de optische sensor kan ook iets groens detecteren van iets anders in de omgeving, en vice versa. Ook wordt er geen rekening gehouden met een object dat noch rood noch groen is, zoals een onverwacht object dat een veiligheidsprobleem zou kunnen veroorzaken.

Projectstroomafbeeldingen

In deze les worden afbeeldingen gedeeld die de stroom van VEXcode-projecten uitleggen. U kunt deze afbeeldingen opnieuw maken in uw technisch notitieboekje en tijdens het doorlopen van de les. 

Gebruik hulpmiddelen in Google Presentaties of Microsoft PowerPoint, zoals pijlen, kaders of stroomdiagrammen, om visualisaties te maken die het beste bij u passen in uw notitieboek.

Lijngereedschapskist in Google Presentaties geopend. In de werkbalk ziet u de opties voor Lijn, Pijl, Elleboogverbinding, Gebogen verbinding, Curve, Polylijn en Krabbel.

 

SequentieelAls dan andersblokken

Er is een ander blok dat gebruikt kan worden om zowel de rode als de groene omstandigheden te controleren en rekening te houden met een andere kleur. Het blokIf then elseis een C-blok dat de blokken in deif-tak of deelsetak uitvoert, op basis van de gerapporteerde Booleaanse waarde.

Fragment code dat gebruikmaakt van een if-then-else-blok met rode en groene pijlen om de projectstroom aan te geven. Het project luidt als volgt: verplaats de schijf naar het juiste pallet. Als optisch signaal 5 rood detecteert, verplaats dan arm 10 naar positie x 169 y 150 z 100. Anders stelt u signaaltoren 6 in op blauw en knipperend. Stel arm 10 in op gecontroleerde stop. Merk op dat de twee opdrachten na else zich allemaal in de else-tak van het if then else-blok bevinden. Een groene pijl en de tekst 'Optisch' detecteren rode ware punten van het If then-blok naar het move to position-blok. Een rode pijl met optische tekstweergave detecteert rode valse punten van de if then naar het ingestelde signaaltorenblok aan het begin van de else-tak.

Nadat de ifbranch of de elsebranch is uitgevoerd, gaat het project naar het volgende blok in de stack. De projectstroom vanAls dan Andersblokken kan ook worden weergegeven om de takken beter zichtbaar te maken.

Dezelfde projectstroom als hiervoor, maar met de if-branch en de else-branch gescheiden voor de duidelijkheid. Links staat in het rood de tekst 'rood niet gedetecteerd, anders vals' met een pijl die naar de ingestelde signaaltoren en de ingestelde, gecontroleerde stopblokken wijst. Rechts ziet u de tekst 'rood gedetecteerd waar' met daaronder een pijl die naar het blok 'verplaats naar positie' wijst. Zowel links als rechts staan oranje pijlen, wat aangeeft dat ze doorgaan met het project onder het if-then-else-blok.

Houd er rekening mee dat in deze voorbeelden de tak anderswordt gebruikt om de voorwaarde te verwerken dat een object noch rood noch groen is. In dat geval is menselijk ingrijpen nodig. Eerder leerde u dat het blauwe licht op de signaaltoren dient om aan te geven dat er menselijk ingrijpen nodig is. Bovendien zorgt een gecontroleerde stop ervoor dat de beweging van de 6-assige arm stopt om de veiligheid van mens en machine te garanderen. Aan de takanderskunnen een blok Set signaaltorenen een blokSet bedieningsstopworden toegevoegd, zodat een object dat niet rood of niet groen is, deze veiligheidsvoorzieningen activeert.

Inhoud van de else-tak van het If then else-blok, aangegeven met een rood kader. Dit omvat het ingestelde seinhuisblok en het armbediende stopblok.

De beelden lieten tot nu toe alleen zien hoe je met de conditie van het rode object moet omgaan. Nog een als, anders isnodig om de conditie van het object te controleren, namelijk groen.

Hetzelfde vexcode-project met een tweede if-then-else-blok direct na het eerste toegevoegd. Dit blok en de blokken die het bevat, luiden als volgt: als optisch 5 groen detecteert, beweeg dan arm 10 naar positie x 172 y 1 z 100, anders zet u signaaltoren 6 op blauw en knipperend, zet u arm 10 op besturing gestopt.

Laten we eens nadenken over de projectstroom met deze structuur. Elke keer dat het project wordt uitgevoerd, worden er meerdere vertakkingen uitgevoerd, ongeacht welke kleur door de optische sensor wordt gedetecteerd.

Projectstroomafbeelding voor twee 'als' dan 'als'-blokken. In de bovenste helft is dezelfde projectstroom te zien als eerder. Vervolgens is een oranje pijl te zien die van het eerste if-then-else-blok naar het tweede loopt. Het tweede if then else-blok heeft groene pijlen en de tekst ernaast, met de tekst: optical detects green true. De pijl wijst van de if then naar het move to position-blok binnen de if then-tak. Vanaf hetzelfde punt verschijnen rode tekst en een rode pijl met de tekst: Optisch detecteert groen onwaar. De pijl wijst van de if then naar het set signal tower-blok in de else-tak.

Laten we dit eens met een rode schijf als voorbeeld bekijken. Als de optische sensor rood detecteert, is de conditie van het eersteIf-blok dan anderswaar. Het blok binnen dealstak zou draaien en de 6-assige arm over het rode pallet verplaatsen. De voorwaarde in het tweedeIf then elseblok zou echter als false worden gerapporteerd. Dit betekent dat het blok binnen zijnanderstak zou gaan draaien, waardoor de 6-assige arm gecontroleerd zou stoppen en blauw zou gaan knipperen op de signaaltoren. Omdat de 6-assige arm zich in een gecontroleerde stoptoestand zou bevinden, konden geen andere blokken in het project worden uitgevoerd en zouden alle bewerkingen worden stopgezet totdat het probleem was opgelost. 

Projectflow doorloopt het voorbeeld van de optische sensor die rood detecteert. De notities en pijlen aan de zijkant van het project geven 'optisch detecteert rood waar' aan, en dan de verplaatsing naar positieblok in de eerste als dan de vertakking zal worden uitgevoerd. De tekst eronder luidt: else branch wordt niet uitgevoerd omdat de if then branch is uitgevoerd. Een pijl wijst naar het tweede if-then-else-blok. De tekst ernaast luidt: optisch detecteert groen 'false' en wijst de rode pijl naar de else-tak van het tweede if-then-else-blok. een oranje pijl wijst van het ingestelde armblok naar het stopblok aan de zijkant. Wanneer arm 10 het stopblok stopt, wijst deze naar de zijkant. De tekst hieronder luidt: 'Controlestop' wordt geactiveerd en stopt alle blokken, behalve de blokken die aan het blok zijn gekoppeld waarop 'Controlestop' is toegepast.

We kunnen nu weliswaar rekening houden met een onverwacht object (zoals een blauwe kubus), maar de 6-assige arm zal nooit het punt in het project bereiken waarop de schijf op het pallet wordt losgelaten. In plaats van de rode en groene condities één voor één te controleren, is er een manier om te controleren of een object groen isen alleenals het object niet rood is.   

GenesteAls dan andersblokken 

Elk van de takken van hetIf then elseblok kan andere C-blokken binnen zich opnemen. Dit wordt 'nesten' genoemd. Dit betekent dat het tweedeIf then elseblok genest kan worden binnen deelsetak van het eerste, zoals hier.Hetzelfde project als hierboven, maar met het tweede if then else-blok in de else-tak van het eerste if then else-blok. Een rood vakje staat om de tweede if-then-else-reeks die is genest in de else-tak van het eerste if-then-else-reeksblok.

Vanaf nu wordt de conditie van de optische sensor die groen detecteert alleen gecontroleerd als de vorige conditie (optische sensor die rood detecteert) als onwaar rapporteert. Wanneer de optische sensor dus rood detecteert, wordt alleen de eerstealstak uitgevoerd, waardoor de schijf boven het rode palet komt. 

Close-up van het project met het verplaatsingsblok naar de positie in de if-then-tak van het eerste if-then-else-blok, aangegeven met een rood kader.

Als de optische sensor groen detecteert, zou de conditie van de eerstealstak (optisch detecteert rood) onwaar rapporteren, en dus zouden deanderstakken worden uitgevoerd. De conditie van het geneste Indien dan zou andersblok gecontroleerd worden om te zien of de optische sensor groen detecteert. Die voorwaarde zou als waar worden gerapporteerd, wat betekent dat het blok in de tweedealstak zou worden uitgevoerd en de schijf over het groene palet zou worden verplaatst. 

Als de optische sensor noch rood noch groen detecteert (zoals in het geval van een blauwe kubus die wordt opgepikt), worden beide omstandigheden als onwaar gerapporteerd. De takandersvan het geneste blokAls dan anderswordt uitgevoerd, waardoor een gecontroleerde stop wordt geactiveerd en werknemers worden gewaarschuwd dat er menselijk ingrijpen nodig is. Deze projectstromen kunnen ook worden gevisualiseerd als een stroomdiagram, zoals hier weergegeven.

Diagram dat de stroom van een project uitlegt. Bovenaan staat de vraag: detecteert optisch rood? Er vertakt zich een groene lijn naar links, die aangeeft dat je boven het rode pallet moet gaan staan. Vanaf daar gaat er een oranje lijn naar beneden, die aangeeft dat je de schijf op het juiste pallet moet plaatsen. Er is een rode lijn die aftakt van de oorspronkelijke vraag en aangeeft dat het antwoord 'onwaar' is. Dit leidt tot een andere vraag: detecteert optisch groen? Opnieuw geeft de groene lijn rechts 'waar' aan en ga boven het groene palet staan. Deze is verbonden met een oranje lijn naar hetzelfde vakje als de andere groene lijn waarop staat 'Plaats de schijf op het juiste pallet'. Rechts is de rode lijn te zien die aangeeft dat het signaal 'vals' is en stel de signaaltoren in op knipperend blauw en activeer de stopfunctie.

GenesteAls dan andersblokkenkunnen worden beschouwd als een trapsgewijze lijst met vragen. De vragen zijn hier als volgt: 

  1. Is het voorwerp rood? 
    1. Ja? Ga aan de kant van het rode palet en stop met het stellen van vragen.
    2. Nee? Stel nog een vraag. 
      1. Is het object groen?
        1. Ja? Ga aan de kant van het groene palet en stop met het stellen van vragen.
        2. Nee? Dan is het voorwerp niet rood of groen. Verander de kleuren van de signaaltoren en activeer een gecontroleerde stop.

Let op: deze vragen worden alleen gesteld als het antwoord op de vorige vraag ontkennend is. 

Hoewel hiermee alle voorwaarden die we willen controleren worden afgehandeld, is er nog een ander blok dat de voorwaarden op dezelfde manier controleert. Dit blok is echter eenvoudiger te bouwen dan het nesten van blokken. 

Anders alsBlok

Met het blok Else if kunt u meerdere voorwaarden binnen hetzelfde blok controleren. Elke voorwaarde in dit blok wordt sequentieel gecontroleerd, maar alleen als de voorgaande voorwaarde als onwaar wordt gerapporteerd. Als alle Booleaanse voorwaarden voor de else if-vertakkingen onwaar zijn, worden de blokken in de else-sectie uitgevoerd.

Anders als blok in VEXcode. Dit blok luidt 'if then else if then else' en heeft een pluspictogram om het uit te vouwen en extra if then else-segmenten aan het blok toe te voegen.

Dit blok heeft dezelfde projectstroom als de genesteIf then elseblokken, maar is eenvoudiger te bouwen omdat er geen blokken hoeven te worden genest. In de volgende les leert u meer over coderen met het Else ifblok.

Controleer uw begrip

Voordat u doorgaat naar de volgende les, moet u ervoor zorgen dat u de concepten in deze les begrijpt door de volgende vragen in uw technische notitieboekje te beantwoorden.

Controleer uw begrip vragen > (Google Doc/ .docx / .pdf)


SelecteerVolgende >om het blok Anders alsin een project toe te passen.