Popis ovládacího programu ver.1.2.5
Zveřejňuji druhou verzi ovládacího programu pro HW 1.0. I když je už obsáhlejší, je to stále jen testovací verze. Program berte hlavně jako zdroj informací pro ty, kteří budou chtít v mé práci pokračovat. Já už nejspíš další verzi programu pro ovládání HW 1.0 psát nebudu. Základem programu je stále webový server node.js a komunikace s ním pomocí javascriptu.
Hlavním rozšířením programu je doplnění 20 tlačítek předvoleb. Po jejich naplnění daty už lze automaticky přetáčet parabolu na předem stanovené pozice. Vlastní nastavení předvoleb ale tato verze programu neobsahuje. To se musí udělat ručně pomocí textového editoru.
Údaje o předvolbách jsou uloženy v souboru config.ini. Každá sekce obsahuje tři položky:
- PosAZ - počet impulzů čítače azimutu
- PosEL - počet impulzů čítače elevace
- Name - číslo předvolby a název družice
První sekce [Default] obsahuje aktuální pozici. Ukládá se po jakékoliv změně polohy. Načítá se ve chvíli spuštění programu. Následující sekce [mem01] až [mem20] jsou jednotlivé předvolby. Jejich hodnoty jsou zpočátku nulové. Tím se chovají jako vypnuté a při stisku tlačítka předvolby se nic nespustí. Teprve po naplnění údaji se tlačítka aktivují a spustí přenastavení paraboly na novou pozici.
Po připojení webového prohlížeče k serveru se zobrazí následující obrazovka:
Obr. 1 Obrazovka programu SatProwler
Stisknutím libovolného tlačítka s šipkou se rozběhne příslušný motor. Po jeho uvolnění se motor zase zastaví. Pokud stisknete tlačítko, ujedete myší mimo něj a myš pustíte, motor zůstane zapnutý. Zastavíte jej kliknutím na stejné tlačítko. Na tuto chybu si dejte pozor. Pokud budete mít některou šipkou motor spuštěný delší dobu, musíte myš udržet nad tlačítkem.
Po zastavení motoru se zobrazí aktuální poloha v oknech pod nápisy "Azimuth" a "Elevation". V horním okně určeném pro název satelitu se vypíše Not Set. Během přetáčení se aktuální poloha nezobrazuje. Není tedy nijak poznat, že jsou motory spuštěné. Program ale musí běžet v okně terminálu a tam se změna polohy průběžně vypisuje.
Na tlačítka předvoleb mem01 až mem20 stačí kliknout. Pokud jsou hodnoty azimutu i elevace nulové, nic se nestane. Pokud obsahují nenulovou hodnotu, pozicionér spustí motory a nastaví parabolu na novou pozici. Během pohybu se na obrazovce nic nemění, takže opět není poznat, že jsou motory aktivní. To může při delších vzdálenostech trvat i desítky sekund. Změna polohy se ale i v tomto případě vypisuje v okně terminálu. Po zastavení se v příslušných oknech zobrazí hodnoty nové pozice. V horním okně se zobrazí název satelitu. Všechny tři údaje se uloží do souboru config.ini v sekci [Default].
Postup naprogramování předvoleb:
V souboru config.ini jsou u všech předvoleb hodnoty azimutu a elevace nulové. To zajistí, že program před správným nastavením nebude na tyto předvolby reagovat. V sekci [Default] jsou aktuální pozice nastaveny na hodnoty 50000. Díky tomu se při prvotním spuštění motorů nemohou hodnoty pozice dostat do záporných čísel, protože maximální rozsah pohybu je přibližně 30000 impulzů.
Nejprve je potřeba nastavit oba nulové body. Pro nastavení nulového bodu azimutu držíme stisknuté tlačítko se šipkou vlevo. V okně terminálu se neustále snižuje hodnota pozice azimutu v prvním sloupci. Třetí sloupec signalizuje dosažení nulového bodu tím, že se hodnota "True" změní na "False". V tuto chvíli je potřeba motor zastavit. Díky setrvačnosti motoru pozicionér správný nulový bod přejede. Proto je ještě potřeba se vrátit zpět pomocí tlačítka se šipkou vpravo. V okamžiku, kdy se v okně terminálu změní hodnota ve třetím sloupci z "False" na "True", dosáhl pozicionér správnou hodnotu nulového bodu. I když se nepodaří motor přesně v tuto chvíli zastavit, program si nastaví hodnotu azimutu na 0 a dále už počítá správnou polohu. Tím je nulová poloha azimutu nastavená.
Obdobným způsobem je potřeba nastavit nulovou polohu elevace. Nejprve držíme stisknuté tlačítko se šipkou dolů. Hodnota elevace se snižuje v okně terminálu ve druhém sloupci. Ve čtvrtém sloupci je dosažení nulového bodu indikováno změnou hodnoty z "True" na "False". V tuto chvíli je potřeba motor zastavit. Opět se kousek vrátíme tlačítkem se šipkou nahoru. Okamžik změny ve čtvrtém sloupci okna terminálu z "False" na "True" zaznamená program jako dosažení správného nulového bodu, vynuluje hodnotu elevace a od této chvíle už počítá správnou polohu.
DŮLEŽITÉ UPOZORNĚNÍ: Můj pozicionér EGIS není konstruován tak, aby se mohl pohybovat za nulovými body. Proto je velmi důležité na nulové body najíždět velice opatrně a po jejich dosažení motory co nejrychleji zastavit. V opačném případě by mohlo dojít k mechanickému poškození pozicionéru.
Po nastavení nulových bodů se už můžeme soustředit na jednotlivé předvolby. Najedeme pomocí šipek na vybraný satelit. Hodnotu jeho azimutu a elevace společně s názvem satelitu si poznamenáme na papír. To můžeme zopakovat pro všechny požadované satelity. Jakmile máme nasbírané potřebné údaje, zapíšeme je pomocí textového editoru k předvolbám v souboru config.ini. Po jakékoliv změně v tomto souboru musíme program node.js restartovat, aby si načetl nové údaje. Nikdy ručně neměňte hodnoty v sekci [Default]. Tím by se porušila integrita aktuální polohy pozicionéru a bylo by třeba znovu nastavovat nulové body.
Po nějaké době používání této zkušební verze ovládacího programu mi začalo vadit, že není zřejmé, který satelit je uložen pod kterou předvolbou. Proto jsem si po naprogramování předvoleb ještě dopsal názvy satelitů do souboru index.html. Na jeho konci jsou tlačítka předvoleb zapsána jako button s hodnotou id="memory01" až "memory20". Pokud k těmto tlačítkům dopíšeme příslušné názvy satelitů do položky title, budou se zobrazovat v okamžiku najetí myši nad tlačítko.
Program má z profesionálního pohledu spoustu nedostatků. Ale stále ještě není určen pro běžné užívání. Jde jen o testování funkčnosti hardware verze 1.0. Přesto musím upozornit, že nejsem zodpovědný za všechny chyby, které se při provozu mohou projevit. Program je totiž založen na spouštění javascriptů. A velice záleží na tom, jak které webové prohlížeče k javascriptům přistupují. Při testování jsem brzy zjistil, že při použití IE11 se program chová velmi nestandardně. Proto jsem při vývoji postupně přešel k používání prohlížeče Google Chrome. S ním se všechny funkce programu chovají správně. Jiné prohlížeče jsem netestoval.
Zdrojové texty programu si můžete stáhnout tady.