| | Lösung für den Magnet Robot und ROBO Pro
Allgemeines zum Roboter und der Programmlogik siehe Hanoi-Seite
Im Lieferumfang von ROBO Pro ist ein Beispiel für einen
"Hanoi-Roboter" enthalten. Es basiert auf dem Säulen-Roboter der
Industry Robots und stellt eine recht anspruchsvolle Lösung dar, die alle
Komponenten des Robots nutzen.
Auf der Hanoi-Seite werden nun
Lösungen für den oben abgebildeten deutlich einfacheren Roboter in den
unterschiedlichsten Programmiersprachen gezeigt. Hier nun eine Lösung für ROBO
Pro und das ROBO Interface. Ein Betrieb mit dem Intelligent Interface (im Online
Modus) ist genauso möglich.
Die vorgestellte - graphische - Lösung entspricht im Aufbau und
der Namensgebung den bisherigen textuellen Lösungen. Die interessantesten
Routinen werden hier vorgestellt - einschl. einiger Anmerkungen für
LLWin-Kenner -, das vollständige Programm ist zusammen mit den anderen
Lösungen in HanoiRob.ZIP zu finden. Zusätzlich
wird ein installiertes ROBO Pro benötigt :
Das Hauptprogramm
|
Sieht vollkommen harmlos aus.
Mit GStellung wird auf die Grundstellung (PosA) gefahren.
Hanoi ist das (rekursive) Steuerprogramm für die Hanoilogik. Neu
gegenüber LLWin ist hier die Möglichkeit ein Unterprogramm mit direkten
Parametern aufzurufen.
- Konstante 3 : Anzahl der Scheiben
- Globale Variable PosA, PosB, PosC : Positionen der
"Stapelplätze" in Anzahl Impulsen ab Endtaster. Die Variablen
werden bei Programmstart mit den angegebenen Werten initialisiert.
Konstanten wären hier ebenfalls möglich gewesen, so kann aber GStellung
auf einfache Weise die gleiche Variable PosA nutzen um die Position des
Ausgangsstapels anzufahren.
Das grüne und das rote Männchen dienen der Traditionspflege zu LLWin,
das in der Nähe von Magdeburg entstand. |
Die Hanoilogik
|
Kernpunkt der Hanoilogik ist das kunstvolle
Vertauschen der jeweiligen Stapelpositionen auf jeder Rekursionsstufe. Der
eigentliche Zug - das Umlegen der jeweils oberen Scheibe - fällt dann
kaum noch auf. Diese Routine enspricht fast vollständig der Lösung, die
ROBO Pro bei den Beispielen beiliegt. Unterschied : hier wird auf
Rekursionsende n = 1 abgefragt (Ersparnis einer zusätzlichen
Rekusionsstufe, dafür im Endezweig ein weiterer Ziehe-Aufruf), die ROBO
Pro Lösung fragt auf n = 0 ab.
Besonders auffällig ist hier das vermehrte Auftreten der gelben
Linien, die für den Datenfluß stehen. Die sargartigen Symbole an der
linken Seite stehen für die Aufrufparameter (Ausgangsparameter sind
ebenfalls möglich). Eingang und Ausgang sprechen für sich (es sind
mehrere zulässig).
ROBO Pro bietet keine textuellen Ausdrücke (z.B. n - 1). Das wird hier
auch graphisch über entsprechende Operatoren erledigt (gilt auch für
logische Operationen).
Allgemein : ROBO Pro kennt ein Level Konzept, das die Komplexität der
zur Verfügung stehenden Funktionen regelt. Level 1 und 2 bieten
Funktionen, die weitgehend den bekannten Funktionen von LLWin entsprechen
(Variablen sind hier aber unbekannt). Level 3 führt globale und lakale
Variable ein und huldigt den gelben Linien.
Das Hanoi-Programm ist in Level 3 erstellt. |
Zugriff auf das Interface
|
Die Routine ASenken tut nichts weiter als den
Armmotor an einer Zahnstange herunterfahren bis der zugehörende Endtaster
geschlossen ist.
Das Symbol mit dem roten Links-Kringel liefert eine Nachricht für
einen Links-Dreh in Geschwindigkeitsstufe 8, die Nachricht geht an Motor
M2 des ersten Interfaces (ROBO oder Intelligent Interface, je nach
Voreinstellung).
Das J-Symbol im (schwarzen) Steuerfluß wartet auf eine Nachricht (oder
auch Signal), daß der Taster an I4 geschlossen wurde. Danach wird ein
Stop-Signal an den Motor gesendet.
Die von LLWin bekannten Symbole (Parallelogramme und Pastillen) werden
mit Level 1 eingeführt und können alternativ zu den hier angegebenen
genutzt werden. |
Ansteuerung einer Stapelposition
|
SNach steuert eine vorgegebene Position (Anzahl
Impulse ab Endtaster) an.
Der Parameter ZPos enthält die ZielPosition, die globale Variable
RobPos die aktuelle Position.
Im A?B-Symbol wird die Zielposition mit der aktuellen verglichen, bei
Gleichheit ist das Ziel erreicht.
Ist die Zielposition größer als die aktuelle werden Impulse von I2
(gelbe Symbole) auf RobPos addiert (+1 Symbol) sonst subtrahiert. Der
Motor an M1 wird in der entsprechenden Drehrichtung mit Fullspeed
angesteuert (Linksdrehend : zum Endtaster).
Anmerkung : Zuweisungsoperationen (=, +, -) werden mit dem
zugehörenden Wert gekoppelt angegeben (-1 entspricht RobPos -= 1; in C++
Schreibweise). Alternative können auch Werte über gelbe Linien von links
durchgeleitet werden. |
Die weiteren Routinen sind trivial und wiederholen nur die hier schon
gezeigten ROBO Pro Elemente.
Stand : 10.03.2005
|