Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04
Fork of smartRamalKW by
memoriaMassa.cpp
00001 #include "memoriaMassa.h" 00002 00003 void MemoriaMassa::iniciaLeituras(int periodoSec, int size, int sector1, int sector2, int sector3){ 00004 mmPeriodoSec = periodoSec; 00005 if(APP_PARAMETERS.ENABLE_LOAD_PROFILE > 0) { 00006 queue[0].init(size, sector1); 00007 queue[1].init(size, sector2); 00008 queue[2].init(size, sector3); 00009 } 00010 leituraPeriodica.attach(this, &MemoriaMassa::disparaLeitura, mmPeriodoSec); 00011 DEBUG(printf("[LP] Periodic Reading started (%d seconds)\r\n", mmPeriodoSec)); 00012 } 00013 00014 void MemoriaMassa::disparaLeitura(){ 00015 lerAgora = true; 00016 } 00017 00018 void MemoriaMassa::executaLeitura(){ 00019 if(!lerAgora){ 00020 return; 00021 } 00022 00023 float f1 = getInstVoltage(0); 00024 float f2 = getInstVoltage(1); 00025 float f3 = getInstCurrent(); 00026 00027 if(APP_PARAMETERS.LOAD_CHANNEL == 0){ 00028 f1 = f2 - f1; 00029 } else{ 00030 f2 = f1 - f2; 00031 } 00032 00033 if(APP_PARAMETERS.ENABLE_LOAD_PROFILE > 0) { 00034 LeituraMM leitura; 00035 leitura.value.floatValue = f1; 00036 leitura.time = time(NULL); 00037 queue[0].add((char*)&leitura); 00038 00039 leitura.value.floatValue = f2; 00040 queue[1].add((char*)&leitura); 00041 00042 leitura.value.floatValue = f3; 00043 queue[2].add((char*)&leitura); 00044 00045 DEBUG(printf("[LP] Reading time = %s\r\n", ctime(&(leitura.time)))); 00046 DEBUG(printf("[LP] New record stored: Time=%d, Ch0=%f\r\n", leitura.time, f1)); 00047 DEBUG(printf("[LP] New record stored: Time=%d, Ch1=%f\r\n", leitura.time, f2)); 00048 DEBUG(printf("[LP] New record stored: Time=%d, Ch2=%f\r\n", leitura.time, f3)); 00049 } 00050 00051 checkAlarms(f1, f2, f3); 00052 00053 lerAgora = false; 00054 } 00055 00056 char* MemoriaMassa::getMM(int channel){ 00057 if(channel < 0 || channel > 2){ 00058 DEBUG(printf("[LP] Invalid channel %d\r\n", channel)); 00059 return NULL; 00060 } 00061 return queue[channel].getAll(); 00062 } 00063 00064 void MemoriaMassa::checkAlarms(float ch1, float ch2, float ch3){ 00065 bool tensaoZero, tensaoMinima, tensaoMaxima, correnteZero, correnteMinima, correnteMaxima; 00066 int linha, carga, limiteZeroLinha, limiteZeroCarga; 00067 if(APP_PARAMETERS.LOAD_CHANNEL == 0){ 00068 linha = (int)ch2; 00069 carga = (int)ch1; 00070 limiteZeroLinha = APP_PARAMETERS.LIMITE_TENSAO_ZERO_CH1_V; 00071 limiteZeroCarga = APP_PARAMETERS.LIMITE_TENSAO_ZERO_CH0_V; 00072 } else{ 00073 linha = (int)ch1; 00074 carga = (int)ch2; 00075 limiteZeroLinha = APP_PARAMETERS.LIMITE_TENSAO_ZERO_CH0_V; 00076 limiteZeroCarga = APP_PARAMETERS.LIMITE_TENSAO_ZERO_CH1_V; 00077 } 00078 00079 if((linha - carga) > (linha*APP_PARAMETERS.LIMITE_TENSAO_SENSOR_V)/100.0){ 00080 ledLoad = LED_ON; 00081 } else if((linha - carga) < -(linha*APP_PARAMETERS.LIMITE_TENSAO_SENSOR_V)/100.0){ 00082 ledLoad = LED_ON; 00083 } else{ 00084 ledLoad = LED_OFF; 00085 } 00086 00087 tensaoZero = linha < limiteZeroLinha; 00088 tensaoMinima = linha < APP_PARAMETERS.LIMITE_TENSAO_MINIMA_LINHA_V; 00089 tensaoMaxima = linha > APP_PARAMETERS.LIMITE_TENSAO_MAXIMA_LINHA_V; 00090 00091 DEBUG(printf("[LP] Line Zero Voltage ST = %d\r\n", tensaoZero)); 00092 DEBUG(printf("[LP] Line Undervoltage ST = %d\r\n", tensaoMinima)); 00093 DEBUG(printf("[LP] Line Overvoltage ST = %d\r\n", tensaoMaxima)); 00094 00095 if(isAlarmEnabled(ALARME_LINHA_TENSAO_ZERO)){ 00096 alarm.writeAlarm(ALARME_LINHA_TENSAO_ZERO, tensaoZero, getAlarmState(ALARME_LINHA_TENSAO_ZERO)); 00097 } 00098 if(isAlarmEnabled(ALARME_LINHA_TENSAO_MINIMA)){ 00099 alarm.writeAlarm(ALARME_LINHA_TENSAO_MINIMA, tensaoMinima, getAlarmState(ALARME_LINHA_TENSAO_MINIMA)); 00100 } 00101 if(isAlarmEnabled(ALARME_LINHA_TENSAO_MAXIMA)){ 00102 alarm.writeAlarm(ALARME_LINHA_TENSAO_MAXIMA, tensaoMaxima, getAlarmState(ALARME_LINHA_TENSAO_MAXIMA)); 00103 } 00104 00105 tensaoZero = carga < limiteZeroCarga; 00106 tensaoMinima = carga < APP_PARAMETERS.LIMITE_TENSAO_MINIMA_CARGA_V; 00107 tensaoMaxima = carga > APP_PARAMETERS.LIMITE_TENSAO_MAXIMA_CARGA_V; 00108 00109 DEBUG(printf("[LP] Load Zero Voltage ST = %d\r\n", tensaoZero)); 00110 DEBUG(printf("[LP] Load Undervoltage ST = %d\r\n", tensaoMinima)); 00111 DEBUG(printf("[LP] Load Overvoltage ST = %d\r\n", tensaoMaxima)); 00112 00113 if(isAlarmEnabled(ALARME_CARGA_TENSAO_ZERO)){ 00114 alarm.writeAlarm(ALARME_CARGA_TENSAO_ZERO, tensaoZero, getAlarmState(ALARME_CARGA_TENSAO_ZERO)); 00115 } 00116 if(isAlarmEnabled(ALARME_CARGA_TENSAO_MINIMA)){ 00117 alarm.writeAlarm(ALARME_CARGA_TENSAO_MINIMA, tensaoMinima, getAlarmState(ALARME_CARGA_TENSAO_MINIMA)); 00118 } 00119 if(isAlarmEnabled(ALARME_CARGA_TENSAO_MAXIMA)){ 00120 alarm.writeAlarm(ALARME_CARGA_TENSAO_MAXIMA, tensaoMaxima, getAlarmState(ALARME_CARGA_TENSAO_MAXIMA)); 00121 } 00122 00123 correnteZero = ch3 < APP_PARAMETERS.LIMITE_CORRENTE_ZERO_A.floatValue; 00124 correnteMinima = ch3 < APP_PARAMETERS.LIMITE_CORRENTE_MINIMA_A.floatValue; 00125 correnteMaxima = ch3 > APP_PARAMETERS.LIMITE_CORRENTE_MAXIMA_A.floatValue; 00126 00127 DEBUG(printf("[LP] Zero Current ST = %d\r\n", correnteZero)); 00128 DEBUG(printf("[LP] Undercurrent ST = %d\r\n", correnteMinima)); 00129 DEBUG(printf("[LP] Overcurrent ST = %d\r\n", correnteMaxima)); 00130 00131 if(isAlarmEnabled(ALARME_CORRENTE_ZERO)){ 00132 alarm.writeAlarm(ALARME_CORRENTE_ZERO, correnteZero, getAlarmState(ALARME_CORRENTE_ZERO)); 00133 } 00134 if(isAlarmEnabled(ALARME_CORRENTE_MINIMA)){ 00135 alarm.writeAlarm(ALARME_CORRENTE_MINIMA, correnteMinima, getAlarmState(ALARME_CORRENTE_MINIMA)); 00136 } 00137 if(isAlarmEnabled(ALARME_CORRENTE_MAXIMA)){ 00138 alarm.writeAlarm(ALARME_CORRENTE_MAXIMA, correnteMaxima, getAlarmState(ALARME_CORRENTE_MAXIMA)); 00139 } 00140 00141 }
Generated on Thu Jul 14 2022 00:24:57 by
1.7.2
