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 Lahis Almeida

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?

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