Revezamento de Cargas
Utilizada para realizar revezamento de cargas redundantes. A cada ciclo de trabalho uma carga é acionada enquanto a(s) outra(s) descansa(m). Em caso de um ciclo de alarme, as N cargas trabalham de forma redundante (opcional).
1.1 Revezamento por DOs
Realiza o acionamento de DOs de forma alternada.
- Utiliza variável de trabalho para realizar o revezamento das cargas;
- Pode utilizar uma variável de alarme (opcional) para setar todas as cargas;
- Pode utilizar variáveis de habilita/desabilita carga (útil para quando alguma carga entra em falha);
- Necessita inicializar memória global para salvar o estado do último ciclo;
1.1.1 Duas DOs (sf.toggler_2loadDO)
Realiza o acionamento de duas DOs de forma alternada.
let memoriaRevezamento = 0; //variável global
memoriaRevezamento = sf.toggler_2loadDO(memoriaRevezamento, habilita1, habilita2, carga1, carga2, trabalho, alarme = false);
Resposta: memória de revezamento atual
Variáveis
memoriaRevezamento
: memória auxiliar que guarda a última carga acionada;habilita1
: variável booleana que indica se a carga1 esta apta ao revezamento (false: apto, true: inapto);habilita2
: variável booleana que indica se a carga2 esta apta ao revezamento (false: apto, true: inapto);carga1
: número da DO que a carga1 está conectada;carga2
: número da DO que a carga2 está conectada;trabalho
: variável booleana de controle do revezamento (false: desliga cargas, true: carga em trabalho);alarme
: variável booleana de alarme (opcional) (false: sem alarme, true: ligar todas as cargas em trabalho);
Exemplos
Exemplo 1 - Controle Local
No exemplo abaixo temos duas cargas trabalhando de forma redundante. Em caso de nível de alarme ambas as cargas entram em funcionamento e só param quando sair do nível de trabalho. Em caso de falha em uma das cargas, a outra assume e o revezamento é cessado enquanto a falha permanecer ativa.
- habilita1: Obtido através da leitura de estado da DI3;
- habilita2: Obtido através da leitura de estado da DI4;
- carga1: DO1;
- carga2: DO2;
- trabalho: Obtido através da leitura de estado da DI1;
- alarme: Obtido através da leitura de estado da DI2;
Neste exemplo temos que as condições de trabalho e alarme estão sendo definidas via leitura de entradas digitais. Essas leituras podem representar um status vindo de uma boia, relé de nível ou controlador externo por exemplo. Também temos que as variáveis de habilita estão sendo obtidas via leitura de entradas digitais, que neste caso poderia ser a leitura de estado de um disjuntor motor ou relé de sobrecarga.
let memoriaRevezamento = 0; // memória global auxiliar
let revezaBombas = function() {
let trabalho = io.readDI(1);
let alarme = io.readDI(2);
memoriaRevezamento = sf.toggler_2loadDO(memoriaRevezamento, io.readDI(3),io.readDI(4),1,2, trabalho, alarme);
};
let main = function() { //função main
if(!cloud.remotecontrol())
{
revezaBombas();
}
};
// Timer chama a função main a cada 1000ms
let timer_main = timer.create(1000, 'main');
// Limpa objetos quando o JS for destruido
let cleanup = function() {
log('Cleaning up C state...');
timer.delete(timer_main);
};