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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Einleitung

Das Thema Ansteuerung einer Schrittmotor-Achse mit dSpace DS1104 und Matlab/Simulink ist ein Teilthemengebiet des Projekts 3-D-Bearbeitungsmaschine (Projekt des Schwerpunkts GPE im Studiengang MTR) und wurde von Stefan Schweins und Jonas Rüschenschmidt bearbeitet.

Aufgabenstellung

Ansteuerung einer Zahnriemenachse mit Schrittmotor durch den Einsatz von einem dSpace DS1104 R&D Controller Board 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. Der Laststromkreis beinhaltet alle Verbindungen zwischen der Spannungsversorgung (Power Supply), dem Geckodrive und dem Schrittmotor. Der Steuerstromkreis beinhaltet alle Verbindungen zwischen der dSpace Ausgabebox (dSpace CP1104) und dem Geckodrive.


Für die Programmierung wurde aus dem 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,33 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

Während der Bearbeitung des Projektes sind diverse Herausforderungen aufgetreten, die für den Projekfortschritt hinderlich waren.

  1. Verschiedene Ansätze zur Integration eines Zählers für die Erkennung der Ist-Position durch eine Matlab-Funktion, einen Counter aus der DSP-Toolbox und eine Eigenentwicklung (siehe Simulink Programm) sind ausprobiert worden. Die Eigenentwicklung des Zählers war in diesem Fall die beste Möglichkeit, um einen stabilen Zählvorgang, ohne Differenzen zwischen dem Ist- und dem Sollstand des Zählers, gewährleisten zu können.
  2. Am Digitalausgang der dSpace Ausgabebox ist am Anschluss des Richtungssignals die Spannung von 5 V auf 1,77 V abgefallen. Als Lösungsmöglichkeiten für dieses Problem ergeben sich die Nutzung eines externen Netzteils oder der Wechsel auf einen Analogausgang. Da durch die Nutzung des Analogausgangs der Anschluss eines weiteren externen Geräts entfällt, ist abschließend diese Möglichkeit im Programm realisiert worden.
  3. Die Position, die durch das Programm vorgegeben wurde, schwankte teilweise um einen Wert. Dadurch konnte zuerst keine feste Absolutposition erreicht werden. Dieses Problem lag am Datentyp double, welcher durch die Umrechnung von Millimetern in Schritte entstand. Durch eine Datentypumwandlung in einen Integer-Wert ist dieser Wert in einen ganzzahligen Wert umgewandelt worden. Aufgrund dieser Änderung ist es nun nicht mehr möglich, dass durch diese Umrechnung eine Kommazahl herauskommt, welche durch ganze Schritte nicht erreicht werden kann. Beispiel: vorher 1 mm = 30.303 Schritte -> schwanken des Positionswertes zwischen 30 und 31; nachher 1mm = 30 Schritte -> Positionswert ist 30
  4. Als zusätzliche Herausforderung ist das historisch gewachsene Programm zu nennen. Durch eine Integration von immer neuen Bausteinen und Lösungsmöglichkeiten ist das Programm zwischenzeitlich sehr unübersichtlich geworden, da alte Programmteile vorerst nicht gelöscht wurden, falls eine neue Idee nicht direkt funktioniert. Ein regelmäßiges Löschen dieser Programmteile erwies sich als sehr vorteilhaft.


Zusammenfassung

Die Schritte und Erkenntnisse des Projekts "Ansteuerung einer Schrittmotor-Achse mit dSpace DS1104 und Matlab/Simulink" sind in den einzelnen Kapiteln dieses Artikels erläutert worden. Durch die Absolvierung einleitender Aufgaben, wie die Erstellung eines Schaltplans und eines Regelkreises, ist es möglich geworden ein Simulink-Programm zu erstellen, welches den Schrittmotor eine bestimmte Position anfahren lässt. Dieses Position wird aktuell über ControlDesk vorgegeben und kann in den definierten Grenzen beliebig verändert werden. Auch die Geschwindigkeit kann über ControlDesk variiert und die Position überprüft werden.

Den einzelnen Teilkapiteln dieses Artikels sind die aktuellen Status der betrachteten und bearbeiteten Aspekte zu entnehmen. Insgesamt wurde es realisiert, Komponenten, deren Kompatibilität zueinander zunächst unbekannt war, miteinander kommunizieren zu lassen und mit diesen Komponenten schließlich das errichtete Bearbeitungsportal in Bewegung zu setzen. Das Ansprechen des Programmes über den, von einem anderen Team entwickelten Steuerungsalgorithmus, konnte ebenfalls umgesetzt werden. Die Einbindung weiterer Sensoren, wie z.B. die des Inkrementalgebers und einer Referenzpunktabfrage, stellen weiterführende Schritte des Projektes dar, welche zunächst aufgrund priorisierter Teilaufgabenergänzungen zurückgestellt wurden. Weiterführende Gedanken und Vorschläge sind bereits in den Teilkapiteln vorzufinden. Eine Weiterentwicklung des aktuellen Standes ist mit den bereitgestellten Dateien zu diesem Fachthema umsetzbar.

Ausblick

Die Integration einer RS232-Schnittstelle für die Kommunikation mit der Steueungseinheit des Teams Steueralgorithmus stellt einen weiterführenden Schritt dar. Außerdem könnte der an der Schrittmotoreinheit integrierte Encoder mit in das Programm eingebunden werden, um reale Rückmeldedaten erfassen zu können. Darüber hinaus ist es möglich Endschalter an der vorgesehenen Stelle des Schaltplans zu integrieren und eine Kalibrierfahrt für den Programmstart vorzusehen, damit ein Referenzpunkt automatisch implementiert ist.


Datei:Ansteuerung via dSpaceBox.zip