Ansteuerung einer Schrittmotor-Achse mit dSpace DS1104 und Matlab/Simulink
Achsensteuerung mit dSpace DS1104 und Matlab Simulink
Aufgabenstellung
Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von einem dSpace Board (DS1104) mit einer Programmierung auf Basis von Matlab Simulink. Zwischen dem dSpace Board und dem Schrittmotor befindet sich zusätzlich noch ein GeckoDrive G201X als Motorsteuerung.
Aufbau / Schaltplan
Im Allgemeinen ist der Aufbau der Hardwarekomponenten wie bei den meisten Steuerungen in Last- und Steuerkreis aufgeteilt.
Laststromkreis:
- alle Verbindungen zwischen der Spannungsversorgung (Power Supply), dem Geckodrive und dem Schrittmotor
Steuerstromkreis:
- alle Verbindungen zwischen der dSpace Ausgabebox (dSpace CP1104) und dem Geckodrive
Zum Programmieren wurde nach Schaltplan ein Versuchsaufbau generiert, damit erste Ergebnisse direkt erkannt und dokumentiert werden konnten.
Pinbelegung am SubD-Stecker der Ausgabebox
Regelkreis
Für diesen Anwendungsfall startet der Regelkreis mit dem Einlesen eines bestimmten Weges über eine RS232 Schnittstelle. Dieser Wert ist der Sollwert der Position (Xsoll). Aus dieser Position wird durch die Programmierung auf dem dSpace Board ein PWM Signal erzeugt, welches eine bestimmte Anzahl an High-Pegeln an den Geckodrive sendet. Jeder High-Pegel steht für einen Schritt. Der Schrittmotor setzt diese Signale dann in 1.8° Schritte um und entlang der Linearachse wird ein Weg verfahren. Ein Encoder soll dann diesen Weg durch Rückgabewerte zurücksenden, so dass ein kontinuierlicher Vergleich zwischen der Ist- und der Sollposition stattfinden kann, bis keine Regeldifferenz vorhanden ist.
Starten einer Simulink Programmierung inkl. ControlDesk
Informationen zum Start einer Simulink Programmierung inkl. Anbindung von ControlDesk sind unter diesem Link zu finden: Datei:Start Simulink und ControlDesk.pdf
Simulink Programm
Im Simulink Programm startet mit der Eingabe der blau markierten Sollposition in hundertstel Millimetern. Dieser Wert kann in ControlDesk durch einen Schieberegler verändert oder durch einen Baustein zum Einlesen von Daten einer RS232-Schnittstelle ersetzt werden.
Im nächsten Schritt wird diese Position in eine Position umgerechnet, welche eine Datenbasis in Schritten besitzt. 0,01 mm sind dann 0,303 Schritte.
In einer Datentyp-Umwandlung wird dieser Positionswert in ganzzahlige Werte (Integer-Werte) umgewandelt.
Anschließend wird dieses Signal mit der aktuellen Position, welche in der Software hinterlegt ist, verglichen. Der Relational Operator1 unterbricht bei Erreichen des Zielwertes die Verbindung zwischen dem Pulsgenerator und dem Digitalausgang für die Schritte. Dies geschieht durch ein Umschalten des Switch_Stop-Bausteins auf ein konstantes Low-Signal. Der Relational Operator im unteren Bereich des Programms vergleicht die Sollposition mit der aktuellen Position, um die Richtung vorzugeben. Ist der neue Wert größer als die aktuelle Position, so fährt der Motor weiter vorwärts, sonst rückwärts. Dies funktioniert über den Switch-Richtung-Baustein.
Das Richtungssignal wird dann durch den Gain-Baustein halbiert, da es auf einen Analogausgang geleitet wird. Dieser Ausgang gibt bei dem Wert 1 eine Spannung von 10 V. Um 5 V zu erreichen muss also ein Wert von 0.5 an den Ausgang gesendet werden.
Für die Positionsbestimmung ist im oberen rechten Bereich ein Zähler über ein getriggertes Subsystem realisiert worden. Je nach gefahrener Richtung wird pro Schritt, also pro High-Signal, ein Schritt addiert oder subtrahiert, so dass für jedes reale Signal am Schrittmotor auch ein Schritt im Memory-Baustein gespeichert wird. Der Ausgang dieses Bausteins wird dann wie beschrieben zum Ist-Soll-Vergleich genutzt.
Mit dem rechts dargestellten Scope können in der Simulink Simulation die Richtung, sowie die Ist- und die Sollpositionen dargestellt werden.
ControlDesk Oberfläche
ControlDesk ist als Programm für die Visualisierung und Steuerung des Simulinkprogramms genutzt worden.
In dem Bild ist die erstellte Oberfläche dargestellt. Oben ist ein Schieberegler für die Sollposition vorhanden. Links oben ist eine Anzeige der aktuellen Position in Schritten integriert (Labels/IstSchritte).
Darüber hinaus ist ein Plotter für den Vergleich der Ist- und der Sollschritte integriert worden.
Mit den Schiebereglern links unten kann man die Pulsweite und die Periodendauer variieren.
PWM Signal zur Ansteuerung des Motors
Die Mindestperiodendauer, die der GeckoDrive benötigt um die einzelnen Schritte erkennen zu können beträgt 3,5 µs. In dem vorhandenen Simulinkprogramm ist bisher eine Periodendauer von 2 ms realisiert worden. Dieses Signal besteht aus 1 ms High- und 1 ms Low-Pegel.
Herausforderungen
Integration eines Zählers für die Erkennung der Ist-Position durch
- eine Matlab-Funktion
- einen Counter aus der DSP-Toolbox
- eine Eigenentwicklung (siehe Simulink Programm)
Spannungsabfall am Digitalausgang (von 5 V auf 1,77 V)
- Nutzung eines Netzteils
- Wechsel auf Analogausgang
- Kontakt zum dSpace Support wurde aufgenommen (ohne nutzbares Ergebnis)
Positioniergenauigkeit
- Datentyp double musste in Integer umgewandelt werden, um einen Vergleich möglich zu machen. Realisierung durch Simulink-Baustein (siehe Programm)
Historisch gewachsenes Programm
- zwischenzeitlich sehr unübersichliches Programm
Ausblick
- Integration einer RS232-Schnittstelle
- Integration von Software-Endschaltern
- Integration einer Kalibrierfahrt
- Integration des Encoders