Skip to content

4.2 Programmieren unter ROBOPro

elektrofuzzis edited this page Jan 11, 2020 · 16 revisions

Den ftPwrDrive initialisieren

Um den ftPwrDrive im ROBOPro-Programm anzusteuern, ist im Gegensatz zum Arduino keine Initialisierung notwendig.


Einen Motor steuern

Mit dem folgenden Code-Snippet wird dem Controller mit setRelDistance das Ziel 1000 Schritte gesetzt.

Erst mit dem startMoving-Kommando startet der Motor. Es können so zunächst verschiedene Parameter für die Motoren gesetzt werden und diese dann gemeinsam gestartet werden.

Mit der Schleife wird auf das Ende der Bewegung aktiv gewartet. In der Schleife sollte ein TIMER benutzt werden, um den Controller nicht mit der Verarbeitung von isMoving-Kommandos zu fluten.


Mehrere Motoren steuern

Das Ansteuern von mehreren Motoren ist ebenfalls sehr einfach.

In diesem Code-Snippet werden für die Motoren M1 und M2 die Fahrziele 1000 bzw. 2000 Schritte gesetzt. Bei startMovingAll müssen auch beide Motoren angegeben werden.

Die Schleife prüft mit isMovingAll, ob noch mindestens ein Motor am Laufen ist. Um nicht immer die while-Schleife schreiben zu müssen, kann über das Kommando wait auch auf das Ende der Bewegung gewartet werden.

Die meisten Kommandos gibt es sowohl als einfache Implementierung um einen Motor zu steuern, als auch in der *-All-Fassung um mehrere Motoren gleichzeitig anzusprechen.

Ungewohnt ist, dass die Motoren nur über Konstanten und nicht mit den Werten 1..4 angegeben werden können. Der Grund ist sehr einfach – die Motornummern sind über Bits codiert und können bei den *-All-Kommandos einfach mit einem binären OR oder mit einem + verbunden werden.


Die Endstufen ein- und ausschalten

Ein Vorteil von Schrittmotoren ist, dass sie im Stillstand ihre Position aktiv halten können. Dazu werden die Spulen des Motors auch im Stillstand mit Strom versorgt.

Der Haltestrom führt allerdings zu zwei Nebeneffekten: Da weiterhin ein Strom fließt, werden im Stillstand die Motoren warm. Microstepping führt zusätzlich zu einem leisen, hochfrequentem Summen der Motoren.

Das aktive Halten der Position wird nicht in allen Modellen benötigt. Der ftPwrDrive kann den Haltestrom deshalb je Motor im Stillstand an- und abschalten.

Beim startMoving2-Kommando wird über den zweiten Parameter das Abschaltverhalten mit angegeben werden. Im Beispiel bleibt die Endstufe nach dem Ende der Verfahrbewegung eingeschaltet. Wird hier TRUE übergeben, wird die Endstufe wie bei startMoving nach dem Anhalten der Motoren ausgeschaltet.


Endschalter & Referenzpunkt

Für jeden Motor kann am ftPwrDrive ein Endschalter angeschlossen werden. An den Eingang werden Schalter als Schließer angeschlossen.

Ist der Kontakt geschlossen, so unterbricht der ftPwrDrive sofort die Fahrbewegung des zugehörigen Motors. Über zwei parallel geschaltete Schalter lassen sich auch zwei Endlageschalter für eine Achse aufbauen.

Der Endschalter lässt sich gleichzeitig über das homing-Kommando auch als Referenzpunkt verwenden.

Über den zweiten Parameter beim homing-Kommando wird die Richtung und die maximale Schrittanzahl angegeben. Wird im Beispiel der Endschalter nach 10000 Schritten nicht erreicht, so stoppt die Referenzfahrt.


Relative und absolute Koordinaten

Die bisherigen Beispiele arbeiteten immer mit relativen Kommandos, d.h. die Anzahl der zu fahrenden Schritte bezog sich auf die aktuelle Motorposition.

Der ftPwrDrive kann auch mit absoluten Koordinaten arbeiten. Dazu muss zunächst an einer passenden der Nullpunkt gesetzt werden.

Anschließend kann mit absoluten Koordinaten gearbeitet werden.



Absolute Koordinaten

In den bisherigen Beispielen wurden immer Schritte für die Distanzangaben verwendet. Bei der Ansteuerung eines Plotters ist es jedoch viel praktischer die Strecken in Millimetern anstatt in Schritten anzugeben.

Dieses Problem lösen die beiden Kommandos setGearFactor und setRelDistanceR.

Mit setGearFactor wird der Umrechnungsfaktor von realen Koordinaten – z.B. Millimeter – auf die dafür notwendigen Schritte angegeben. Für die normalen fischertechnik Bauteile gibt es Konstanten, im Beispiel der Schneckenantrieb. Bei setRelDistanceR wird nun die zu fahrende Strecke in Millimeter angegeben.

Über einen dritten Parameter kann setGearFactor ein Getriebe darstellen. Das Beispiel ist ein Getriebe aus einem Z40 und einem Z30 Zahnrad.

Anschließende Verfahrbewegungen werden dann in Umdrehungen angegeben.

Clone this wiki locally