In der vorherigen Lektion haben Sie gelernt, wie Sie Daten vom optischen Sensor in einem Projekt verwenden, um einen Datenträger nach Farbe zu sortieren. In dieser Lektion bauen Sie auf dem auf, was Sie gelernt haben, um Optionen in VEXcode zu erkunden, die es dem Projekt ermöglichen, eine Entscheidung zu treffen, unabhängig davon, welche Farbe vom optischen Sensor erkannt wird. Sie erfahren mehr über:
- Warum die Optimierung der Entscheidungsfindung in einem industriellen Umfeld wichtig ist.
- Der Unterschied zwischen den Blöcken If then, Ifthen else und Else if.
Überprüfen mehrerer Bedingungen
In der vorherigen Lektion haben Sie ein Projekt erstellt, das einen Datenträger nach Farbe auf eine rote Palette oder eine grüne Palette sortieren konnte. Dies ist zwar effektiv, aber das Projekt konnte jeweils nur eine Festplatte sortieren. In einer Werkseinstellung müssen viele Objekte wiederholt sortiert und palettiert werden. Um dies effektiv zu tun, muss der 6-Achsen-Arm in der Lage sein, wiederholt eine Entscheidung darüber zu treffen, wie die Objekte bewegt werden sollen oder ob ein menschliches Eingreifen erforderlich ist. Betrachten Sie die Würfel, die Sie im Kurs Einführung in den 6-Achsen-Arm bewegt haben.
Was wäre, wenn ein blauer Würfel in der Ladezone wäre? Was würde im Projekt aus der vorherigen Lektion passieren? In einem industriellen Umfeld müssen alle möglichen Bedingungen berücksichtigt werden. Wenn ein fehlerhaftes Objekt in die zu sortierenden Objekte gemischt wird, wäre wahrscheinlich ein menschliches Eingreifen erforderlich, um sicherzustellen, dass die Arbeitszelle und die Arbeiter um sie herum sicher bleiben und effektiv funktionieren.
Sequentiell Wenn dann Blöcke
In der vorherigen Lektion haben Sie zwei Wenn-dann-Blöcke nacheinander verwendet, um zwei separate Bedingungen nacheinander zu überprüfen und im Wesentlichen zwei Fragen innerhalb des Projekts zu stellen.

Zuerst ist das Objekt rot?, dann ist das Objekt grün?. Jede Bedingung wird jedes Mal überprüft, wenn das Projekt ausgeführt wird, unabhängig davon, was vom optischen Sensor erkannt wird. Während diese Struktur es Ihnen ermöglichte, eine Festplatte nach der anderen effektiv zu sortieren, ist dies nicht der effizienteste Weg, dies zu tun. Eine rote Platte könnte sortiert werden, aber der optische Sensor könnte auch Grün von etwas anderem in der Umgebung erkennen und umgekehrt. Es wird auch keine Rücksicht auf ein Objekt genommen, das weder rot noch grün ist, wie ein unerwartetes Objekt, das ein Sicherheitsproblem verursachen könnte.
Projektablaufbilder
Während dieser Lektion werden Bilder geteilt, die den Ablauf von VEXcode-Projekten erklären. Sie können diese Bilder in Ihrem technischen Notizbuch neu erstellen, während Sie die Lektion durchgehen.
Verwenden Sie Tools in Google Folien oder Microsoft PowerPoint wie Pfeile, Kästchen oder Flussdiagramme, um Visualisierungen zu erstellen, die für Sie in Ihrem Notizbuch am besten geeignet sind.

Sequentiell Wenn dann sonst Blöcke
Es gibt einen anderen Block, der verwendet werden könnte, um es uns zu ermöglichen, sowohl die roten als auch die grünen Bedingungen zu überprüfen und eine andere Farbe zu berücksichtigen. Der If then else-Block ist ein C-Block, der die Blöcke entweder innerhalb des if-Zweigs oder des else-Zweigs basierend auf dem gemeldeten Booleschen Wert ausführt.

Nachdem entweder der if-Zweig oder der else-Zweig ausgeführt wurde, wird das Projekt zum nächsten Block im Stapel verschoben. Der Projektablauf von If then else-Blöcken kann ebenfalls angezeigt werden, um die Zweige sichtbarer zu machen.

Beachten Sie, dass in diesen Beispielen der Else -Zweig verwendet wird, um den Zustand eines Objekts zu behandeln, das weder rot noch grün ist. In diesem Fall wäre ein menschliches Eingreifen erforderlich. Zuvor haben Sie gelernt, dass das blaue Licht auf dem Signalturm verwendet wird, um menschliches Eingreifen anzuzeigen. Darüber hinaus stoppt ein kontrollierter Stopp die Bewegung des 6-Achsen-Arms, um Menschen und Maschinen zu schützen. Dem Else Zweig kann ein Set Signal Tower Block und ein Set Control Stop Block hinzugefügt werden, so dass ein Objekt, das nicht rot oder nicht grün war, diese Sicherheitsmerkmale auslösen würde.

Die bisherigen Bilder haben nur gezeigt, wie man mit dem Zustand des roten Objekts umgeht. Ein weiteres If else wird benötigt, um den Zustand des Objekts zu überprüfen, das grün ist.

Lassen Sie uns über den Projektablauf mit dieser Struktur nachdenken. Jedes Mal, wenn das Projekt ausgeführt wird, werden mehrere Zweige ausgeführt, unabhängig davon, welche Farbe vom optischen Sensor erkannt wird.

Betrachten wir dies mit einer roten Festplatte als Beispiel. Wenn der optische Sensor Rot erkennt, wird der Zustand des ersten If then else-Blocks als wahr gemeldet. Der Block innerhalb der if-Verzweigung würde laufen und den 6-Achsen-Arm über die rote Palette bewegen. Die Bedingung innerhalb des zweiten If then else-Blocks würde jedoch als falsch gemeldet. Dies bedeutet, dass der Block in seinem anderen Zweig laufen würde, wodurch der 6-Achsen-Arm in einen kontrollierten Stopp versetzt würde und auf dem Signalturm blau blinken würde. Da sich der 6-Achsen-Arm in einem kontrollierten Stopp-Zustand befinden würde, könnten keine anderen Blöcke im Projekt ausgeführt werden, und das würde alle Operationen einstellen, bis es gelöst wurde.

Wir können jetzt zwar ein unerwartetes Objekt (wie einen blauen Würfel) erklären, aber der 6-Achsen-Arm wird niemals den Punkt im Projekt erreichen, an dem die Festplatte auf die Palette freigegeben wird. Anstatt die roten und grünen Bedingungen nacheinander zu überprüfen, gibt es eine Möglichkeit, nur dann zu überprüfen, ob ein Objekt grün ist , wenn das Objekt nicht rot ist.
Verschachtelt Wenn dann sonst Blöcke
Jeder der Zweige des If then else-Blocks kann andere C-Blöcke in sich aufnehmen. Dies wird als "Verschachtelung" bezeichnet. Dies bedeutet, dass der zweite If then else-Block innerhalb des else-Zweigs des ersten verschachtelt werden kann, wie folgt.
Jetzt wird der Zustand des optischen Sensors, der grün erkennt, nur überprüft, wenn der vorherige Zustand (optischer Sensor erkennt rot) als falsch gemeldet wird. Wenn der optische Sensor also Rot erkennt, würde nur der erste Zweig laufen und die Platte über die rote Palette bewegen.

Wenn der optische Sensor grün erkennt, würde der Zustand des ersten Zweigs (Optisch erkennt rot) falsch melden, so dass der andere Zweig laufen würde. Der Zustand des verschachtelten If then else-Blocks würde überprüft, um zu sehen, ob der optische Sensor grün erkennt. Diese Bedingung würde als wahr gemeldet, so dass der Block innerhalb der Sekunde , wenn der Zweig laufen würde, die Festplatte über die grüne Palette bewegen würde.
Wenn weder Rot noch Grün vom optischen Sensor erkannt würden (wie im Fall eines aufgenommenen blauen Würfels), würden beide Bedingungen als falsch gemeldet, und so würde der else-Zweig des verschachtelten If then else-Blocks ausgeführt, was einen kontrollierten Stopp auslöst und die Arbeiter auf die Notwendigkeit eines menschlichen Eingriffs aufmerksam macht. Diese Projektabläufe können auch als Flussdiagramm visualisiert werden, wie hier zu sehen.

Verschachtelt Wenn dann sonst können Blöcke als kaskadierende Liste von Fragen betrachtet werden. Hier sind die Fragen wie folgt:
- Ist das Objekt rot?
- Ja? Bewegen Sie sich über die rote Palette und hören Sie auf, Fragen zu stellen.
- Nein? Stellen Sie eine weitere Frage.
- Ist das Objekt grün?
- Ja? Bewegen Sie sich über die grüne Palette und hören Sie auf, Fragen zu stellen.
- Nein? Dann ist das Objekt nicht rot oder grün. Ändern Sie die Farben des Signalturms und lösen Sie einen kontrollierten Stopp aus.
- Ist das Objekt grün?
Beachten Sie, dass die Fragen nur gestellt werden, wenn die vorherige Frage negativ beantwortet wird.
Während dies alle Bedingungen behandelt, die wir überprüfen möchten, gibt es einen weiteren Block, der die Bedingungen auf die gleiche Weise überprüft, aber einfacher zu bauen ist als das Verschachteln von Blöcken.
Andernfalls, wenn Block
Mit dem Block Andernfalls können Sie mehrere Bedingungen innerhalb desselben Blocks überprüfen. Jede der Bedingungen in diesem Block wird nur dann sequentiell überprüft, wenn die vorhergehende Bedingung als falsch gemeldet wird. Wenn alle booleschen Bedingungen für den else, wenn Zweige falsch sind, werden die Blöcke innerhalb des else-Abschnitts ausgeführt.

Dieser Block hat den gleichen Projektfluss wie die verschachtelten If then else-Blöcke , ist aber einfacher zu erstellen, da keine Blöcke verschachtelt werden müssen. In der folgenden Lektion erfahren Sie mehr über das Codieren mit dem Block Else if.
Überprüfe dein Verständnis
Bevor Sie mit der nächsten Lektion fortfahren, stellen Sie sicher, dass Sie die Konzepte in dieser Lektion verstehen, indem Sie die folgenden Fragen in Ihrem technischen Notizbuch beantworten.
Fragen zum Verständnis prüfen > (Google Doc / .docx / .pdf )
Wählen Sie Weiter > , um den Else if -Block in einem Projekt anzuwenden.