Ansteuerung einer Schrittmotor-Achse mit dSpace DS1104 und Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 15: Zeile 15:
Für die Programmierung wurde aus dem Schaltplan ein Versuchsaufbau generiert, damit erste Ergebnisse direkt erkannt und dokumentiert werden konnten.   
Für die Programmierung wurde aus dem Schaltplan ein Versuchsaufbau generiert, damit erste Ergebnisse direkt erkannt und dokumentiert werden konnten.   


[[Datei:Datei:Aufgabenliste- Ansteuerung mit DSpace.jpg|500px|thumb|none|Aufgabenliste- Ansteuerung mit DSpace]]
[[Datei:Schaltplan dSpace-Gecko-Igus.jpg|500px|thumb|none|Schaltplan dSpace-Geckodrive-Schrittmotor]]





Version vom 3. Dezember 2014, 11:47 Uhr

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

Die Aufgabe des Praktikums bestand darin, die Ansteuerung einer Zahnriemenachse mit einem Schrittmotor durch den Einsatz von einem dSpace DS1104 R&D Controller Board mit einer Programmierung auf Basis von Matlab Simulink zu realisieren. 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


Die Pinbelegung am SubD-Stecker der Ausgabebox war von Bedeutung, damit für den Versuchsaufbau die benötigten Pins (GND;IO1) belegt werden konnten.

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 (Pulsweitemodulation) 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 in 1.8° Schritte um, und entlang der Linearachse wird ein Weg verfahren. Ein Encoder soll daraufhin 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. Aus der Übersetzung zwischen der Drehung des Schrittmotors und der Strecke auf der Achse folgt, dass 0,01 mm Fahrweg = 0,33 Schritte entspricht.

Eine Umdrehung (360°) des Schrittmotors entspricht 200 Schritte. Daraus folgt: 360°/200 Schritte = 1,8 ° pro Schritt

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 Operator 1 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

Das Programm ControlDesk ist als Oberfläche für die Visualisierung und Steuerung des Simulinkprogramms genutzt worden.

Um das Programm auszuführen öffnet man zunächst das Programm "dSPACE ControlDesk 5.0". Als nächstes öffnet man ein vorhandenes Projekt und wählt das Programm "Experiment_001" in dem SVN Verzeichnis "MTR_GPE_Praktikum\Fachthemen\Automatisierung_Dspace\Simulink\AchseAnsteuerung" aus.

In dem Bild ist die erstellte Oberfläche dargestellt. Die Abbildung zeigt oberhalb einen Schieberegler, der für die Vorgabe der Sollposition verwendet wurde. 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 eingefügt worden.

Mit den Schiebereglern links unten können die Pulsweite und die Periodendauer variiert werden.

Elemente zum ausgeben und vorgeben von Zuständen werden per "drag and drop" Auswahl über eine Bibliothek in die ControlDesk Oberfläche initialisiert.

ControlDesk Oberfläche

PWM Signal zur Ansteuerung des Motors

Die Abbildung des verwendeten Oszilloskops zeigt den Verlauf des PWM-Signals am Ausgang der dSpace Box. 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


Autor: Jonas Rüschenschmidt (Diskussion) 14:42, 16. Feb. 2014 (CET)