Benedikt Kičin
/
vytah_simulation
Diff: bezpecnost.cpp
- Revision:
- 0:62c18ef61b61
diff -r 000000000000 -r 62c18ef61b61 bezpecnost.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bezpecnost.cpp Wed Jan 23 23:43:20 2019 +0000 @@ -0,0 +1,76 @@ +/** +* @file bezpecnost.cpp +* @brief Súbor obsahuje funkcie ktoré zabezpečujú bezpečnosť výťahu +* @author Benedikt Kicin +* @date 21.1.2018 +*/ + +#include "mbed.h" +#include "TSISensor.h" +#include "komunikacia.h" + +Ticker timerEmerg; //timer pre Emergency Break +Ticker timerWatch; //timer pre WatchDog +TSISensor tsi; //capacitive touch slider + +float pomTSIBreak; +PwmOut led(LED_BLUE); + +/** +* Funkcia ktorá odošle paket pre aktiváciu Bezpečnostnej brzdy +*/ +void Emergency() +{ //komu; od koho; kto ma vykonat; 1b; aktivovat brzdu + int packet0[]= {0xA0,0xf,0x00,0x01,0x01}; //doska; emergBreak; vytah; velkost dat; data-activate + sendTo(packet0); +} + +/** +* Funkcia ktorá odošle paket pre deaktiváciu Bezpečnostnej brzdy +*/ +void EmergencyDeact() +{ + pomTSIBreak=0; + int packet0[]= {0xA0,0xf,0x00,0x01,0x00}; + sendTo(packet0); +} + +/** +* Funkcia ktorá odošle Sledovaciemu zariadeniu - WatchDog-u packet pre reset +*/ +void WatchDogReset() //1 - reset , else - ticker +{ + int packet0[]= {0xA0,0xfe,0x00,0x01,0x01}; ///tu odosielam packet pre reset watchdou + sendTo(packet0); +} + +/** +* Funkciaktorá pravidelne odosiela WatchDog-u paket pre udržanie behu programu +*/ +void WatchDog() +{ + int packet0[]= {0xA0,0xfe,0x00,0x01,0x02}; + sendTo(packet0); +} + +/** +* Funkcia, ktorá deteguje na TSI senzore náraz a vyvolá Bezpečnostnú brzdu +*/ +void TSIBreak() +{ + pomTSIBreak += tsi.readPercentage(); + led = 1.0 - tsi.readPercentage(); + if(pomTSIBreak > 0.1) Emergency(); + +} + +/** +* Obsluha prerušenia pre Bezpečnostnú brzdu zastavenia výťahu a WatchDogu +*/ +void EmergBreak() +{ + EmergencyDeact(); + WatchDogReset(); + timerWatch.attach(&WatchDog,1.0); + timerEmerg.attach(&TSIBreak,1.0); +} \ No newline at end of file