\chapter{Program v LabVIEW}
\section{Původní program pro dané měřicí stanoviště}

\begin{figure}[!h]
    \begin{center}
        \includegraphics[scale=0.6]{obrazky/uzivatel.png}
    \end{center}
    \caption[Původní řídicí panel LabVIEW~\cite{LabVIEW}]{Původní řídicí panel LabVIEW~\cite{LabVIEW}} 
    \label{obr:uzivatel}
\end{figure}

Obslužný program pro měření pomocí váhy a~ostatních použitých snímačů na stávajícím přípravku je vytvořen v~LabVIEW. Řídicí panel je vyobrazen na obr.~\ref{obr:uzivatel}. V~levém horním rohu se nachází sekce „Valve~control“, kde se nastavuje míra otevření ventilu ve voltech, přičemž ventil začne propouštět vodu přibližně od 2~V a~maximálního otevření dosáhne přibližně při 8~V. Dochází ovšem k~velkým hysterezím a~stejné nastavení neznamená stejné otevření ventilu. Společně s~vybraným senzorem pro měření se v~sekci „Measure~control“ umístěné pod předchozí sekcí volí čas měření, který je omezen na rozmezí 5~až 180~vteřin. Také se zde pro vybraný průtokoměr tlačítkem „Measure“ spouští samotné měření na vyhrazený čas. \cite{navod}

Souběžně s~měřením na vybraném snímači probíhá měření referenční váhou a~měření tlakové ztráty na daném snímači.  Naměřený příbytek hmotnosti vody v~nádrži na váze se zobrazí v~kilogramech v~části „Weight“, tlakovou ztrátu naměřenou diferenčním tlakoměrem FOXBORO zjistíme v~pravém horním rohu, sekce „Foxboro~Eckardt~143DP“. Tlakoměr měří proudovou smyčku 4 až 20~mA, proto je zjištěná hodnota uvedena v~mA. \cite{navod}

Hodnoty naměřené snímači se zobrazují jako počet náběžných hran nebo stejně jako u~tlakoměru v~mA napravo od referenčního měření hmotnosti na váze. Běh měření signalizuje rozsvícená dioda v~části „Measuring“. Poslední část zabírající dolní polovinu řídicího panelu zobrazuje v~grafu průběh signálu na snímačích, u~kterých nás zajímá počet náběžných hran. Nad grafem je umístěn ukazatel průběhu měření. Měření se po spuštění již nedá zastavit, musí se počkat až do uplynutí nastaveného času měření.


\section{Tvorba nového obslužného programu}

\subsection{Vývojový diagram}
Vývojový diagram, podle kterého byl nový program tvořen, je uveden na obr.~\ref{obr:vyvoj_LabVIEW}.

Při spuštění programu se začíná možností Initialize, ve které se povolí možnost nastavování veškerých nastavovacích tlačítek a~stisknutí spouštěcího tlačítka Measure. Následně se přejde do stavu Setting, ve kterém se nastaví čas, po který chceme měřit, a~dále porty, kde je připojena váha a~ověřovaný senzor. 

Po stisku tlačítka Measure se opět nastavovací tlačítka zablokují včetně spouštěcího tlačítka Measure, naváže se komunikace s~váhou a senzorem přes nastavené porty a~otevře se dialogové okno pro vytvoření souboru pro ukladání naměřených dat. Tento soubor má přednastavený název na datum a~čas stisknutí tlačítka Measure. Samozřejmě se může nastavit libovolný název souboru nebo také ukládat data do již existujícího souboru, který bude přepisován.

Následuje započetí měření ve stavu Measure, při kterém se na řídicím panelu vypisuje aktuální průtok a~vykresluje graf aktuálního průtoku jak váhy, tak i~ověřovaného senzoru. Do vytvořeného souboru se každou vteřinu ukládá aktuální čas, navážená hmotnost, vypočítaný průtok na váze a~vypočítaný průtok senzorem. 

Po vypršení nastaveného času měření nebo, pokud chceme ukončit měření dříve, po stisku Exit tlačítka se zpracovávání příchozích dat ukončí, vypočítá se průměrný průtok za celé měření, který se poté vypíše na řídicím panelu a~uloží se do souboru. Následně ve stavu Exit se komunikace se senzory odpojí a~uzavře se soubor pro zápis dat. 

Program přejde zpět do stavu Initialize, kde opět povolí spouštěcí a~nastavovací tlačítka a~bude čekat ve stavu Setting na nové nastavení parametrů měření a~spuštění.

\begin{figure}[!h]
    \begin{center}
        \includegraphics[scale=0.84]{obrazky/LabView_schema.png}
    \end{center}
    \caption[Vývojový diagram programu LabVIEW]{Vývojový diagram programu LabVIEW} 
    \label{obr:vyvoj_LabVIEW}
\end{figure}

\newpage
\subsection{Navrhnutí nového programu a první úpravy}
Na základě zjištěných informací o stávajícím programu a vytvořeného vývojového diagramu bylo započato tvoření nového programu. Z původního programu bylo využito naprogramování měření referenční váhou, ke kterému přibyl kód pro přepočet na jednotky průtoku. Dále byl maximální čas měření prodloužen na téměř jeden den, konkrétně na 23~h,~59~min~a~55~s, a~také bylo umožněno ukončení běhu programu i při spuštěném měření na snímači. V novém programu bylo odstraněno naprogramované měření pro ostatní snímače. Program byl stvořen, stejně jako původní, pomocí řídící struktury case umístěné ve stavovém diagramu. Struktura má možnosti Initialize, Setting, Measure a~Exit, mezi kterými program při běhu prochází. 

S tímto programem byla naměřena data následně uvedená v~kap.~\ref{kap:mereni}, tab.~\ref{tab:bez_pritoku} a~tab.~\ref{tab:s_pritokem}. 

\subsection{Změna referenční váhy}
Jelikož bylo z naměřených dat usouzeno, že váha OMEGA~LFT7000-100 je pro následné použití jako referenční váha z~důvodu velké nepřesnosti nevhodná, bylo nutné tvořený program předělat pro práci s nově vybranou referenční váhou Kern PCB~2500-2. Při této úpravě byl doprogramován také kód pro tepelný hmotnostní průtokoměr, na kterém budeme ověřovat měření průtoků. Detailněji bude důvod změny referenční váhy popsán později v~kap.~\ref{kap:nova_vaha}.

Po naprogramování této části bylo vyzkoušeno měření s váhou a tepelným senzorem, které po dořešení drobných chyb probíhalo dle očekávání. 

\subsection{Estetické úpravy a dokončení programu}
Protože program fungoval jak má, byly již řešeny estetické úpravy tlačítek a ukazatelů a jejich logické uspořádání. Také bylo řešeno nastavení předdefinovaných hodnot po spuštění vytvořeného programu, velikost jednotlivých polí a zvýraznění textu pro co nejlepší přehlednost pro nezaučené uživatele.

\subsection{Finální vzhled obslužného programu}

Výsledný řídicí panel vytvořený v programu LabVIEW se nachází na obr.~\ref{obr:uzivatel_novy}

Hlavní část panelu se nachází v horní polovině. Vlevo se zobrazují průtoky naměřené na váze, napravo průtoky proteklé přes tepelný průtokoměr. Pole Current flow rate zobrazuje aktuální průtok, v poli Average flow rate se vypisuje po skončení měření vypočtený průměrný průtok za dobu měření. Uprostřed je umístěna část pro nastavení portů připojené váhy a senzoru, času měření a tlačítka pro spuštění a~předčasné ukončení měření. 

V prostřední části při spuštěném měření svítí zelená dioda, zobrazuje se uběhlý čas měření jak číselně, tak i graficky.

V dolní polovině se nachází graf, na který se vykresluje aktuální měřený průtok.



\hskip 0,1 cm
\begin{figure}[!h]
    \begin{center}
        \includegraphics[scale=0.75]{obrazky/uzivatel_vysledek.png}
    \end{center}
    \caption[Nový řídicí panel LabVIEW]{Nový řídicí panel LabVIEW} 
    \label{obr:uzivatel_novy}
\end{figure}

Části blokového diagramu programu v LabVIEW, konkrétně části stavu case struktury Measure, se nachází na obr.~\ref{obr:Measure} a obr.~\ref{obr:Measure_2}.

Na obr.~\ref{obr:Measure} je zobrazen blokový diagram o funkci příjmu dat ze senzorů, výpočtu aktuální hodnoty průtoku z dat váhy a odeslání dat k vykreslení do grafu, vypsání na řídícím panelu programu a uložení do vytvořeného souboru. V této smyčce je také zahrnuto ukončení měření stiskem Exit tlačítka na řídícím panelu a zhasnutí diody při skončení měření. Diagram přesto nevypadá složitě a je přehledný, čehož je docíleno vytvořením několika podprogramů v LabVIEW nazývaných subVI. Celý podprogram je tak při použití subVI schován pod jednu ikonku, která může mít libovolný vzhled. Perioda měření a zápisu je časovačem určena na 1000 ms, přičemž minimální hodnota je kvůli rychlosti odesílání dat váhou 350 ms.

\begin{figure}[!h]
    \begin{center}
        \includegraphics[scale=0.7]{obrazky/Measure.png}
    \end{center}
    \caption[Kód pro příjem, výpočet a uložení aktuálního průtoku]{Kód pro příjem, výpočet a uložení aktuálního průtoku} 
    \label{obr:Measure}
\end{figure}

Na obr.~\ref{obr:Measure_2} se nachází while cyklus s funkcí zobrazovat uběhlý čas na řídícím panelu jak číselně, tak i graficky naplněním ukazatele průběhu měření, a po uplynutí nastaveného času měření ukončit. Obnovovaní ukazatele je stanoveno časovačem na 100 ms.

\begin{figure}[!h]
    \begin{center}
        \includegraphics[scale=0.7]{obrazky/Measure_2.png}
    \end{center}
    \caption[Kód pro zborazení uběhlého času]{Kód pro zborazení uběhlého času} 
    \label{obr:Measure_2}
\end{figure}

%čas měření, zastavení