Ansteuerung einer Schrittmotor-Achse mit dSpace DS1104 und Matlab/Simulink

Aus HSHL Mechatronik
Version vom 8. Februar 2014, 16:06 Uhr von Mirekgoebel (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Achsensteuerung mit dSpace DS1104 und Matlab Simulink == === Aufgabenstellung === Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.

Schaltplan dSpace-Geckodrive-Schrittmotor

Pinbelegung am SubD-Stecker der Ausgabebox

Pinbelegung CP1104

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.

Regelkreis dSpace

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.

Programm dSpace Simulink

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.


ControlDesk Oberfläche

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.


PWM-Signal zur Motoransteuerung

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