
This is a remote control tester, it uses a CNC, Ethernet Communication with a JAVAFX interface and a PLC in order to control some valves.
Dependencies: EthernetInterface mbed-rtos mbed
Fork of CNC_CONTROLLER by
EixoMonitoring.cpp@2:835c883d81b0, 2017-12-15 (annotated)
- Committer:
- kevencastro7
- Date:
- Fri Dec 15 19:40:41 2017 +0000
- Revision:
- 2:835c883d81b0
- Parent:
- 1:ef18c260ce02
This is a remote control tester, it uses a CNC, Ethernet Communication with a JAVAFX interface and a PLC in order to control some valves.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
waspSalander | 0:7cedfb720712 | 1 | #include "EixoMonitoring.h" |
waspSalander | 0:7cedfb720712 | 2 | |
waspSalander | 1:ef18c260ce02 | 3 | bool EixoMonitoring::stopAll = false; |
waspSalander | 0:7cedfb720712 | 4 | bool EixoMonitoring::isCalibrated = false; |
waspSalander | 0:7cedfb720712 | 5 | |
waspSalander | 0:7cedfb720712 | 6 | |
kevencastro7 | 2:835c883d81b0 | 7 | EixoMonitoring::EixoMonitoring(PCF8574* pcf,int sensor_Origin, int sensor_End ) { |
kevencastro7 | 2:835c883d81b0 | 8 | this->pcf = pcf; |
waspSalander | 0:7cedfb720712 | 9 | this->stopMoviment = false; |
waspSalander | 0:7cedfb720712 | 10 | this->stopMonitoring = false; |
waspSalander | 1:ef18c260ce02 | 11 | this->delayTimer = 700; |
kevencastro7 | 2:835c883d81b0 | 12 | this->sensor_Origin = sensor_Origin; |
kevencastro7 | 2:835c883d81b0 | 13 | this->sensor_End = sensor_End; |
waspSalander | 0:7cedfb720712 | 14 | |
waspSalander | 0:7cedfb720712 | 15 | sensorInput_End = 0; |
waspSalander | 0:7cedfb720712 | 16 | sensorInput_Origin = 0; |
waspSalander | 0:7cedfb720712 | 17 | |
waspSalander | 0:7cedfb720712 | 18 | debug = new Debug(); |
waspSalander | 0:7cedfb720712 | 19 | } |
waspSalander | 0:7cedfb720712 | 20 | |
waspSalander | 0:7cedfb720712 | 21 | |
waspSalander | 0:7cedfb720712 | 22 | void EixoMonitoring::startThreads(){ |
waspSalander | 0:7cedfb720712 | 23 | hitSensor = 0; |
waspSalander | 0:7cedfb720712 | 24 | this->stopMoviment = false; |
waspSalander | 0:7cedfb720712 | 25 | this->stopMonitoring = false; |
waspSalander | 0:7cedfb720712 | 26 | |
waspSalander | 0:7cedfb720712 | 27 | sensorThread_End.start( callback(this, &EixoMonitoring::readSensor_End) ); |
waspSalander | 0:7cedfb720712 | 28 | handleSensorThread_End.start( callback(this, &EixoMonitoring::handleReadSensor_End) ); |
waspSalander | 0:7cedfb720712 | 29 | |
waspSalander | 0:7cedfb720712 | 30 | sensorThread_Origin.start( callback(this, &EixoMonitoring::readSensor_Origin) ); |
waspSalander | 0:7cedfb720712 | 31 | handleSensorThread_Origin.start( callback(this, &EixoMonitoring::handleReadSensor_Origin) ); |
waspSalander | 0:7cedfb720712 | 32 | } |
waspSalander | 0:7cedfb720712 | 33 | |
waspSalander | 0:7cedfb720712 | 34 | void EixoMonitoring::readSensor_End(){ |
waspSalander | 0:7cedfb720712 | 35 | while(stopMonitoring == false){ |
waspSalander | 0:7cedfb720712 | 36 | stdioMutex.lock(); |
kevencastro7 | 2:835c883d81b0 | 37 | sensorInput_End = pcf->read(sensor_End); |
waspSalander | 0:7cedfb720712 | 38 | stdioMutex.unlock(); |
waspSalander | 0:7cedfb720712 | 39 | Thread::wait(50); |
waspSalander | 0:7cedfb720712 | 40 | } |
waspSalander | 0:7cedfb720712 | 41 | } |
waspSalander | 0:7cedfb720712 | 42 | |
waspSalander | 0:7cedfb720712 | 43 | |
waspSalander | 0:7cedfb720712 | 44 | void EixoMonitoring::readSensor_Origin(){ |
waspSalander | 0:7cedfb720712 | 45 | while(stopMonitoring == false){ |
waspSalander | 0:7cedfb720712 | 46 | stdioMutex.lock(); |
kevencastro7 | 2:835c883d81b0 | 47 | sensorInput_Origin = pcf->read(sensor_Origin); |
waspSalander | 0:7cedfb720712 | 48 | stdioMutex.unlock(); |
waspSalander | 0:7cedfb720712 | 49 | Thread::wait(50); |
waspSalander | 0:7cedfb720712 | 50 | } |
waspSalander | 0:7cedfb720712 | 51 | } |
waspSalander | 0:7cedfb720712 | 52 | |
waspSalander | 0:7cedfb720712 | 53 | void EixoMonitoring::handleReadSensor_End(){ |
waspSalander | 0:7cedfb720712 | 54 | Timer* timerLeitura = new Timer(); |
waspSalander | 0:7cedfb720712 | 55 | timerLeitura->start(); |
waspSalander | 0:7cedfb720712 | 56 | |
waspSalander | 0:7cedfb720712 | 57 | while(stopMonitoring == false){ |
waspSalander | 0:7cedfb720712 | 58 | if (stopMoviment == false){ |
waspSalander | 0:7cedfb720712 | 59 | stdioMutex.lock(); |
waspSalander | 0:7cedfb720712 | 60 | if(sensorInput_End == 1 && timerLeitura->read_ms()> this->delayTimer ){ // sensor pressionado ? e passou meio segundo |
waspSalander | 0:7cedfb720712 | 61 | hitSensor++; |
waspSalander | 0:7cedfb720712 | 62 | timerLeitura->reset(); |
waspSalander | 0:7cedfb720712 | 63 | } |
waspSalander | 0:7cedfb720712 | 64 | stdioMutex.unlock(); |
waspSalander | 0:7cedfb720712 | 65 | } |
waspSalander | 0:7cedfb720712 | 66 | |
waspSalander | 0:7cedfb720712 | 67 | |
waspSalander | 0:7cedfb720712 | 68 | // SEGURANÇA DA CNC: |
waspSalander | 0:7cedfb720712 | 69 | if (isCalibrated == false){ |
waspSalander | 0:7cedfb720712 | 70 | |
waspSalander | 0:7cedfb720712 | 71 | if(hitSensor > 1){ // Na fase de calibragem, se bateu + de 2 vezes(achou origem e na contagem de passos): -> true |
waspSalander | 0:7cedfb720712 | 72 | stopMoviment = true; |
waspSalander | 0:7cedfb720712 | 73 | stopAll = true; |
waspSalander | 0:7cedfb720712 | 74 | timerLeitura->stop(); |
waspSalander | 0:7cedfb720712 | 75 | } |
waspSalander | 0:7cedfb720712 | 76 | } |
waspSalander | 0:7cedfb720712 | 77 | else{ |
waspSalander | 0:7cedfb720712 | 78 | if(hitSensor > 0){ // Na fase de teste, se bateu + de 1 vez: -> true |
waspSalander | 0:7cedfb720712 | 79 | stopMoviment = true; |
waspSalander | 0:7cedfb720712 | 80 | stopAll = true; |
waspSalander | 0:7cedfb720712 | 81 | timerLeitura->stop(); |
waspSalander | 0:7cedfb720712 | 82 | } |
waspSalander | 0:7cedfb720712 | 83 | } |
waspSalander | 0:7cedfb720712 | 84 | |
waspSalander | 0:7cedfb720712 | 85 | Thread::wait(50); |
waspSalander | 0:7cedfb720712 | 86 | } |
waspSalander | 0:7cedfb720712 | 87 | timerLeitura->stop(); |
waspSalander | 0:7cedfb720712 | 88 | } |
waspSalander | 0:7cedfb720712 | 89 | |
waspSalander | 0:7cedfb720712 | 90 | void EixoMonitoring::handleReadSensor_Origin(){ |
waspSalander | 0:7cedfb720712 | 91 | |
waspSalander | 0:7cedfb720712 | 92 | Timer* timerLeitura = new Timer(); |
waspSalander | 0:7cedfb720712 | 93 | timerLeitura->start(); |
waspSalander | 0:7cedfb720712 | 94 | |
waspSalander | 0:7cedfb720712 | 95 | while(stopMonitoring == false){ |
waspSalander | 0:7cedfb720712 | 96 | |
waspSalander | 0:7cedfb720712 | 97 | if (stopMoviment == false){ |
waspSalander | 0:7cedfb720712 | 98 | stdioMutex.lock(); |
waspSalander | 0:7cedfb720712 | 99 | if(sensorInput_Origin == 1 && timerLeitura->read_ms()> this->delayTimer){ // sensor pressionado ? |
waspSalander | 0:7cedfb720712 | 100 | hitSensor++; |
waspSalander | 0:7cedfb720712 | 101 | timerLeitura->reset(); |
waspSalander | 0:7cedfb720712 | 102 | } |
waspSalander | 0:7cedfb720712 | 103 | stdioMutex.unlock(); |
waspSalander | 0:7cedfb720712 | 104 | } |
waspSalander | 0:7cedfb720712 | 105 | |
waspSalander | 0:7cedfb720712 | 106 | |
waspSalander | 0:7cedfb720712 | 107 | // SEGURANÇA DA CNC: |
waspSalander | 0:7cedfb720712 | 108 | if (isCalibrated == false){ |
waspSalander | 0:7cedfb720712 | 109 | if(hitSensor > 1){ // Na fase de calibragem, se bateu + de 2 vezes(achou origem e na contagem de passos): -> true |
waspSalander | 0:7cedfb720712 | 110 | stopMoviment = true; |
waspSalander | 0:7cedfb720712 | 111 | stopAll = true; |
waspSalander | 0:7cedfb720712 | 112 | timerLeitura->stop(); |
waspSalander | 0:7cedfb720712 | 113 | } |
waspSalander | 0:7cedfb720712 | 114 | } |
waspSalander | 0:7cedfb720712 | 115 | else{ |
waspSalander | 0:7cedfb720712 | 116 | if(hitSensor > 0){ // Na fase de teste, se bateu + de 1 vez: -> true |
waspSalander | 0:7cedfb720712 | 117 | stopMoviment = true; |
waspSalander | 0:7cedfb720712 | 118 | stopAll = true; |
waspSalander | 0:7cedfb720712 | 119 | timerLeitura->stop(); |
waspSalander | 0:7cedfb720712 | 120 | } |
waspSalander | 0:7cedfb720712 | 121 | } |
waspSalander | 0:7cedfb720712 | 122 | |
waspSalander | 0:7cedfb720712 | 123 | Thread::wait(50); |
waspSalander | 0:7cedfb720712 | 124 | } |
waspSalander | 0:7cedfb720712 | 125 | timerLeitura->stop(); |
waspSalander | 0:7cedfb720712 | 126 | } |
waspSalander | 0:7cedfb720712 | 127 | |
waspSalander | 0:7cedfb720712 | 128 | void EixoMonitoring::stopThreads(){ |
waspSalander | 0:7cedfb720712 | 129 | |
waspSalander | 0:7cedfb720712 | 130 | this->stopMoviment = true; |
waspSalander | 0:7cedfb720712 | 131 | this->stopMonitoring = true; |
waspSalander | 0:7cedfb720712 | 132 | |
waspSalander | 0:7cedfb720712 | 133 | sensorThread_End.join(); |
waspSalander | 0:7cedfb720712 | 134 | handleSensorThread_End.join(); |
waspSalander | 0:7cedfb720712 | 135 | sensorThread_Origin.join(); |
waspSalander | 0:7cedfb720712 | 136 | handleSensorThread_Origin.join(); |
waspSalander | 0:7cedfb720712 | 137 | |
waspSalander | 0:7cedfb720712 | 138 | sensorThread_End.terminate(); |
waspSalander | 0:7cedfb720712 | 139 | handleSensorThread_End.terminate(); |
waspSalander | 0:7cedfb720712 | 140 | sensorThread_Origin.terminate(); |
waspSalander | 0:7cedfb720712 | 141 | handleSensorThread_Origin.terminate(); |
waspSalander | 0:7cedfb720712 | 142 | |
waspSalander | 0:7cedfb720712 | 143 | } |