Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Softwaredoku
Hochschule Karlsruhe Logo Forschungs- und Entwicklungsprojekt
16ws_WA_Sensorarray
Wintersemester 2016/2017
Robin Tenscher-Philipp
Tim Schanz

Software Dokumentation

Die Softwaredokumentation bezieht sich auf den Programmablaufplan.
Zur Erfassung der Messwerte des Sensors wurde ein Programm in der Programmiersprache C# entwickelt. Dies ermöglicht es die Schnittstellen zwischen Computer und Sensor, sowie zwischen Computer und Motor zur Ansteuerung des Linearschlittens zu parametrieren. Weiterhin ist es sobald die Parametrierung abgeschlossen ist eine Messung zu starten und die Ergebnisse anschließend abzuspeichern. Hierzu wird das Programm auf mehrere Windowsforms aufgeteilt. Diese unterteilen sich in Splashscreen (Startbildschirm)(Abb.8), das Hauptmenü(Abb.9), sowie COM-Setup(Abb.10), UDP-Setup(Abb.11), Messungssetup(Abb.12) und Datenspeicherung(Abb.13). Beim Start des Programms wird zuerst der Splashscreen aufgerufen. Hier wird kurz eine Programminformation gegeben. Von diesem Fenster aus gelangt der Nutzer in das Hauptmenü. Das Hauptmenü verfügt über mehrere Buttons um die einzelnen Setups aufzurufen. Bevor eine Messung gestartet werden kann muss der Nutzer zunächst die Messung parametrieren. Hierzu ist es erforderlich im COM-Setup die COM-Schnittstelle zu konfigurieren. Über diese Schnittstelle werden seriell die Messdaten des Sensors abgerufen. Der Benutzer hat die Möglichkeit die Einstellungen durch einen Test zu verifizieren. Erst wenn eine COM-Verbindung aufgebaut werden kann werden die Einstellungen akzeptiert und der Benutzer kann die Einstellungen speichern. Diese werden im Hintergrund an das Hauptmenü übertragen. Die UPD-Verbindung wird auf die gleiche weise eingerichtet. Erst stellt der Benutzer die Verbindung ein, testet und speichert sie ab. Zuletzt muss die Messreihe eingestellt werden. Hier gibt es die Optionen die Anzahl der Messwiederholungen sowie die Anzahl der Einzelmessungen einzustellen. Über deine weitere Option lässt sich die Messung von statisch auf dynamisch umstellen. Im statischen Fall wird die vorgegebene Anzahl an Einzelmesswerten vom Sensor abgeholt, anschließend verfährt der Sensor auf der Schiene zurück und vor um die Position neu zu referenzieren. Anschließend werden wieder die Messwerte geholt. Bei der dynamischen Messung verfährt der Schlitten vor und zurück und während des Verfahrens werden die Messwerte vom Sensor abgerufen.

Abb.8 Startbildschirm

Abb.9 Hauptmenü

Abb.10 COM-Setup

Abb.11 UDP-Setup

Abb.12 Messungseinstellungen

Abb.13 Messreihen speichern

Nachdem der Nutzer alle erforderlichen Einstellungen getätigt und diese abgespeichert hat, gibt das Hauptmenü den Start zur Messung frei. Über den Startknopf kann die Messung eingeleitet werden. Der Nutzer hat über die Segmentauswahl jederzeit die Option die Verarbeitung der Messwerte für einzelne Segmente ein- und aus zu schalten.

Wird der Messvorgang gestartet, wird ausgehend von Hauptmenü ein neuer Thread gestartet der die eigentliche Messung durchführt. Würde das Hauptmenüform die Messung selbst ausführen könnten während der Messung keine Kontrollelemente im Fenster verwendet werden. Stattdessen läuft im Hintergrund ein separater Thread der die erforderlichen Controllelemente aktualisiert.

Der Messungsthread stellt zu beginn eine Verbindung über COM mit dem Sensor und eine UDP mit dem Motor her. Anschließend wird der Schlitten an den vorderen Anschlag der Schiene gefahren. Diese geschieht über eine voreingestellte Verfahrzeit, da die Endlage aktuell nicht vom Programm aus abgefragt werden kann. Anschließend beginnt der eigentliche Messvorgang. Dieser gliedert sich in eine äußere Schleife die die voreingestellte Anzahl an Wiederholungsmessungen durchläuft. Intern gibt es eine weitere Schleife die die eingestellte Anzahl an Messwerten pro Wiederholung durchläuft. Nach jedem Durchgang der äußeren Schleife wird im Falle der dynamischen Messung der Schlitten einige Zentimeter von der vorderen Endlage weggefahren und anschließend neu auf die Endlage referenziert. Immer wenn ein Messwertdatum vom Sensor abgerufen wurde muss dieser verarbeitet werden. Ein Messwertdatum enthält in einem String den Timestamp, 16 Distanzen und 16 dazugehörige Amplituden. Dieser String wird aufgeteilt in individuelle Daten für jedes Segment bestehend aus Timestamp, Distanz und Amplitude. Konnte aufgrund eines Fehlers keine Distanz ermittelt werden, wird im Messwertdatum an der entsprechenden Position eine Leerstelle "-" eingefügt. Um dies in der Verarbeitung zu berücksichtigen wird dem Datum des jeweiligen Segmentes zusätzlich ein Errorflag hinzugefügt.

Nach der Aufteilung der Daten werden diese entsprechend der Segmentnummer in eigene DataGrid- und Graphenelemente geschrieben. Somit erhält der Nutzer live während der Messung ein Feedback über den Messverlauf und kann jedes einzelne Segment separat betrachten.

Nach jedem durchlauf der äußeren Schleife wird eine Fortschrittsanzeige aktualisiert die den Nutzer über den Fortschritt der Messung informiert. Sobald die Messung abgeschlossen ist wird der Benutzer benachrichtigt. Im letzten Schritt hat der Benutzer noch die Möglichkeit die Messdaten abzuspeichern.

Hierzu ruft er die entsprechende Speicherform auf. Hier gibt es dir Option einen Namen für die Messdaten zu generieren und einen Pfad für die Ausgabe anzugeben. Da die Messdaten für jedes Segment in einer eigenen CSV-Datei abgelegt werden hat der Benutzer die Möglichkeit die Segmente auszuwählen die gespeichert werden sollen.

Der Quellcode für diese Software ist im Abschnitt Quellcode zu finden.

16ws_WA_Sensorarray Wintersemester 2016/2017