\chapter{LabVIEW-Programmierung}
%-----------------------------------------------------------------------------------------------
%-------------------------------------------------
\section{Struktogramm des Hauptprogrammes}
%-------------------------------------------------
Im Folgenden wird die prinzipielle Programmierungsstruktur erl\"{a}utert.
Das komplette Programm besteht aus einer einfachen Verzweigung von Unterprogrammen, die eher sequentiell aufeinander folgen.
Die verwendeten eigens erstellten Unterprogramme auf erster Ebene sind in \textit{grün} dargestellt.
\begin{figure}[!htbp]
\centering
\includegraphics[scale=0.45,angle=0]{Hauptprogramm}
\caption{Struktogramm des Hauptprogrammes}
\end{figure}
%-------------------------------------------------
\minisec{Generiere Frequenzen}
%-------------------------------------------------
Diese Routine erzeugt anhand der gegebenen Werte \textit{Tiefste Frequenz}, \textit{H\"{o}chste Frequenz} und \textit{Schritte in einer Oktave} und eine vorgefertigten Struktur (s. Abb. \ref{GenFreq} gelbe Box) ein Array mit Frequenzwerten, die in adäquaten Abständen zueinander stehen. Sie wird in der ersten While-Schleife solange ausgeführt, bis \textit{Messung starten} gedrückt wird. Erst dann werden die Daten an die Sequenz übergeben. LabVIEW erzeugt an gewissen Stellen aufgrund der bereitgestellten Struktur Nullen im Array, die nachher durch die Subroutine \textit{Lösche Nullen aus 1D-Array} entfernt werden.
\begin{figure}[!htbp]
\label{GenFreq}
\centering
\includegraphics[scale=0.55,angle=0]{GenFreq}
\caption{Blockdiagramm des Unterprogrammes Generiere Frequenzen}
\end{figure}
%-------------------------------------------------
\minisec{Berechnete Laufzeit}
%-------------------------------------------------
Berechnete Laufzeit gibt die gesch\"{a}tze Dauer der Messung an.
Innerhalb des Unterprogramms kann noch eine Toleranz in \% eingestellt werden.
Diese Option gew\"{a}hrleistet, dass auch die Summe der Signallaufzeiten innerhalb des gesamten Programmes durch eine 1-3\%ige Toleranz ber\"{u}cksichtigt werden kann.
%-------------------------------------------------
\minisec{Warmup Modus (Teil 1)}
%-------------------------------------------------
Im ersten Teil des Warmups wird festgelegt mit welcher Geschwindigkeit und Stromst\"{a}rke der Laser auf
seinen vom Benutzer festgelegten Maximalwerten IBIAS & IFOR gesetzt wird.
Hier gibt es 4 Auswahlm\"{o}glichkeiten, die von einem langsamen Hochfahren bis hin zur Sprungfunktion reichen.
Die drei ersten Unterprogramme Hole relevante Frequenzen und Warmup Modus (Teil1) werden beim Start des Programmes durch den Run-Button solange ausgef\"{u}hrt, bis der Benutzer auf Messung starten klickt.
%-------------------------------------------------
\minisec{Laser-Grundinitialisierung}
%-------------------------------------------------
In diesem Schritt werden alle \textit{grundlegenden Informationen} zum Einstellen des Lasers \"{u}ber die Schnittstelle GPIB geladen.
Hier wird folgendes eingestellt:
\begin{enumerate}
\item FREQ(0) $ \hookrightarrow $ Frequenz auf den ersten Wert im Array der Frequenzen setzen
\item FMOD1 $ \hookrightarrow $ Benutzung der internen Referenzspannung des Lock In Amplifiers
\item SLVL0.5 $ \hookrightarrow $ Spannung am Ausgang des Lock In Amplifiers auf 0,5V
\item PHAS0 $ \hookrightarrow $ Phase auf 0° setzen
\item DDEF1\{,1,0\} $ \hookrightarrow $ Channel 1 zeigt im Display R bzw. die Amplitude an
\item DDEF2\{,1,0\} $ \hookrightarrow $ Channel 2 zeigt im Display $\Theta$ bzw. den Phasenwert an
\item LOCL2; OVRM0 $ \hookrightarrow $ Die Eingabe am Frontpanel des Lock In Amplifiers ist gesperrt; es wird \"{u}ber GPIB gesteuert
\end{enumerate}
Lesezeichen