EEE - Elevatórias de Efluente
1. Introdução
A automação e telemetria de estações elevatórias de efluente é essencial para garantir a eficiência operacional e permitir o monitoramento remoto em tempo real. Nesta aplicação, utilizamos o MHO Keeper, um controlador de borda que será utilizado para coleta de dados e controle, juntamente com o MHO Cloud, uma plataforma em nuvem para visualização dos dados e controle.
Este artigo é fornecido apenas para fins informativos e educacionais para utilização do MHO Keeper e MHO Cloud. A implementação de qualquer sistema elétrico ou automação deve ser realizada por profissionais qualificados. É de responsabilidade exclusiva do implementador garantir que todas as normas técnicas, regulamentos locais, legislações aplicáveis e diretrizes de segurança sejam rigorosamente seguidas. Demais circuitos como proteções, fusíveis, chaves, intertravamentos e outros devem ser implementados conforme a necessidade da aplicação e de acordo com leis e normas da aplicação específica.
Copyright © 2024, MHO. Todos os direitos reservados. É proibida a reprodução ou transmissão deste documento, seja em formato eletrônico ou impresso, para qualquer finalidade, sem autorização prévia por escrito da MHO. Este guia é disponibilizado apenas com fins informativos, e está sujeito a alterações sem aviso prévio. A MHO não assume responsabilidade e não há obrigação contratual decorrente, direta ou indiretamente, do mesmo e não são apresentadas com quaisquer outras garantias ou condições, expressas ou implícitas por lei. Isso abrange garantias implícitas de comercialização ou adequação a um propósito específico.
2. Arquitetura
Cada projeto tem suas particularidades, porém para este guia vamos considerar duas motobombas sendo revezadas em cada ciclo de nível de trabalho. O foco do artigo é na lógica de funcionamento, por isso não será discutido itens relacionados a parte de potência.
2.1. Dados de Interesse
Em uma estação elevatória de efluente, os principais dados de interesse incluem:
- Nível de Efluente: Monitoramento contínuo do nível de efluente para controlar o acionamento das bombas;
- Status das Bombas: Indicadores de operação das bombas para garantir que estão funcionando corretamente;
- Alarmes de Falhas: Alertas em caso de falha de bombas, níveis anormais de efluente ou outros eventos críticos;
De forma opcional, em alguns casos podemos ter também:
- Consumo de Energia: Monitoramento do consumo de energia e dados da rede elétrica;
- Vazão de saída: Monitoramento da vazão de saída da elevatória para análises.
Na maioria das situações é desejável:
- Comandos remotos de setpoints: Alterar o setpoint de nível de liga/desliga;
- Comandos remotos de liga/desliga ou habilitar/desabilitar lógica: Isso também pode ser feito, para esse guia não foi considerado essa opção.
2.2. Componentes do Sistema
Neste exemplo de aplicação, o sistema de automação básico é composto por:
- UA1: Fonte de alimentação 24 Vcc;
- UC1: Controlador de borda MHO Keeper 308A (para controle e telemetria);
- K1: Contator motobomba 1;
- K2: Contator motobomba 2;
- Q1: Disjuntor motor, motobomba 1;
- Q2: Disjuntor motor, motobomba 2;
- S1: Chave manual/automático motobomba 1;
- S2: Chave manual/automático motobomba 2;
- B1: Sensor de nível 4 a 20 mA;
- B2: Boia de alarme.
2.3. Ligações Elétricas
As ligações elétricas dependem de cada tipo de aplicação, neste guia consideramos o circuito básico funcional apenas referente aos sinais lidos pelo MHO Keeper. Adequações devem ser feitas para que a lógica de comando atenda os requisitos de local, manual, remoto, emergência, dentre outros.
- Status das motobombas: Status de ligado/desligado através da leitura de status de contatores e status de falha obtido do sinal do disjuntor motor (conectados nas DIs);
- Modo habilita: Chave de manual/automático (conectadas nas DIs);
- Nível de alarme: Boia ou relé de nível para detecção de nível de alarme (conectada na DI);
- Conexão dos Sensores de Nível: Sensor de nível (conectado na AI);
- Acionamento das motobombas: Motobombas conectadas através de contatores nas DOs do MHO Keeper para controle automático.
Demais circuitos como proteções, fusíveis, chaves, intertravamentos e outros devem ser implementados conforme a necessidade da aplicação e de acordo com leis e normas da aplicação específica. Neste exemplo tratamos apenas a um caso de funcionamento lógico.
3. MHO Keeper
3.1. Configuração IOs
No webserver do equipamento precisamos definir as IOs
utilizadas.
- Habilitar envio da
AI1
e definir intervalo de atualização para 120 segundos; - Para as
DIs
podemos habilitar o monitoramento de status para asDIs 1 a 7
; - Para a
DI1
eDI2
podemos habilitar a função horímetro, com isso temos o tempo ligado de cada motobomba.
3.2. Arquivos
Nesta aplicação, o MHO Keeper além de coletar os dados também atuará como um controlador de borda
, executando scripts
localmente para revezamento das motobombas a cada ciclo de trabalho, dessa forma temos em um único equipamento a função de um PLC
e de um Gateway/Modem
.
3.3.1. Modbus RTU
Para esse tipo de aplicação podemos ter medição de vazão, medição de energia ou integração com Soft-starters ou inversores de frequência via Modbus RTU.
Neste exemplo básico não utilizamos comunicação Modbus RTU.
3.3.2. Arquivo de Setpoints
Esses dados podem ser alterados remotamente.
{"niv_liga": 8.5, "niv_desliga": 2.5}
3.3.3. Scripts
Neste exemplo estamos utilizando a função incorporada para revezamento de duas cargas conectadas nas DOs. Mais informações sobre a função pode ser encontrado aqui.
Para o programa utilizamos uma lógica de revezamento incorporada no equipamento. A função revezaBombas
realiza a rotina de verificação de nível e controle das motobombas. A função sa_callback
recebe setpoints remotos de nível, caso a operação desejar alterar o nível de trabalho da EEE.
Temos as seguintes variáveis globais definidas:
- iodef: Objeto que guarda informação das IOs utilizadas, durante o programa essas referências são utilizadas nas funções. Isso é especialmente útil para caso seja necessário trocar a numeração das IOs;
- sensor: Objeto que guarda informação do sensor instalado, bem como a entrada analógica utilizada;
- memoriaRevezamento: Memória auxiliar global, utilizada para realizar a lógica de revezamento;
- sp: Objeto que guarda as informações de nível para ligar e nível para desligar. Esse objeto é salvo na memória flash, podendo ser alterado remotamente através da função sa_callback, quando um atributo é modificado na dashboard dentro do contexto MHO Cloud;
- trabalho: Variável que guarda a informação de nível de trabalho
true/false
.
//copyright MHO LTDA:
version(1);//20/08/2024
cloud.setAtt('rem_niv_liga,rem_niv_desliga'); //sincroniza na conexao
let iodef = {di_b1lig: 1, di_b2lig: 2, di_b1falha: 3, di_b2falha: 4, di_b1aut: 5, di_b2aut: 6, di_alarme: 7, do_b1: 1, do_b2: 2};
let sensor = {aidef:1, modo: 'i', min: 0, max: 10};
let memoriaRevezamento = 0; // memória global auxiliar
let sp = fjson.open(); //arquivo de setpoints salvo em /js/setpoints.json, com o conteudo {niv_liga: 8.5, niv_desliga: 2.5}
//funcao que recebe mensagens do MHO Cloud
let sa_callback = function(obj) {
//log("sa_callback => ", obj);
if(haskey(obj, 'rem_niv_liga')) sp.niv_liga = obj.rem_niv_liga;
if(haskey(obj, 'rem_niv_desliga')) sp.niv_desliga = obj.rem_niv_desliga;
fjson.create(sp, true); //sobrescreve arquivo de setpoints
};
let trabalho = false; //global pois precisa flutuar
let revezaBombas = function() {
if(io.do_lastchange(iodef.do_b1) < 30*1000 || io.do_lastchange(iodef.do_b2) < 30*1000) //caso uma das duas bombas tenha sido ligada ou desligada a menos de X segundos
{
log('variacao recente...');
return;
}
let alarme = io.readDI(iodef.di_alarme);
let nivelPoco = io.readAI(sensor.aidef, sensor.modo, sensor.min, sensor.max); //4-20mA, com escala real de 0 a 10
if(nivelPoco > sensor.max + 0.1 || nivelPoco < sensor.min - 0.1) //erro de leitura do sensor, desliga bombas
{
trabalho = false;
}
else if (nivelPoco < sp.niv_desliga)
{
trabalho = false;
}
else if (nivelPoco > sp.niv_liga)
{
trabalho = true;
}
else
{
log('nivel flutuando...');
//nivel flutuando...
}
let desabilita_b1 = !io.readDI(iodef.di_b1falha) || !io.readDI(iodef.di_b1aut); //se tiver em falha ou modo manual
let desabilita_b2 = !io.readDI(iodef.di_b2falha) || !io.readDI(iodef.di_b2aut); //se tiver em falha ou modo manual
memoriaRevezamento = sf.toggler_2loadDO(memoriaRevezamento, desabilita_b1, desabilita_b2, iodef.do_b1, iodef.do_b2, trabalho, alarme);
};
let loop = function() {
revezaBombas();
delay(1000);
};
4. Dashboard
Clique aqui para acessar a Dashboard de exemplo, com dados simulados.
A dashboard abaixo é interativa, não apenas uma imagem 😁
4.1. Visualização dos Dados
Os dados são obtidos em tempo real. O status da motobomba e chaves são obtidos na variação de borda do sinal da DI. O status de nível é coletado a cada 2 minutos. O status de horímetro é coletado a cada 15 minutos.
4.2. Setpoints Remotos
A funcionalidade de Setpoints Remotos permite que os operadores ajustem parâmetros de operação, como níveis de alarme e limites de acionamento das bombas, diretamente pelo MHO Cloud, sem necessidade de intervenção no local. Utilizamos o widget Update multiple attributes
, criamos os atributos rem_niv_liga
e rem_niv_desliga
no modo atributos compartilhados com o tipo de dado double
.