Turm von Hanoi

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail
 

Lösung für den Magnet Robot und ROBO Pro

Hanoi Robot

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