Frederico Prado / smartRamalEZR

Dependencies:   CRC16 FreescaleIAP FreescaleWatchdog GGSProtocol LM75B PIMA Parameters PersistentCircularQueue SerialNumberV2COM mbed-dev-watchdog_2016_03_04

Fork of smartRamalKW by Equipe Firmware V2COM

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers appParameters.h Source File

appParameters.h

00001 #ifndef APPPARAMETERS_H
00002 #define APPPARAMETERS_H
00003 
00004 #include "mbed.h"
00005 #include "settings.h"
00006 #include "parameters.h"
00007 #include "debug.h"
00008 
00009 #define ALARME_LINHA_TENSAO_ZERO        0
00010 #define ALARME_LINHA_TENSAO_MINIMA      1
00011 #define ALARME_LINHA_TENSAO_MAXIMA      2
00012 #define ALARME_CORRENTE_ZERO            3
00013 #define ALARME_CORRENTE_MINIMA          4
00014 #define ALARME_CORRENTE_MAXIMA          5
00015 #define ALARME_CARGA_TENSAO_ZERO        6
00016 #define ALARME_CARGA_TENSAO_MINIMA      7
00017 #define ALARME_CARGA_TENSAO_MAXIMA      8
00018 #define ALARME_CAIXA                    9
00019 #define ALARME_RESERVADO1               10
00020 #define ALARME_RESERVADO2               11
00021 #define ALARME_RETORNO_POTENCIAL        12
00022 
00023 typedef struct {
00024     unsigned int estadoRele;
00025     unsigned int RELIGAR_LARGURA_PULSO_MS;    // Largura do pulso enviado ao rele em milissegundos para religar
00026     unsigned int CORTAR_LARGURA_PULSO_MS;     // Largura do pulso enviado ao rele em milissegundos para cortar
00027     unsigned int DELAY_SENSOR_MS;             // Tempo esperado apos enviar um pulso para o rele e antes de verificar o estado do sensor de fornecimento (em milissegundos)
00028     unsigned int INTERVALO_SILENCIO_S;        // intervalo sem receber bytes na rede para considerar que a linha esta livre pra envio do anuncio
00029     unsigned int INTERVALO_WD_NETWORK_S;      // intervalo de watchdog da comunicacao de rede, em segundos. Se nao receber comandos apos este periodo vai resetar
00030     unsigned int LIMITE_TENSAO_SENSOR_V;      // Limite de tensao em volts RMS no conversor A/D para considerar que a linha esta energizada
00031     unsigned int SAMPLES;                     // Numero de amostras para calculo da tensao RMS nos sensores de carga e linha
00032     unsigned int SAMPLES_DELAY_US;            // Intervalo entre amostras para calculo da tensao RMS (em microssegundos)
00033     union{
00034         float floatValue;                     // Coeficiente angular das amostras de tensao do A/D
00035         char bytes[4];
00036     } SAMPLES_VOLTAGE_ANG_COEF;
00037     union{
00038         float floatValue;                     // Coeficiente linear das amostras de tensao do A/D
00039         char bytes[4];
00040     } SAMPLES_VOLTAGE_LIN_COEF;
00041     unsigned int LOAD_CHANNEL;                // Indica o canal (0 ou 1) onde esta ligada a carga, para que as rotinas de corte e religa verifiquem a alimentacao corretamente
00042     unsigned int INTERVALO_MM_S;              // Intervalo de leitura de Memoria de Massa em segundos
00043     unsigned int MM_SIZE;                     // Numero maximo de registros da memoria de massa
00044     unsigned int contadorCiclos;              // Totalizador de numero de operacoes de corte/religa
00045     unsigned int ENABLE_ALARMS;               // Bitmask para habilitacao dos alarmes
00046     unsigned int ALARMS_STATES;               // Estados dos alarmes
00047     unsigned int ALARMS_QUEUE_SIZE;           // Tamanho maximo da fila de alarmes
00048     unsigned int LIMITE_TENSAO_ZERO_CH0_V;
00049     unsigned int LIMITE_TENSAO_MINIMA_LINHA_V;
00050     unsigned int LIMITE_TENSAO_MAXIMA_LINHA_V;
00051     unsigned int LIMITE_TENSAO_ZERO_CH1_V;
00052     unsigned int LIMITE_TENSAO_MINIMA_CARGA_V;
00053     unsigned int LIMITE_TENSAO_MAXIMA_CARGA_V;
00054     unsigned int PROTOCOLO_MEDIDOR;           // Protocolo de comunicacao com medidor: 0 = PIMA ELO, 1 = Piminha Copel, tambem chamado de SER-311
00055     unsigned int INTERVALO_WD_METER_S;        // intervalo de watchdog da comunicacao com medidor, em segundos. Se nao receber dados apos este periodo vai resetar
00056     unsigned int PIMA_TIMEOUT_PACOTE_S;    // Intervalo em segundos para aguardar os 3 pacotes piminha (as 3 energias) logo apos receber o primeiro byte de um pacote. Eh necessario aguardar pois caso contrario, ao interpretar cada pacote que chega separadamente acontece de perder o pacote que vem logo em seguida, entao precisamos juntar todos os pacotes para depois tratar.
00057     unsigned int PIMA_VALIDADE_MEDIDOR_S;  // Validade em segundos da informacao de numero do medidor. Se ficar este periodo sem receber pacote do medidor considera medidor invalido (ou seja, medidor fica com valor 0xFFFFFFFFFFFFFF no anuncio).
00058     unsigned int PIMA_VALIDADE_ENERGIA_ATIVA_S;                // Validade em segundos da informacao de energia ativa. Apos este periodo sem receber nova informacao de energia ativa, conisidera a informacao inexistente.
00059     unsigned int PIMA_VALIDADE_ENERGIA_REATIVA_INDUTIVA_S;     // Validade em segundos da informacao de energia reativa indutiva. Apos este periodo sem receber nova informacao de energia reativa indutiva, conisidera a informacao inexistente.
00060     unsigned int PIMA_VALIDADE_ENERGIA_REATIVA_CAPACITIVA_S;   // Validade em segundos da informacao de energia reativa capacitiva. Apos este periodo sem receber nova informacao de energia reativa capacitiva, conisidera a informacao inexistente.
00061     unsigned int PIMA_AUTOBAUD_ENABLE;     // Habilita (1) ou desabilita (0) o autobaud, que eh a tentativa de comunicacao com o medidor em varios baudrates (300, 600, 1200, 1800, 2400 e 4800 bps)
00062     unsigned int PIMA_AUTOBAUD_TIMEOUT_S;  // Intervalo em segundos para aguardar pacotes do medidor em cada baudrate testado pelo procedimento de autobaud.
00063     unsigned int RADIO_BAUDRATE_BPS;       // Baudrate da comunicacao com o radio via UART.
00064     union{
00065         float floatValue;
00066         char bytes[4];
00067     } LIMITE_CORRENTE_ZERO_A;
00068     union{
00069         float floatValue;
00070         char bytes[4];
00071     } LIMITE_CORRENTE_MINIMA_A;
00072     union{
00073         float floatValue;
00074         char bytes[4];
00075     } LIMITE_CORRENTE_MAXIMA_A;
00076     union{
00077         float floatValue;                     // Coeficiente angular das amostras de corrente do A/D
00078         char bytes[4];
00079     } SAMPLES_CURRENT_ANG_COEF;
00080     union{
00081         float floatValue;                     // Coeficiente linear das amostras de tensao do A/D
00082         char bytes[4];
00083     } SAMPLES_CURRENT_LIN_COEF;
00084     unsigned int ENABLE_LOAD_PROFILE;           // Habilita gravacao da memoria de massa
00085     unsigned int DISCOVERY_DELAY_ANG_COEF_MS;
00086     unsigned int DISCOVERY_DELAY_LIN_COEF_MS;
00087     unsigned int ANNOUNCE_INTERVAL_S;
00088     unsigned int DUMMY;
00089     
00090 } ParametersBlock;
00091 
00092 void validateAppParameters();
00093 bool isAlarmEnabled(int alarm);
00094 bool getAlarmState(int alarm);
00095 void setAlarmState(int alarm, bool state);
00096 
00097 extern ParametersBlock APP_PARAMETERS;
00098 extern Parameters param;
00099 
00100 #endif