Řídicí systém pro ovládání klimatizace a vytápění železničních vozů

Řídicí systém pro ovládání klimatizace a vytápění železničních vozů Řídicí systém pro ovládání klimatizace a vytápění železničních vozů

support.dce.felk.cvut.cz
from support.dce.felk.cvut.cz More from this publisher
12.07.2015 Views

Kapitola 5. Návrh softwaruneexistuje, přechází do stavu GET_STATUS, kdy posílá žádost o aktuální informacez kupé.SET_PARAMETERS – v tomto stavu odešle master dané jednotce paket s aktuálnímiparametry a přejde do stavu RECV_ACK_NACK, kde čeká na odpověď.RECV_ACK_NACK - jednotka může a nemusí předchozímu požadavku o nastavenínových parametrů vyhovět. To znamená že vrací masteru paket s příznakem ACK,resp. NACK. V případě odpovědi ACK i NACK přechází automat do stavuGET_STATUS, aby se dodržela frekvence dotazování na aktuální informace z kupé.Pokud byla odpověď NACK (jednotka nechce vyhovět požadavku o nastavení novýchparametrů), je tento pokus opakován znovu při dalším pokusu o kontaktování jednotky.Jestliže master nepřijme odpověď ve stanoveném časovém úseku, přechází automatdo stavu START_COMM a začíná proces s následující jednotkou.GET_STATUS – automat odešle dotaz na aktuální informace právě zpracovávanéjednotky a přechází do stavu RECV_STATUS, kde čeká na odpověď.RECV_STATUS – v tomto stavu čeká automat na odpověď k dotazu o aktuálníchparametrech z kupé. V těchto parametrech je také zahrnuta informace o tom, zda-li bylajednotka v resetu (po výpadku napájení, výměna při servisu). Pokud je jednotkapo resetu, přechází automat do stavu GET_FW_VERSION, jinak přechází do stavuSTART_COMM a začíná proces s následující jednotkou (i při timeoutu).GET_FW_VERSION – stav pro odeslání požadavku o verzi firmwaru jednotkyv kupé. Po odeslání přechází automat do stavu RECV_FW_VERSIONRECV_FW_VERSION – čekání na odpověď obsahující verzi firmwaru. Jestliže bylazpráva korektně přijata, přechází automat do stavu SET_PARAMETERS, aby mohlybýt jednotce nastaveny nové parametry (jednotka byla před tím v resetu). Při timeoutunebo nekorektním paketu se přechází do počátečního stavu START_COMM a cyklusse opakuje s následující jednotkou.58

Kapitola 5. Návrh softwaruInterface třídy cCommMasterCommMaster poskytuje do aplikace poměrně široký interface pro obsluhujednotek v kupé a pro získání informací o průběhu komunikace.cCommMaster(UartDriver *_driver, const commSetup* const _setupPar)Konstruktor třídy cCommMaster, ve kterém se předává ukazatel na ovladač sériovélinky a ukazatel na strukturu s parametry komunikace. Parametry struktury: početjednotek v kupé, čas do kterého musí jednotka odpovědět (jinak dojte k timeoutu),rychlost cyklického dotazování se jednotek a počet pokusů o kontaktování jednotky (připřekročení tohoto počtu bez úspěchu spojení se komunikace s danou jednotkou prohlásíza ztracenou).~cCommMaster() - destruktor třídy cCommMastervoid reset() - resetování počátečních hodnot a příprava pro start komunikacevoid start() - odstartování komunikacevoid loop() - metoda, která se volá z hlavní nekonečné smyčky programu. Zde pracujecelý stavový automat popsaný výšebool isConnectionEstablished(t_uint16 address) - dotaz, jestli existuje spojenís jednotkou na dané adreset_uint32 getSendPackets() - vrací celkový počet odeslaných paketůt_uint32 getReceivePackets() - vrací celkový počet přijatých paketůt_uint32 getReceiveErrors() - vrací celkový počet chyb v komunikacit_uint16 getTimeouts() - vrací celkový počet timeoutůvoid setServo(t_uint16 address, cComm::parameters servo, bool value) - nastavíjednotce klapku do požadované polohyvoid setAutoRegulation(t_uint16 address, bool value) - nastaví jednotce mód vlastníautoregulace (regulaci si řídí jednotka sama)void setLed(t_uint16 address, bool value) - zapne nebo vypne LED na jednotce (protestovací účely, popřípadě signalizaci stavu jednotky pro obsluhu servisu)t_uint16 getTemperature(t_uint16 address) - vrací teplotu v daném kupé59

Kapitola 5. Návrh softwaruneexistuje, přechází do stavu GET_STATUS, kdy posílá žádost o aktuální informacez kupé.SET_PARAMETERS – v tomto stavu odešle master dané jednotce paket s aktuálnímiparametry a přejde do stavu RECV_ACK_NACK, kde čeká na odpověď.RECV_ACK_NACK - jednotka může a nemusí předchozímu požadavku o nastavenínových parametrů vyhovět. To znamená že vrací masteru paket s příznakem ACK,resp. NACK. V případě odpovědi ACK i NACK přechází automat do stavuGET_STATUS, aby se dodržela frekvence dotazování na aktuální informace z kupé.Pokud byla odpověď NACK (jednotka nechce vyhovět požadavku o nastavení novýchparametrů), je tento pokus opakován znovu při dalším pokusu o kontaktování jednotky.Jestliže master nepřijme odpověď ve stanoveném časovém úseku, přechází automatdo stavu START_COMM a začíná <strong>pro</strong>ces s následující jednotkou.GET_STATUS – automat odešle dotaz na aktuální informace právě zpracovávanéjednotky a přechází do stavu RECV_STATUS, kde čeká na odpověď.RECV_STATUS – v tomto stavu čeká automat na odpověď k dotazu o aktuálníchparametrech z kupé. V těchto parametrech je také zahrnuta informace o tom, zda-li bylajednotka v resetu (po výpadku napájení, výměna při servisu). Pokud je jednotkapo resetu, přechází automat do stavu GET_FW_VERSION, jinak přechází do stavuSTART_COMM a začíná <strong>pro</strong>ces s následující jednotkou (i při timeoutu).GET_FW_VERSION – stav <strong>pro</strong> odeslání požadavku o verzi firmwaru jednotkyv kupé. Po odeslání přechází automat do stavu RECV_FW_VERSIONRECV_FW_VERSION – čekání na odpověď obsahující verzi firmwaru. Jestliže bylazpráva korektně přijata, přechází automat do stavu SET_PARAMETERS, aby mohlybýt jednotce nastaveny nové parametry (jednotka byla před tím v resetu). Při timeoutunebo nekorektním paketu se přechází do počátečního stavu START_COMM a cyklusse opakuje s následující jednotkou.58

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!