Zadání zápočtového programu jaro 2014 IB053 Autor: Petr Steinmetz Datum: 28.02.2014 Verze: 4 Obsah Zadání zápočtového programu jaro 2014.............................................................................................3 Komponenty aplikace......................................................................................................................3 Kabina.........................................................................................................................................4 Dům.............................................................................................................................................4 Řídící jednotka............................................................................................................................4 Komunikační protokol.....................................................................................................................4 Řídící jednotka → Kabina...........................................................................................................4 Řídící jednotka → Dům..............................................................................................................5 Detaily činnosti výtahu....................................................................................................................5 Indikace na panelu v kabině:.......................................................................................................6 Indikace v jednotlivých patrech..................................................................................................6 Prezentace činnosti kabiny..........................................................................................................6 Prezentace činnosti domu............................................................................................................7 Zadání zápočtového programu jaro 2014 Simulace výtahu: půjde o interaktivní znázornění činnosti výtahu v domě Tvorba programu ve skupinách s 3-4 osobami Doporučené programovací jazyky: Java, C, C++ případně i jiný dle individuální dohody Komponenty aplikace Výtah se skládá z těchto samostatných komponent: - řídící jednotka (stavový automat, událostmi řízený, reaguje na tlačítka v kabině a patrech, polohová čidla a čidla otevření dveří) - kabina s dveřmi, osvětlením, ovládacím tablem (tlačítka a kontrolní LED, indikace stavu výtahu) a čidlem zatížení a přetížení (generované události: tlačítka, otevření a dovření dveří, zatížení/přetížení kabiny; příkazy: otevři/zavři dveře, rozsviť/zhasni osvětlení kabiny a kontrolní LED) - dům s jednotlivými nástupišti (přivolávací tlačítko, indikace stavu výtahu), motor, šachta s polohovými čidly (před/za/ve stanici + koncová za poslední stanicí) (příkazy: jízda nahoru/dolů, zpomal, stůj, indikace stavu výtahu; generované události: průjezd čidlem, tlačítka v patrech) Každá komponenta komunikuje s ostatními komponentami vlastním protokolem nad TCP/IP . Při komunikaci se přenášejí události do řídící jednotky a příkazy z řídící jednotky. Tento protokol je součástí zadání → vzájemná kompatibilita komponent různých skupin. Každá komponenta bude svou činnost znázorňovat graficky, kabina a dům se budou ovládat myší (stisk tlačítka). Jednotlivé komponenty jsou realizovány jako UI-aplikace (řídící jednotka by případně stačila jako konzolová aplikace, která do okna vypisuje svoji činnost. Kabina - navazuje TCP spojení s řídící jednotkou na adrese localhost:8080 (adresa i port konfigurovatelné) - jedná se o zcela pasivní zařízení, které pouze provádí příkazy a indikuje svůj stav, jinak nerealizuje žádnou logiku - počet pater je konfigurovatelný, označení pater je konfigurovatelné - patra v komunikačním protokolu jsou číslována od nuly, pro uživatele je indikováno označení patra, které nemusí být přímo toto číslo (např. P – přízemí, -1 sklep apod) Dům - navazuje TCP spojení s řídící jednotkou na adrese localhost:8081 (adresa i port konfigurovatelné) - jedná se o zcela pasivní zařízení, které pouze provádí příkazy a indikuje svůj stav, jinak nerealizuje žádnou logiku - počet pater je konfigurovatelný, označení pater je konfigurovatelné Řídící jednotka - očekává příchozí spojení od kabiny na TCP portu 8080 (konfigurovatelné) - očekává příchozí spojení od domu na adrese TCP portu 8081 (konfigurovatelné) - počet pater sdělí dům i kabina při navázání spojení, pokud nesouhlasí ukončit spojení - dům navíc při inicializaci sdělí které patro je přízemí Komunikační protokol Komunikační protokol má textový formát, každý příkaz nebo každá událost na samostatném řádku ukončeném CR LF Příkaz i událost mají formát: NAZEV;parametr1;parameter2;... (počet parametrů je závislý na konkrétním příkazu/události) Řídící jednotka → Kabina (v praxi by bylo realizováno kabelem mezi strojovnou a kabinou) Příkazy: OTEVRI (otevře dveře) ZAVRI (zavře dveře) ROZSVIT (rozsvítí světlo v kabině) ZHASNI (zhasne světlo v kabině) PANEL;směr;patro (oznam na informačním panelu, směr jízdy a aktuální patro – směr je N,D,S,K,P – nahoru/dolů/stojí s otevřenými dveřmi/v klidu, tj. se zavřenými dveřmi a bez osob, patro je až dvojciferné číslo od 0, přetížená kabina) INDIKACE;patro;stav (ovládání kontrolního světla vedle tlačítka patro na panelu – stav je S,N,B – svítí nesvítí bliká) Události: INICIALIZACE;počet_pater (úvodní hlášení po navázání spojení) TLACITKO;patro (stisknuto tlačítko na panelu) TLACITKO_OTEVRI (stisknuto tlačítko pro otevření dveří) TLACITKO_ZAVRI (stisknuto tlačítko pro zavření dveří) DVERE;stav (dokončení otevírání/zavírání dveří – stav je O/Z) ZATIZENI;stav (indikace zatížení výtahu 0,10,100,101 – prázdný, neplný, plný, přetížený) PRUCHOD (indikace, že otevřenými dveřmi prošla dovnitř nebo ven osoba) CHYBOVY_STAV;stav (D – nelze vykonat příkaz pro otevření dveří) Řídící jednotka → Dům Příkazy: JIZDA;směr (pokyn k jízdě 0,D,N,P – stop/dolů/nahoru/zpomal) PANEL;směr;patro (oznam na informačních panelech ve všech patrech směr jízdy a aktuální patro – směr je N,D,S,K – nahoru/dolů/stojí/v klidu, patro je až dvojciferné číslo od 0) INDIKACE;patro;stav (ovládání kontrolního světla vedle tlačítka patro na panelu – stav je S,N,B – svítí nesvítí bliká) Události: INICIALIZACE;počet_pater;číslo_patra_přízemí (úvodní hlášení po navázání spojení) POHYB;stav (indikace pohybu: S,P,J – stojí mimo patro/stojí v patře/jede POLOHA;druh_polohového_čidla (P,S,N,KD,KN,S0 – pod stanicí, ve stanici, nad stanicí, koncové bezpečnostní číslo pod nejnižší stanicí a nad nejvyšší stanicí, v nejnižší stanici) TLACITKO;patro (stisknuto přivolávací tlačítko v patře) Detaily činnosti výtahu - v kabině lze zvolit více pater najednou, výtah postupně zastavuje, ale není možné volit patro, které je opačným směrem než kterým výtah jede, resp. pojede - obsazený i prázdný výtah jedoucí směrem dolů lze zastavit stisknutím tlačítka v patře - řídící jednotka nemá nakonfigurovaný počet pater, tyto údaje jí po navázání spojení oznámí kabina i výtah. Pokud tyto počty nesouhlasí, řídící jednotka ukončí TCP spojení - dveře se po příjezdu do patra otevírají automaticky, otevírací tlačítko slouží k otevření dveří, pokud se zavírají, ale ještě nedovřely nebo se zavřely, ale nebylo zvoleno žádné patro - podobně se dveře zavírají automaticky, pokud určenou dobu (např. 5 sec – může být též konfigurovatelné u řídící jednotky) neprojde dveřmi žádná osoba, zavíracím tlačítkem lze zavření uspíšit Indikace na panelu v kabině: - zobrazováno je aktuální patro nebo poslední patro, kterým výtah projel, pokud je právě mezi patry - kontrolní světlo u tlačítka patra: svítí, pokud výtah do daného patra pojede na základě volby uživatele v kabině; bliká, pokud výtah v dané stanici zastaví na základě volby uživatele v patře Indikace v jednotlivých patrech - v každém patře je informační panel, který zobrazuje přinejmenším jestli výtah je zcela v klidu, stojí s otevřenými dveřmi, jede a kterým směrem a případně i ve kterém je patře - vedle přivolávacího tlačítka je kontrolka, která svítí, pokud je výtah přivolán do patra stisknutím přivolávacího tlačítka nebo bliká, pokud výtah jede do patra z důvodu volby patra v kabině Prezentace činnosti kabiny - vnitřek kabiny a posuvné dveře jsou zobrazeny v okně - je zde informační panel, tlačítka pro volbu patra, zavření a otevření dveří a kontrolní světlo u každého tlačítka, na tlačítka se dá klikat - vhodným způsobem se znázorní, zda v kabině svítí světlo - otevírání/zavírání dveří je znázorněno postupnou animací - v kabině je symbolicky znázorněno několik osob tak, aby bylo zřetelné, jestli osoba v kabině je nebo není – kliknutím na „prázdnou“ osobu se provede nastoupení osoby a osoba se změní na „plnou“, kliknutím na „plnou“ osobu se provede vystoupení osoby – obojí lze pouze při otevřených dveřích - nastoupením konkrétního počtu osob se volí, jestli je výtah prázdný, obsazený, plný nebo přeplněný Prezentace činnosti domu - dům se šachtou, ve které se pohybuje výtah (stačí znázornit jako obdélník, jehož poloha se mění nahoru a dolů – animace), výtah buď stojí, nebo jede standardní rychlostí nebo pomalu (při dojezdu do patra) - v domě je příslušný počet pater - v každém patře jsou tři čidla polohy (pod/v/nad patrem), dále má šachta dvě bezpečnostní čidla nahoře a dole, průjezd kabiny okolo každého čidla je indikován událostí – u těchto čidel se nerozlišuje konkrétní patro – řídící jednotka si musí pamatovat ve kterém je patře. Výjimkou je nejnižší patro, kde je místo čidlem S hlášena poloha čidlem S0. Pokud tedy řídící jednotka z nějakých důvodů nezná polohu kabiny, pošle ji směrem dolů, dokud není oznámena poloha čidlem S0 (nebo teoreticky KD, pokud by poloha byla pod nejnižším patrem.