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.
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.