Programa-Exemplo em LCE de Controle de Enchimento de uma Caixa-D'água

Top 



No programa de controle abaixo, quando a chave geral (em I0.0) está ligada e o nível da água da caixa encontra-se abaixo de 300 litros, duas bombas são ligadas de modo alternado, ora uma, ora outra, até que a caixa fique com, no mínimo, 800 litros. O sensor de quantidade de água é ligado na variável de entrada analógica AIW0. A bomba nº 1 começa ligada, mas depois de um tempo, entrado na variável AIW1, ela é desligada, tomando o seu lugar a bomba nº 2, com tempo de ligação dado em AIW2, e assim por diante. Este controle usa as duas bombas disponíveis, sem deixar nenhuma ociosa, mas não liga as duas ao mesmo tempo, para fins de economia para evitar o "apagão".

(Obs.: os tempos padrão são excessivamente curtos apenas para fins de simulação. Para economia real, estes tempos teriam que ser redimensionados para valores bem maiores, na casa dos minutos ou horas, pois o próprio processo de ligação de um motor consome, em geral, grande quantidade de energia.)




clp
Caixa_D'água_2_Bombas // Controle demonstrativo da ligação de duas bombas que enchem uma caixa-d'água de maneira alternada, baseado no tempo de ligamento de cada uma das bombas.

// Após a compilação, verifique o funcionamento virtual acionando o menu: Plantas Virtuais -> Tanques de Líquidos Simulados -> Liga SimuPLC


var
   I0.0   Chave_Geral,
   
M0.0
   Escolhe_Bomba,

   
Q0.1
   Bomba1,
   
Q0.2
   Bomba2,

   
T0
   Tmp_Bomba1,
   
T1
   Tmp_Bomba2,

   
AIW0
Nível_Água,

   
AIW1
   TmpFuncBmb1,
   
AIW2
   TmpFuncBmb2;

rede
1 // Controla ligação das bombas baseado no acionamento da chave geral do sistema e no nível baixo da água

se
(imediato Chave_Geral e Nível_Água <= 300)
{
liga
imediato Escolhe_Bomba;
}

se
(Escolhe_Bomba e !Tmp_Bomba1 e não_ligado Bomba2)
{
liga
imed Bomba1;
desliga
Tmp_Bomba2;
}

se
(Escolhe_Bomba e não_atingiu Tmp_Bomba2 e não_ligado Bomba1)
{
liga
imed Bomba2;
desliga
Tmp_Bomba1;
}

rede
2 // Controla tempo de ligação das bombas

se
(TmpFuncBmb1 <= 0) { // Se tempo não fornecido ...
TmpFuncBmb1
:= 10; // ... recebe valor padrão para bomba 1, em segundos
}

se
(TmpFuncBmb2 <= 0) { // Se tempo não fornecido ...
TmpFuncBmb2
:= 15; // ... recebe valor padrão para bomba 2, em segundos
}

quando
(Bomba1) temporiza_acumula Tmp_Bomba1 TmpFuncBmb1 s;

quando
(Bomba2) temporiza_acumula Tmp_Bomba2 TmpFuncBmb2 s;

rede
3 // Verifica tempo das bombas, enchimento da caixa e desligamento do sistema

se
(Tmp_Bomba1)
{
desliga
Bomba1;
}

se
(Tmp_Bomba2)
{
desliga
Bomba2;
}

se
(não_ligado Chave_Geral ou Nível_Água > 800)
{
desliga
imed Escolhe_Bomba;
desliga
imed Bomba1;
desliga
imed Bomba2;
}

fim




Como resultado da compilação do programa
caixa_d'água acima, o SimuPLC 4.1.0 gerou, exatamente, o seguinte código, em Lista de Instruções - IL:



// CLP    Caixa_D'água_2_Bombas
// Controle demonstrativo da ligação de duas bombas que enchem uma caixa-d'água de maneira alternada, baseado no tempo de ligamento de cada uma das bombas.
// Após a compilação, verifique o funcionamento virtual acionando o menu: Plantas Virtuais -> Tanques de Líquidos Simulados -> Liga SimuPLC

//
=VAR   I0.0   Chave_Geral
//
=VAR   M0.0   Escolhe_Bomba
//
=VAR   Q0.1   Bomba1
//
=VAR   Q0.2   Bomba2
//
=VAR   T0   Tmp_Bomba1
//
=VAR   T1   Tmp_Bomba2
//
=VAR   AIW0   Nível_Água
//
=VAR   AIW1   TmpFuncBmb1
//
=VAR   AIW2   TmpFuncBmb2

NETWORK    1 // Controla ligação das bombas baseado no acionamento da chave geral do sistema e no nível baixo da água

LDI   I0.0
AD<=   AIW0,   300
SI    M0.0,   1

LD   M0.0
AN   T0
AN   Q0.2
SI    Q0.1,   1
R   T1,   1

LD   M0.0
AN   T1
AN   Q0.1
SI    Q0.2,   1
R   T0,   1

NETWORK    2 // Controla tempo de ligação das bombas

LDD<=   AIW1,   0
// Se tempo não fornecido ...
MOVD   10,   AIW1
// ... recebe valor padrão para bomba 1, em segundos

LDD<=   AIW2,   0
// Se tempo não fornecido ...
MOVD   15,   AIW2
// ... recebe valor padrão para bomba 2, em segundos

LD   Q0.1
*
D   1000,   AIW1
TONR   T0,   AIW1

LD   Q0.2
*
D   1000,   AIW2
TONR   T1,   AIW2

NETWORK    3 // Verifica tempo das bombas, enchimento da caixa e desligamento do sistema

LD   T0
R   Q0.1,   1

LD   T1
R   Q0.2,   1

LDN   I0.0
OD>   AIW0,   800
RI    M0.0,   1
RI    Q0.1,   1
RI    Q0.2,   1