Positionierung

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

Überlegungen zur Positioniergenauigkeit

Am Beispiel der Industry Robots Modelle : Betrachtungen zur erzielbaren Positionierungsgenauigkeit.

Die Positionsbestimmung der Robots erfolgt über ein Impulsrad mit vier Zähnen auf der jeweiligen Motorwelle das seinerseits einen Taster betätigt. Die Tasterstellung wird vom Programm über einen Digitaleingang abgefragt. Bei Unterscheidung von Geschaltet und Nichtgeschaltet ergeben sich pro Umdrehung der Motorwelle 8 Impulse.

Die Motoren treiben zur Arm- und Greiferbewegung über ein Schneckenrad eine Schnecke mit 4,75 mm Steigung an. Zur Drehung der Säule wird von der (eingängigen) Schnecke ein Zahnrad mit 60 Zähnen (Schätzwert, Ergebnis einer gewissenhaften Nachzählung : 58 Zähne) angetrieben. Daraus ergeben sich folgende Positionierungswerte pro Impuls :

Schnecke : 4,75 mm / 8 = 0,6 mm / Impuls*

Zahnrad : 1/8 Zahn / Impuls*

* für die Impuls-Bearbeitung stehen dem Programm bei 9V Motorspannung ca. 40 mSek zur Verfügung. Das Einlesen des InputStatus beim seriellen Interface dauert knapp 10 mSek.

Wird die Schneckenbewegung 1 : 1 in eine Armbewegung umgesetzt ergibt sich eine (theoretische) Positionierungsgenauigkeit von 0,6 mm. Das trifft z.B. bei iSäule für Arm waagerecht und senkrecht, bei iKnick und iSchweis für Arm waagerecht zu.

Wird die Schneckenbewegung zusätzlich noch übersetzt ergeben sich andere (größere) Werte :
Der Greifer öffnet mit ca. 32 Impulsen um 55 mm. Das ist dann ein durchschnittliches Positionierungsincrement von 55/32 = 1.7 mm. Bei iKnick kann der Arm eine senkrechte Bewegung von ca. 185 mm machen. Dazu werden 14 Motorumdrehungen = 112 Impulse benötigt. Pro Impuls also durchschnittlich 185/112 = 1,65 mm. Bei iSchweis ist die senkrechte Bewegung des Arm komplexer, da die jeweilige Armlänge einbezogen werden muß.

Bei der Säulendrehung über das 60er Zahnrad wird die Säule pro Impuls um 360°/60 Zähne/8 Impulse = 0,75° gedreht. Bei einer Ausladung der Säule an der Greiferspitze von 300 mm ist das ein Weg von 300 mm x 2 x 3,14 = Umfang / 60 Zähne / 8 Impulse = 4 mm pro Impuls, bei einem mit iKnick erreichbaren Radius von 450 mm dann 6 mm.

Zu berücksichtigen sind noch Anfahr- und Bremsverhalten, sowie das Verhalten des Impulsrädchens. Bei den FishFace.Methoden MoveTo/MoveDelta wird intern ein Bremsprogramm gefahren.

Bei soviel Rechnerei erfreulich ist die im praktischen Run-Betrieb erzielbare Positionierungsgenauigkeit, die auch bei der Säule im Endlosbetrieb über viele Zyklen im mm-Bereich bleibt.

Beim TeachIn-Betrieb ist der manuelle Einfluß größer. So hat z.B. bei Positionieren in kleinen Schritten der Einfuß der genannten Nebeneffekte eine größere Bedeutung. Das führt in der Regel zu etwas größeren Fahrwegen als es den genannten Impulswegen entsprechen würde. Jedoch wird bei jedem Anfahren von Position 0 die Abweichung durch unbedingtes Anfahren des Endtasters wieder korrigiert. Im Run-Betrieb kann das dann zu abweichenden Fahrwegen führen. Hier ist also ein wenig Fingerspitzengefühl angesagt.

Die Modelle sind so konzipiert, daß während des Betriebes kaum relevanten Lageverschiebungen auftreten können. Beim Greifer kann sich schon mal (nach einem harten Anfahren der Endstellung) der Lagerpunkt in den Grundsteinen ein wenig verschieben, im Bedarfsfall hier korrigieren.

Besonders zu beachten sind externe Störeinflüsse wie z.B. neben den Robots laufenden andere Programme, aber auch zerren an der Programmform. Sie können das Verhalten der Modelle sehr stark - bis zum Crash - beeinflussen. Die Standardversion von FishFace.DLL fragt die Modellposition bei Fahrbewegungen in einer Endlosschleife ab. Wird dem FishFace-Prozeß durch das Betriebssystem bei laufendem Modell die Zeit entzogen, kann keine Positionskontrolle mehr erfolgen.Hier muß es also heißen : Wenn ein Robot-Programm läuft, muß ruhe auf dem Rechner herrschen.
Das Programm ftTeach verwendet eine spezielle Variante von FishFace.DLL, die die Positionsabfragen über den Multimedia-Timer macht. Hier besteht für das Robot-Programm eine rechtgroße Chance zeitgerecht bedient zu werden. Das Solitär-Programm z.B. kann simultan betrieben werden. Preis für diesen Luxus : Diese FishFace.DLL ist eine MultiThreading Anwendung, die in das Leben von Visual Basic-Programmierern eine Menge ungeahnter Streßfaktoren (kein Test in der Entwicklungsumgebung, Programmabbrüche aus heiterem Himmel (... den Hersteller fragen ...) bringt.