
control simulation of elevator
bezpecnost.cpp@1:7dea46c9d8dc, 2019-01-23 (annotated)
- Committer:
- kicin2
- Date:
- Wed Jan 23 23:52:27 2019 +0000
- Revision:
- 1:7dea46c9d8dc
- Parent:
- 0:62c18ef61b61
version 1.0.2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kicin2 | 0:62c18ef61b61 | 1 | /** |
kicin2 | 0:62c18ef61b61 | 2 | * @file bezpecnost.cpp |
kicin2 | 0:62c18ef61b61 | 3 | * @brief Súbor obsahuje funkcie ktoré zabezpečujú bezpečnosť výťahu |
kicin2 | 0:62c18ef61b61 | 4 | * @author Benedikt Kicin |
kicin2 | 0:62c18ef61b61 | 5 | * @date 21.1.2018 |
kicin2 | 0:62c18ef61b61 | 6 | */ |
kicin2 | 0:62c18ef61b61 | 7 | |
kicin2 | 0:62c18ef61b61 | 8 | #include "mbed.h" |
kicin2 | 0:62c18ef61b61 | 9 | #include "TSISensor.h" |
kicin2 | 0:62c18ef61b61 | 10 | #include "komunikacia.h" |
kicin2 | 0:62c18ef61b61 | 11 | |
kicin2 | 0:62c18ef61b61 | 12 | Ticker timerEmerg; //timer pre Emergency Break |
kicin2 | 0:62c18ef61b61 | 13 | Ticker timerWatch; //timer pre WatchDog |
kicin2 | 0:62c18ef61b61 | 14 | TSISensor tsi; //capacitive touch slider |
kicin2 | 0:62c18ef61b61 | 15 | |
kicin2 | 0:62c18ef61b61 | 16 | float pomTSIBreak; |
kicin2 | 0:62c18ef61b61 | 17 | PwmOut led(LED_BLUE); |
kicin2 | 0:62c18ef61b61 | 18 | |
kicin2 | 0:62c18ef61b61 | 19 | /** |
kicin2 | 0:62c18ef61b61 | 20 | * Funkcia ktorá odošle paket pre aktiváciu Bezpečnostnej brzdy |
kicin2 | 0:62c18ef61b61 | 21 | */ |
kicin2 | 0:62c18ef61b61 | 22 | void Emergency() |
kicin2 | 0:62c18ef61b61 | 23 | { //komu; od koho; kto ma vykonat; 1b; aktivovat brzdu |
kicin2 | 0:62c18ef61b61 | 24 | int packet0[]= {0xA0,0xf,0x00,0x01,0x01}; //doska; emergBreak; vytah; velkost dat; data-activate |
kicin2 | 0:62c18ef61b61 | 25 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 26 | } |
kicin2 | 0:62c18ef61b61 | 27 | |
kicin2 | 0:62c18ef61b61 | 28 | /** |
kicin2 | 0:62c18ef61b61 | 29 | * Funkcia ktorá odošle paket pre deaktiváciu Bezpečnostnej brzdy |
kicin2 | 0:62c18ef61b61 | 30 | */ |
kicin2 | 0:62c18ef61b61 | 31 | void EmergencyDeact() |
kicin2 | 0:62c18ef61b61 | 32 | { |
kicin2 | 0:62c18ef61b61 | 33 | pomTSIBreak=0; |
kicin2 | 0:62c18ef61b61 | 34 | int packet0[]= {0xA0,0xf,0x00,0x01,0x00}; |
kicin2 | 0:62c18ef61b61 | 35 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 36 | } |
kicin2 | 0:62c18ef61b61 | 37 | |
kicin2 | 0:62c18ef61b61 | 38 | /** |
kicin2 | 0:62c18ef61b61 | 39 | * Funkcia ktorá odošle Sledovaciemu zariadeniu - WatchDog-u packet pre reset |
kicin2 | 0:62c18ef61b61 | 40 | */ |
kicin2 | 0:62c18ef61b61 | 41 | void WatchDogReset() //1 - reset , else - ticker |
kicin2 | 0:62c18ef61b61 | 42 | { |
kicin2 | 0:62c18ef61b61 | 43 | int packet0[]= {0xA0,0xfe,0x00,0x01,0x01}; ///tu odosielam packet pre reset watchdou |
kicin2 | 0:62c18ef61b61 | 44 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 45 | } |
kicin2 | 0:62c18ef61b61 | 46 | |
kicin2 | 0:62c18ef61b61 | 47 | /** |
kicin2 | 0:62c18ef61b61 | 48 | * Funkciaktorá pravidelne odosiela WatchDog-u paket pre udržanie behu programu |
kicin2 | 0:62c18ef61b61 | 49 | */ |
kicin2 | 0:62c18ef61b61 | 50 | void WatchDog() |
kicin2 | 0:62c18ef61b61 | 51 | { |
kicin2 | 0:62c18ef61b61 | 52 | int packet0[]= {0xA0,0xfe,0x00,0x01,0x02}; |
kicin2 | 0:62c18ef61b61 | 53 | sendTo(packet0); |
kicin2 | 0:62c18ef61b61 | 54 | } |
kicin2 | 0:62c18ef61b61 | 55 | |
kicin2 | 0:62c18ef61b61 | 56 | /** |
kicin2 | 0:62c18ef61b61 | 57 | * Funkcia, ktorá deteguje na TSI senzore náraz a vyvolá Bezpečnostnú brzdu |
kicin2 | 0:62c18ef61b61 | 58 | */ |
kicin2 | 0:62c18ef61b61 | 59 | void TSIBreak() |
kicin2 | 0:62c18ef61b61 | 60 | { |
kicin2 | 0:62c18ef61b61 | 61 | pomTSIBreak += tsi.readPercentage(); |
kicin2 | 0:62c18ef61b61 | 62 | led = 1.0 - tsi.readPercentage(); |
kicin2 | 0:62c18ef61b61 | 63 | if(pomTSIBreak > 0.1) Emergency(); |
kicin2 | 0:62c18ef61b61 | 64 | |
kicin2 | 0:62c18ef61b61 | 65 | } |
kicin2 | 0:62c18ef61b61 | 66 | |
kicin2 | 0:62c18ef61b61 | 67 | /** |
kicin2 | 0:62c18ef61b61 | 68 | * Obsluha prerušenia pre Bezpečnostnú brzdu zastavenia výťahu a WatchDogu |
kicin2 | 0:62c18ef61b61 | 69 | */ |
kicin2 | 0:62c18ef61b61 | 70 | void EmergBreak() |
kicin2 | 0:62c18ef61b61 | 71 | { |
kicin2 | 0:62c18ef61b61 | 72 | EmergencyDeact(); |
kicin2 | 0:62c18ef61b61 | 73 | WatchDogReset(); |
kicin2 | 0:62c18ef61b61 | 74 | timerWatch.attach(&WatchDog,1.0); |
kicin2 | 0:62c18ef61b61 | 75 | timerEmerg.attach(&TSIBreak,1.0); |
kicin2 | 0:62c18ef61b61 | 76 | } |