control simulation of elevator

Dependencies:   mbed TSI

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?

UserRevisionLine numberNew 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 }