Ausarbeitung |
![]() ![]() ![]() |
Inhalt:
1. Einführung
2. Vorgehensweise
3. aktueller Stand
4. Ausblick
5. Erkenntnisgewinn
Damit nachfolgende Projektgruppen auf dieser Arbeit aufbauen können, wird im Folgenden die Vorgehensweise, der aktuelle Stand und ein Ausblick erläutert.
Um Kompatibilitätsprobleme auszuschließen wird hier die verwendete Hardware und Software aufgelistet:
Verwendete Hardware:
Unter Stand der Technik wurde bereits der aktuelle Aufbau der Kameraschiene vorgestellt. Die genauen Bezeichnungen der Komponenten sind:
Board: STM32F746G-Discovery
Motor: SchneiderElectric LMDCE571 (Ether)
Das Blockschaltbild und der Schaltplan dienen zum besseren Verständnis der Aufgaben der einzelnen Komponenten und wie diese kommunizieren und angeschlossen sind.
Verwendete Software:
Da das "Microcontroller development kit for ARM®" (MDK-ARM) von Keil sehr teuer ist, haben wir uns für die "System Workbench for STM32" entschieden. Diese basiert auf Eclipse und ist daher als Freeware erhältlich.
System Workbench for STM32 (Version 4.5.2) - Programmiersprache: C
STM32CubeMX (Version 4.17)
STM32CubeF7 Firmware Package (Version 1.4.0)
beinhaltet unter anderem:
STemWin (Version 5.28)
GUIBuilder (Version 5.28)
Zu Beginn wurde die Kameraschiene durch ein Vorgängerprojekt (Motorsteuerung.exe, siehe Anhang) in Betrieb genommen.
Anschließend wurden die benötigten Handbücher und Datenblätter (siehe Anhang) heruntergeladen und die Programme (s.o.) installiert.
Durch ein Beispielprojekt ("STemWin_HelloWorld") aus dem STM32CubeF7-Firmware-Package wurde eine erste Displayausgabe erstellt.
Bei den vorhandenen Beispielprojekten sind bereits Hardware-Konfigurationen vorhanden. Diese unterscheiden sich aber von der Hardware-Konfiguration, welche in diesem Projekt benötigt wird. Deshalb wurde mit Hilfe von STM32CubeMX, dem dazugehörigen Handbuch und eines passenden Tutorials (Link) die Hardware des STM32F746-Discovery Boards zu diesem Projekt konfiguriert. Dieses Tutorial ist nicht nur eine Anleitung sondern beinhaltet auch ausführliche Erklärungen, nicht nur zur Hardware-Konfiguration, sondern auch zur Einbindung von STemWin, zum Erstellen einer Benutzeroberfläche, deren Einbindung und zur Initialisierung des Touch-Displays.
Durch die aus dem Beispielprojekt gewonnenen Erkenntnisse, konnte eine erste Display-Ausgabe (siehe Abbildung 17.1) programmiert werden, die auf dem von CubeMX generierten Projekt aufbaut.
Abbildung 17.1: erste Displayausgabe mit eigener Hardware-Konfiguration
Mit Hilfe des GUIBuilders wurde eine Benutzeroberfläche erstellt. Diese Single-Page-Application stellt die zur Steuerung des Motors notwendigen Bedienelemente zur Verfügung. Eine ausführliche Erklärung, wie die Oberfläche erstellt wurde ist auf der Seite Oberflächenlayout zu finden. In der Bedienungsanleitung werden die Funktionen der Bedienelemente erklärt.
Abbildung 17.2: Benutzeroberfläche
Nachdem die Benutzeroberfläche in das Projekt eingebunden wurde, konnte die Touch-Bedienung implementiert werden. Hilfreich dabei war wieder das erwähnte Tutorial (Link). Der Code zur Touch-Bedienung wird auf der Seite Quellcode erklärt und ist dort auch als Download zu finden.
Der allgemeine Ablauf des Programms und wie das Programm je nach Benutzereingabe verzweigen soll, ist im Flussdiagramm dargestellt.
Der nächste Schritt war die Ansteuerung des Motors.
Der Motor kann mit der Lexium MDriveSoftware Suite mit dem sogenannten MCode
programmiert werden. Informationen dazu sind im Handbuch der Software Suite
zu finden (siehe Anhang).
Da das Projekt aber
in C geschrieben ist, kann der MCode der Software Suite nicht einfach in das
Projekt eingebunden werden. Stattdessen muss der MCode als String an den
Motor gesendet werden. Zum Beispiel lässt der MCode "SL 50000" (SL = "slew")
den Motor in eine Richtung mit 50000 Schritte/Sekunde drehen (Eine Übersicht
der MCode Befehle ist im Handbuch der SoftwareSuite (Anhang)
auf Seite 38 zu finden). In diesem Fall müsste der String "SL 50000" an den
Motor gesendet werden. Ein Beispiel dazu in C# ist auch im
Stand der Technik zu finden.
Um den String an den Motor zu senden muss eine TCP/IP Verbindung hergestellt werden und ein IP-Stack erstellt werden. Grundlegende Begriffe zu diesem Thema werden auf der Projektseite der Gruppe "01-05 Mixmaster 2016 Server/Slavebetrieb" erklärt (Link).
Da das Projekt noch nicht abgeschlossen ist, empfehlen wir den verbleibenden Aufgabenteil an eine Projektgruppe des nächsten Semesters weiterzugeben. Durch die ausführliche Dokumentation der bisherigen Arbeit kann die nachfolgende Gruppe auf diesem Projekt aufbauen. Je nach Umfang des Folgeprojektes können noch Punkte von den Verbesserungsvorschlägen in die Aufgabenstellung aufgenommen werden.
Auch wenn wir die Aufgabe nicht vollständig bearbeiten konnten, gab es trotzdem einen deutlichen Erkenntnisgewinn:
Selbstständige Einarbeitung in ein vorher unbekanntes Themengebiet
Erfahrung in der Projektarbeit und Arbeiten im Team
Einarbeitung in das STM32F746-Board
Erfahrungen gesammelt im Umgang mit Eclipse, CubeMX und GUIBuilder
Da Eclipse noch nicht so eine lange Entwicklungszeit wie z.B. Keil vorzuweisen hat, gibt es viele unerklärliche Fehler und Warnungen
neue Programmiersprachen gelernt: C und MCode
Ansteuerung eines Schrittmotors
Die Erstellung einer guten und hilfreichen Dokumentation ist sehr zeitintensiv
Grundkenntnisse zu TCP/IP und Netzwerken
Der zeitliche Aufwand eines Projektes ist vorher Beginn der Arbeit schwierig einzuschätzen
Die Weitergabe von Software-Projekten an andere Rechner kann zu Problemen führen
Frühzeitige Absprache mit anderen Teams spart Arbeit