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.)
clpCaixa_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
varI0.0Chave_Geral,
M0.0Escolhe_Bomba,
Q0.1Bomba1,
Q0.2Bomba2,
T0Tmp_Bomba1,
T1Tmp_Bomba2,
AIW0Nível_Água,
AIW1TmpFuncBmb1,
AIW2TmpFuncBmb2;
rede 1 // Controla ligação das bombas baseado no acionamento da chave geral do sistema e no nível baixo da água
se (imediatoChave_GeraleNível_Água<= 300)
{
ligaimediatoEscolhe_Bomba;
}
se (Escolhe_Bombae !Tmp_Bomba1enão_ligadoBomba2)
{
ligaimedBomba1;
desligaTmp_Bomba2;
}
se (Escolhe_Bombaenão_atingiuTmp_Bomba2enão_ligadoBomba1)
{
ligaimedBomba2;
desligaTmp_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_acumulaTmp_Bomba1TmpFuncBmb1s;
quando (Bomba2) temporiza_acumulaTmp_Bomba2TmpFuncBmb2s;
rede 3 // Verifica tempo das bombas, enchimento da caixa e desligamento do sistema
se (Tmp_Bomba1)
{
desligaBomba1;
}
se (Tmp_Bomba2)
{
desligaBomba2;
}
se (não_ligadoChave_GeralouNível_Água> 800)
{
desligaimedEscolhe_Bomba;
desligaimedBomba1;
desligaimedBomba2;
}
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