Rev 2855 Rev 3002
Line 143... Line 143...
143 spolehlivost. Akční členy proto pravděpodobně budou pružiny s 143 spolehlivost. Akční členy proto pravděpodobně budou pružiny s
144 přepalovacími PE pojistkami (silonové vlákno, nebo stuha 144 přepalovacími PE pojistkami (silonové vlákno, nebo stuha
145 přepalovaná výkonovým rezistorem) ke spínáni proudu do rezistorů může 145 přepalovaná výkonovým rezistorem) ke spínáni proudu do rezistorů může
146 být využit modul \href{/doku.php?id=cs:nfet4x}{NFET4X01B} 146 být využit modul \href{/doku.php?id=cs:nfet4x}{NFET4X01B}
147   147  
-   148 \section{Firmware}
-   149  
-   150 \subsection{Real-time operační systém}
148 \hyperdef{}{firmware}{\paragraph{Firmware}\label{firmware}} 151 Pro ovládání celého systému byl zvolen real-time operační systém (ROS). Ten byl zvolen především pro zjednušení programování vypouštěče, konkrétně nastavování periférií procesoru a řízení vícevláknové aplikace na něm běžící.\\
-   152 Jako ROS pro tuto aplikaci tak byl zvolen ChibiOS, který splňuje standardní požadavky na ROS a také s ním máme zkušenosti s programováním jiných aplikací pod procesory ARM.
-   153 \subsection{Vysvětlení funkce firmwaru}
-   154 Aplikace pro ovládání odpalování se dá rozdělit na čtyři funkční bloky, které jsou realizovány pomocí vláken. Funkční diagram je zobrazen na Obr. \cite{Diag_firmware}. V následujících kapitolách bude podrobněji rozebrána funkce jednotlivých vláken aplikace.
-   155 \subsubsection{Blikání LED}
-   156 V tomto vlákně je realizované prosté blikání LED, které slouží pro signalizaci běhu programu. Mezi tím, kdy dioda svítí a nebo je vypnutá je vlákno uspáno. Tím je vyřešeno jak časování tak úspora prostředků procesoru.
-   157 \subsubsection{Vypouštění}
-   158 Toto vlákno se stará o kompletní sekvenci pro vypuštění balónu. Po spuštění a inicializaci proměnných spadne program do nekonečné smyčky ve které je následně uspán a čeká na probuzení. To nastane ve třech případech:\\
-   159 \begin{enumerate}
-   160 \item Příjem příkazu pro odpal
-   161 \item Příjem příkazu pro zrušení odpalu
-   162 \item Probuzení od časovače
-   163 \end{enumerate}
-   164 Ad. 1. Po příjmu příkazu, který zahajuje celou sekvenci odpalování se vypíše na terminál zpráva o zahájení vypouštění a sepne se pin, na kterém je připojen aktuátor, který otevírá víko krabice, ve které je balón uložen (v době vykonávání každého kroku je na terminál vypisována informace o tom, kolik procent z daného kroku je již vykonáno). Pomocí koncového spínače je snímána informace o tom, zda se střecha opravdu otevřela, pokud se tak nestalo, je celá sekvence ukončena. Pokud snímač indikuje otevření střechy, přistupuje se k dalším kroku.\\
-   165 Tím je otevření ventilu a tím pádem zahájení napouštění balónu. Tento krok není nijak v současné chvíli zpětnovazebně snímán - je dán pouze čas kdy je ventil otevřen. Do budoucna bychom rádi použili měření průtoku k získání informace, zda je balón opravdu napuštěn daným množstvím plynu.\\
-   166 Třetím krokem celé sekvence je přepálení plastové pojistky, která spouští tavící lis. Po pevně dané časové prodlevě, která by měla stačit pro přetavení, je pomocí koncového spínače zjištěno, zda se pojistka přetavila. Pokud ano, pokračuje se posledním krokem, pokud ne, dochází opět k přerušení sekvence a návrat do výchozího stavu.\\
-   167 Posledním krokem je zatavení naplněného balónu. V tomto kroku je opět nadefinován čas, po který dochází k zatavování balónu pomocí odporového drátu. Po uplynutí nadefinované doby je balón zataven a na terminál je vypsána informace o ukončení vypouštění a všechny výstupy jsou v neaktivním stavu.\\
-   168 Ad. 2. V případě příjmu zprávy, která přikazuje ukončení procesu odpalování, se deaktivují výstupy aktivní během vypouštění a uživatel je informován o úspěšném přerušení celé sekvence.\\
-   169 Ad. 3. Pro přesné časování během celého procesu odpalování je využito funkce časovače. Ten se v každém kroku odpalování sepne na určitou dobu, která je celočíselným násobkem celkové doby, kterou se čeká v daném kroku. Tento postup byl zvolen z toho důvodu, aby mohla být průběžně aktualizována zpráva pro uživatele vyjadřující čas, který zbývá do ukončení daného úkolu.
-   170 \subsubsection{Příjem příkazu od uživatele}
-   171 Pro komunikaci s uživatelem je využito sériové linky. Ta se využívá jak pro informování uživatele o aktuálním stavu programu tak zároveň k příjmu příkazů od uživatele. Celý algoritmus příjmu příkazu spočívá ve vyčítání znaků zadaných uživatelem znak za znakem až do té chvíle, kdy je stisknut ENTER a nebo je překročena maximální délka příkazu. Poté se buď zadaný příkaz dekóduje a následně provede a nebo je vypsána informace, že příkaz nebyl rozeznán.
-   172 \subsubsection{Příjem dat z GPS modulu}
-   173 Posledním vláknem využívaném ve firmwaru vypouštěče je vlákno, které se stará o příjem a dekódování NMEA zprávy posílané po sériové lince z GPS modulu
-   174 \cite{GPS_ublox}. Každou vteřinu je vyčítána NMEA zpráva a z ní je vybrána GPRMC zpráva, ze které je následně získána informace o aktuálním čase, datu a poloze stanice. Tato informace slouží jednat pro přesné logování událostí a zároveň v budoucnu pro snadné lokalizování vypouštěcí stanice.\subsection{Uživatelské rozhraní terminálu}
-   175 Při spuštění terminálu se po resetu programu procesoru vypíše úvodní zpráva s nápovědou, na které výstupní kontakty procesoru jsou připojeny jednotlivé akční členy. Následně je program v pohotovostním režimu a očekává příkaz. Jednotlivé příkazy jsou:\\
-   176 \begin{enumerate}
-   177 \item odpal
-   178 \item zrus (nebo písmeno "s")
-   179 \item help
-   180 \item check
-   181 \end{enumerate}
-   182 Příkaz \textbf{odpal} spustí vypouštěcí sekvenci probuzením daného vlákna pro vypouštění. Příkaz \textbf{zrus} zastaví vypouštěcí sekvenci, pokud byla zahájena a indormuje o tom výpisem o ukončení vypouštění. Zároveň jde vypouštění zrušit okamžitě stisknutím "s" bez nutnosti potvrzovat příkaz enterem. Příkaz \textbf{help} vypíše stejnou úvodní zprávu jako po resetu programu. Poslední příkaz \textbf{check} lze použít pro kontrolu stavu vypouštěče před začátkem vypouštění. Po zadání tohoto příkazu jsou na terminál vypsány informace o aktuálních stavech použitých senzorů. Lze tak například zkontrolovat, že střecha není zajištěna, nebo že je lis již spuštěn.
-   183  
-   184 \begin{figure}[hbtp]
-   185 \centering
-   186 \includegraphics[scale=0.6]{./img/program_flow.png}
-   187 \caption{Funkční diagram firmwaru Automatického vypouštěče}
-   188 \label{Diag_firmware}
-   189 \end{figure}
149   190  
150 \begin{itemize} -  
151 \item -  
152 Pozemní stanice by měla mít možnost odmítnout vypuštění na základě -  
153 zadané konfigurace jejího majitele. -  
154 \end{itemize} -  
155 Pro zajištění běhu nezávislých procesů by bylo možná vhodné využít -  
156 \href{http://www.chibios.org/dokuwiki/doku.php}{ChibiOS/RT} -  
157   191  
158 \begin{figure} 192 \begin{figure}
159 \centering 193 \centering
160 \includegraphics[width=10cm, height=8cm]{img/blokoveschema1.png} 194 \includegraphics[width=10cm, height=8cm]{img/blokoveschema1.png}
161 \caption{Blokové schéma pozemního vypouštěcího boxu} 195 \caption{Blokové schéma pozemního vypouštěcího boxu}
Line 400... Line 434...
400 \url{http://www.radiosonde.eu/}, \url{http://www.radiosonda.sk/} 434 \url{http://www.radiosonde.eu/}, \url{http://www.radiosonda.sk/}
401 \bibitem{cocom}{směrnice CoCom} 435 \bibitem{cocom}{směrnice CoCom}
402 \url{http://en.wikipedia.org/wiki/CoCom\#Legacyi} 436 \url{http://en.wikipedia.org/wiki/CoCom\#Legacyi}
403 \bibitem{moguli}{projekt Mogul} 437 \bibitem{moguli}{projekt Mogul}
404 \url{http://cs.wikipedia.org/wiki/Projekt\_Moguli} 438 \url{http://cs.wikipedia.org/wiki/Projekt\_Moguli}
405   -  
406   -  
407   -  
-   439 \bibitem {GPS_ublox}{UBLOX. LEA-6 series [online]. 2013 [cit. 2013-05-12]. Dostupné z: http://www.u-blox.com/en/gps-modules/pvt-modules/lea-6-family.html}
-   440 \bibitem {ChibiOS/RT}\url{http://www.chibios.org/dokuwiki/doku.php}
408 \end{thebibliography} 441 \end{thebibliography}
409 \end{document} 442 \end{document}
410 443