Esboço do Controle Automático de um Elevador de 3 Pavimentos

Top 



No programa de controle abaixo, esboça-se o controle automático de um elevador em prédio de três pavimentos.


clp
Elevador_3_Pavimentos // Esboço de controle automático de um elevador em prédio com 2 andares e térreo. (Atenção: controles que envolvem diretamente a vida humana, como em elevadores, caldeiras, oleodutos, veículos, etc., podendo colocá-la em risco no caso de mau funcionamento, devem ser implementados no mundo real com especial rigor, além de ter que atender legislação específica, testes rigorosíssimos, aprovação por órgãos certificadores, etc. Normalmente são adquiridos em pacotes de software embutidos nos equipamentos controlados. O presente controle aqui esboçado tem caráter meramente de exemplificação e introdução ao estudo do interessante e complexo campo dos controles de elevadores e afins.)

var   I0.0   chama2ºAndar,
   
I0.1   chamaSobe1ºAndar,
   
I0.2   chamaDesce1ºAndar,
   
I0.3   chamaTérreo,

   
I0.4   portaAberta2ºAndar,
   
I0.5   portaAberta1ºAndar,
   
I0.6   portaAbertaTérreo,

   
I0.7   cabineFechada,
   
I1.0   cabineAberta,
   
T0   tempoMínAbertoTérreo,
   
T1   tempoMínAberto1ºAndar,
   
T2   tempoMínAberto2ºAndar,

   
I1.1   botãoCab2ºAndar,
   
I1.2   botãoCab1ºAndar,
   
I1.3   botãoCabTérreo,

   
I1.4   cabineEstá2ºAndar,
   
I1.5   cabineEstá1ºAndar,
   
I1.6   cabineEstáTérreo,

   
I1.7   Fotocélula,
   
I2.0   obstáculoPorta,

   
Q0.0   motorSobeCabine,
   
Q0.1   motorDesceCabine,

   
Q0.2   motorAbreCabine,
   
Q0.3   motorFechaCabine,

   
Q0.4   destravaPorta2ºAndar,
   
Q0.5   destravaPorta1ºAndar,
   
Q0.6   destravaPortaTérreo,
   
Q0.7   VentilaIlumina,

   
I2.1   botãoEmergência,
   
Q1.0   alarmeEmergência,

   
I2.2   ExcessoPeso,
   
Q1.1   alarmePeso,
   
   
Q1.2   cabineEstáSubindo,
   
Q1.3   cabineEstáDescendo,

   
M0.0   problemaFechaCabine;

rede 0 // Inicia o controle na seq. esperaTér (O sistema deve ser sempre iniciado com a cabine no térreo e com a sua porta aberta, por meio de acionamentos manuais dos motores após queda de energia elétrica ou manutenção).

se (imed botãoEmergência) {
aciona imed alarmeEmergência;
}

se (não imed Fotocélula ou imed ExcessoPeso ou imed obstáculoPorta ou imed botãoEmergência)
{

aciona problemaFechaCabine; // Indica algo errado que impede o fechamento da cabine
}

enquanto (imed ExcessoPeso)
{
se (não imed alarmePeso) // Aciona imediatamente o alarme enquanto perdurar o excesso de peso
{
aciona imed alarmePeso;
}
}

se (não VarAux)
{
aciona Início; // Gera um punho na variável Início quando do início da operação (1º ciclo)
ou (VarAux)
{
aciona VarAux;
}
}

se (Início)
{
liga esperandoTérreo; // Ativa a seqüência inicial quando do início da operação
}

//**************** Início seqüência esperandoTérreo ****************

rede 1 // Seq. esperandoTérreo: cabine parada no térreo aguardando chamadas/usuários

seqüência esperandoTérreo

rede 2 // Destrava porta do térreo para permitir entrada dos usuários.

se (não imed destravaPortaTérreo) {
liga imed destravaPortaTérreo;
reset tempoMínAbertoTérreo;
}

quando (destravaPortaTérreo) temporiza tempoMínAbertoTérreo 3 s;

se (imed portaAbertaTérreo ou não imed Fotocélula ou imed obstáculoPorta) { // A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta e, se entrou alguém, após a entrada do último usuário, ou, se obstruída, após ser desobstruída.
reset tempoMínAbertoTérreo;
}

fim_circuito_seqüência

rede 3 // Quando alguém entra e aciona botão para subir, ou algum usuário chama a cabine em andar superior, o PLC trava a porta do térreo e transfere para seq. fechandoTér, desde que a porta da cabine não seja aberta, o botão "Emergência" não tenha sido pressionado, não haja excesso de peso nem alguém na linha da porta da cabine, o que é indicado pela ausência de luz na fotocélula, e nem obstáculo impedindo seu fechamento. A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta após a entrada do último usuário.

se (imed botãoCab1ºAndar ou imed botãoCab2ºAndar ou imed chamaSobe1ºAndar ou imed chamaDesce1ºAndar ou imed chama2ºAndar)
{
liga imed cabineEstáSubindo;
liga imed VentilaIlumina;
}

se (cabineEstáSubindo e não imed portaAbertaTérreo e tempoMínAbertoTérreo e não problemaFechaCabine)
{
desliga imed destravaPortaTérreo; // Trava a porta de acesso à cabine
transfere_seqüência fechandoTérreo;
}

rede 4 // Fim da Seqüência esperandoTérreo

fim_seqüência;

//**************** Fim seqüência esperandoTérreo *******************

//**************** Início seqüência esperando1ºAndar ****************

rede 5 // Seq. esperando1ºAndar: cabine parada no 1º Andar aguardando chamadas/usuários

seqüência esperando1ºAndar

rede 6 // Destrava porta do 1º andar para permitir entrada dos usuários.

se (não imed destravaPorta1ºAndar) {
liga imed destravaPorta1ºAndar;
reset tempoMínAberto1ºAndar;
}

quando (destravaPorta1ºAndar) temporiza tempoMínAberto1ºAndar 3 s;

se (imed portaAberta1ºAndar ou não imed Fotocélula ou imed obstáculoPorta) {
reset tempoMínAberto1ºAndar;
}

fim_circuito_seqüência

rede 7 // Quando alguém entra e aciona botão para subir, ou algum usuário chama a cabine em andar superior, o PLC trava a porta do 1ºAndar e transfere para seq. fechando1ºAndar, desde que a porta da cabine não seja aberta, o botão "Emergência" não tenha sido pressionado, não haja excesso de peso nem alguém na linha da porta da cabine, o que é indicado pela ausência de luz na fotocélula, e nem obstáculo impedindo seu fechamento. A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta após a entrada do último usuário.

se
(não imed cabineEstáDescendo e (imed botãoCab2ºAndar ou imed chama2ºAndar))
{
liga imed cabineEstáSubindo;
liga imed VentilaIlumina;
}

se (não imed cabineEstáSubindo e (imed botãoCabTérreo ou imed chamaTérreo))
{
liga imed cabineEstáDescendo;
liga imed VentilaIlumina;
}

se
(não imed botãoCab2ºAndar e não imed chama2ºAndar e não imed botãoCabTérreo e não imed chamaTérreo)
{
desliga imed cabineEstáSubindo;
desliga imed cabineEstáDescendo;
desliga imed VentilaIlumina;
}

se ((cabineEstáSubindo ou cabineEstáDescendo) e não imed portaAberta1ºAndar e tempoMínAberto1ºAndar e não problemaFechaCabine)
{
desliga imed destravaPorta1ºAndar;
transfere_seqüência fechando1ºAndar;
}

rede 8 // Fim da Seqüência esperando1ºAndar

fim_seqüência;

//**************** Fim seqüência esperando1ºAndar ****************

//**************** Início seqüência esperando2ºAndar ****************

rede 9 // Seq. esperando2ºAndar: cabine parada no 2ºAndar aguardando chamadas/usuários

seqüência esperando2ºAndar

rede 10 // Destrava porta do 2º andar para permitir entrada dos usuários.

se (não imed destravaPorta2ºAndar) {
liga imed destravaPorta2ºAndar;
reset tempoMínAberto2ºAndar;
}

quando (destravaPorta2ºAndar) temporiza tempoMínAberto2ºAndar 3 s;

se (imed portaAberta2ºAndar ou não imed Fotocélula ou imed obstáculoPorta)
{
reset tempoMínAberto2ºAndar;
}

fim_circuito_seqüência

rede 11 // Quando alguém entra e aciona botão para descer, ou algum usuário chama a cabine em andar inferior, o PLC trava a porta do 2ºAndar e transfere para seq. fechando2ºAndar, desde que a porta da cabine não seja aberta, o botão "Emergência" não tenha sido pressionado, não haja excesso de peso nem alguém na linha da porta da cabine, o que é indicado pela ausência de luz na fotocélula, e nem obstáculo impedindo seu fechamento. A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta após a entrada do último usuário.

se (imed botãoCabTérreo ou imed botãoCab1ºAndar ou imed chamaSobe1ºAndar ou imed chamaDesce1ºAndar ou imed chamaTérreo)
{
liga imed cabineEstáDescendo;
liga imed VentilaIlumina;
}

se (cabineEstáDescendo e não imed portaAberta2ºAndar e tempoMínAberto2ºAndar e não problemaFechaCabine)
{
desliga imed destravaPorta2ºAndar;
transfere_seqüência fechando2ºAndar;
}

rede 12 // Fim da Seqüência esperando2ºAndar

fim_seqüência;

//**************** Fim seqüência esperando2ºAndar ****************

//**************** Início seqüência fechandoTérreo ****************

rede 13 // Seq. fechandoTérreo: cabine parada no térreo e fechando sua porta

seqüência fechandoTérreo

rede 14 // Fecha porta da cabine.

se (não imed motorFechaCabine) {
liga imed motorFechaCabine;
}

fim_circuito_seqüência

rede 15 // No momento do fechamento da cabine, se alguém abrir sua porta, interromper a luz na fotocélula, acionar o botão de emergência, ou segurar sua porta ou colocar algum obstáculo impedindo o seu fechamento, o controle, por medida de segurança, transfere para a seqüência de operação "abrindo térreo".

se (imed portaAbertaTérreo ou não imed Fotocélula ou imed botãoEmergência ou imed obstáculoPorta)
{
desliga imed motorFechaCabine;
transfere_seqüência abrindoTérreo;
}
senão
{
se (imed cabineFechada)
{
desliga imed motorFechaCabine;
transfere_seqüência subindoTérreo;
}
}

rede 16 // Fim da Seqüência fechandoTérreo

fim_seqüência;

//**************** Fim seqüência fechandoTérreo ****************

//**************** Início seqüência fechando1ºAndar ****************

rede 17 // Seq. fechando1ºAndar: cabine parada no 1ºAndar e fechando sua porta

seqüência fechando1ºAndar

rede 18 // Fecha porta da cabine.

se (não imed motorFechaCabine) {
liga imed motorFechaCabine;
}

fim_circuito_seqüência

rede 19 // No momento do fechamento da cabine, se alguém abrir sua porta, interromper a luz na fotocélula, acionar o botão de emergência, ou segurar sua porta ou colocar algum obstáculo impedindo o seu fechamento, o controle, por medida de segurança, transfere para a seqüência de operação "abrindo andar tal".

se (imed portaAberta1ºAndar ou não imed Fotocélula ou imed obstáculoPorta ou imed botãoEmergência)
{
desliga imed motorFechaCabine;
transfere_seqüência abrindo1ºAndar;
}
senão
{
se (imed cabineFechada)
{
desliga imed motorFechaCabine;

se (cabineEstáSubindo)
{
transfere_seqüência subindo1ºAndar;
}

se (cabineEstáDescendo)
{
transfere_seqüência descendo1ºAndar;
}
}
}

rede 20 // Fim da Seqüência fechando1ºAndar

fim_seqüência;

//**************** Fim seqüência fechando1ºAndar ****************

//**************** Início seqüência fechando2ºAndar ****************

rede 21 // Seq. fechando2ºAndar: cabine parada no 2ºAndar e fechando sua porta

seqüência fechando2ºAndar

rede 22 // Fecha porta da cabine.

se (não imed motorFechaCabine) {
liga imed motorFechaCabine;
}

fim_circuito_seqüência

rede 23 // No momento do fechamento da cabine, se alguém abrir sua porta, interromper a luz na fotocélula, acionar o botão de emergência, ou segurar sua porta ou colocar algum obstáculo impedindo o seu fechamento, o controle, por medida de segurança, transfere para a seqüência de operação "abrindo andar tal".

se (imed portaAberta2ºAndar ou não imed Fotocélula ou imed obstáculoPorta ou imed botãoEmergência)
{
desliga imed motorFechaCabine;
transfere_seqüência abrindo2ºAndar;
}
senão
{
se (imed cabineFechada)
{
desliga imed motorFechaCabine;
transfere_seqüência descendo2ºAndar;
}
}

rede 24 // Fim da Seqüência fechando2ºAndar

fim_seqüência;

//**************** Fim seqüência fechando2ºAndar ****************

//**************** Início seqüência abrindoTérreo****************

rede 25 // Seq. abrindoTérreo: cabine parada no térreo e abrindo sua porta

seqüência abrindoTérreo

rede 26 // Aciona abertura da porta da cabine.

se (não imed motorAbreCabine) {
liga imed motorAbreCabine;
}

fim_circuito_seqüência

rede 27 // Quando a cabine estiver aberta, fica esperando chamadas ou usuários.

se (imed cabineAberta) {
desliga imed motorAbreCabine;
desliga imed cabineEstáDescendo;
desliga imed VentilaIlumina;
transfere_seqüência esperandoTérreo;
}

rede 28 // Fim da Seqüência abrindoTérreo

fim_seqüência;

//**************** Fim seqüência abrindoTérreo****************

//**************** Início seqüência abrindo1ºAndar ****************

rede 29 // Seq. abrindo1ºAndar: cabine parada no 1ºAndar e abrindo sua porta

seqüência abrindo1ºAndar

rede 30 // Aciona abertura da porta da cabine.

se (não imed motorAbreCabine) {
liga imed motorAbreCabine;
}

fim_circuito_seqüência

rede 31 // Quando a cabine estiver aberta, fica esperando chamadas ou usuários.

se (imed cabineAberta)
{
desliga imed motorAbreCabine;
transfere_seqüência esperando1ºAndar;
}

rede 32 // Fim da Seqüência abrindo1ºAndar

fim_seqüência;

//**************** Fim seqüência abrindo1ºAndar ****************

//**************** Início seqüência abrindo2ºAndar ****************

rede 33 // Seq. abrindo2ºAndar: cabine parada no 2ºAndar e abrindo sua porta

seqüência abrindo2ºAndar

rede 34 // Aciona abertura da porta da cabine.

se (não imed motorAbreCabine)
{
liga imed motorAbreCabine;
}

fim_circuito_seqüência

rede 35 // Quando a cabine estiver aberta, fica esperando chamadas ou usuários.

se (imed cabineAberta)
{
desliga imed motorAbreCabine;
desliga imed cabineEstáSubindo;
desliga imed VentilaIlumina;
transfere_seqüência esperando2ºAndar;
}

rede 36 // Fim da Seqüência abrindo2ºAndar

fim_seqüência;

//**************** Fim seqüência abrindo2ºAndar ****************

//**************** Início seqüência subindoTérreo****************

rede 37 // Seq. subindoTérreo: cabine subindo do térreo para o 1º andar.

seqüência subindoTérreo

rede 38 // Liga motor para subida da cabine.

se (não imed motorSobeCabine) {
liga imed motorSobeCabine;
}

fim_circuito_seqüência

rede 39 // Quando a cabine chega ao 1º andar, verifica se deve parar ou continuar.

se (imed cabineEstá1ºAndar e não imed botãoCab2ºAndar e não imed chama2ºAndar)
{
desliga imed cabineEstáSubindo;
desliga imed VentilaIlumina;
}

se (imed cabineEstá1ºAndar e (imed botãoCab1ºAndar ou imed chamaSobe1ºAndar
ou (imed chamaDesce1ºAndar e não imed cabineEstáSubindo) )
ou imed botãoEmergência)
{
desliga imed motorSobeCabine;
transfere_seqüência abrindo1ºAndar;
}
senão
{
se (imed cabineEstá1ºAndar)
{
transfere_seqüência subindo1ºAndar;
}
}

rede 40 // Fim da Seqüência subindoTérreo

fim_seqüência;

//**************** Fim seqüência subindoTérreo ****************

//**************** Início seqüência subindo1ºAndar ****************

rede 41 // Seq. subindo1ºAndar: cabine subindo do 1º para o 2º andar.

seqüência subindo1ºAndar

rede 42 // Liga motor para subida da cabine.

se (não imed motorSobeCabine) {
liga imed motorSobeCabine;
}

fim_circuito_seqüência

rede 43 // Quando a cabine chega no 2º andar, desliga o motor.

se (imed cabineEstá2ºAndar)
{
desliga imed motorSobeCabine;
desliga imed cabineEstáSubindo;
desliga imed VentilaIlumina;
transfere_seqüência abrindo2ºAndar;
}

rede 44 // Fim da Seqüência subindo1ºAndar

fim_seqüência;

//**************** Fim seqüência subindo1ºAndar ****************

//**************** Início seqüência descendo1ºAndar ****************

rede 45 // Seq. descendo1ºAndar: cabine descendo do 1º andar para o Térreo.

seqüência descendo1ºAndar

rede 46 // Liga motor para descida da cabine.

se (não imed motorDesceCabine) {
liga imed motorDesceCabine;
}

fim_circuito_seqüência

rede 47 // Quando a cabine chega no Térreo, desliga o motor.

se (imed cabineEstáTérreo)
{
desliga imed motorDesceCabine;
desliga imed cabineEstáDescendo;
desliga imed VentilaIlumina;
transfere_seqüência abrindoTérreo;
}

rede 48 // Fim da Seqüência descendo1ºAndar

fim_seqüência;

//**************** Fim seqüência descendo1ºAndar ****************

//**************** Início seqüência descendo2ºAndar ****************

rede 49 // Seq. descendo2ºAndar: cabine descendo do 2º andar para o 1º andar.

seqüência descendo2ºAndar

rede 50 // Liga motor para descida da cabine.

se (não imed motorDesceCabine) {
liga imed motorDesceCabine;
}

fim_circuito_seqüência

rede 51 // Quando a cabine chega no 1º andar, verifica se deve parar ou continuar.

se (imed cabineEstá1ºAndar e não imed botãoCabTérreo e não imed chamaTérreo)
{
desliga imed cabineEstáDescendo;
desliga imed VentilaIlumina;
}

se (imed cabineEstá1ºAndar e (imed botãoCab1ºAndar ou imed chamaDesce1ºAndar
ou (imed chamaSobe1ºAndar e não imed cabineEstáDescendo) )
ou imed botãoEmergência)
{
desliga imed motorDesceCabine;
transfere_seqüência abrindo1ºAndar;
}
senão
{
se (imed cabineEstá1ºAndar)
{
transfere_seqüência descendo1ºAndar;
}
}

rede 52 // Fim da Seqüência descendo2ºAndar

fim_seqüência;

//**************** Fim seqüência descendo2ºAndar ****************

fim



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


// CLP    Elevador_3_Pavimentos
// Esboço de controle automático de um elevador em prédio com 2 andares e térreo. (Atenção: controles que envolvem diretamente a vida humana, como em elevadores, caldeiras, oleodutos, veículos, etc., podendo colocá-la em risco no caso de mau funcionamento, devem ser implementados no mundo real com especial rigor, além de ter que atender legislação específica, testes rigorosíssimos, aprovação por órgãos certificadores, etc. Normalmente são adquiridos em pacotes de software embutidos nos equipamentos controlados. O presente controle aqui esboçado tem caráter meramente de exemplificação e introdução ao estudo do interessante e complexo campo dos controles de elevadores e afins.)

//
=VAR   I0.0   chama2ºAndar
//
=VAR   I0.1   chamaSobe1ºAndar
//
=VAR   I0.2   chamaDesce1ºAndar
//
=VAR   I0.3   chamaTérreo
//
=VAR   I0.4   portaAberta2ºAndar
//
=VAR   I0.5   portaAberta1ºAndar
//
=VAR   I0.6   portaAbertaTérreo
//
=VAR   I0.7   cabineFechada
//
=VAR   I1.0   cabineAberta
//
=VAR   T0   tempoMínAbertoTérreo
//
=VAR   T1   tempoMínAberto1ºAndar
//
=VAR   T2   tempoMínAberto2ºAndar
//
=VAR   I1.1   botãoCab2ºAndar
//
=VAR   I1.2   botãoCab1ºAndar
//
=VAR   I1.3   botãoCabTérreo
//
=VAR   I1.4   cabineEstá2ºAndar
//
=VAR   I1.5   cabineEstá1ºAndar
//
=VAR   I1.6   cabineEstáTérreo
//
=VAR   I1.7   Fotocélula
//
=VAR   I2.0   obstáculoPorta
//
=VAR   Q0.0   motorSobeCabine
//
=VAR   Q0.1   motorDesceCabine
//
=VAR   Q0.2   motorAbreCabine
//
=VAR   Q0.3   motorFechaCabine
//
=VAR   Q0.4   destravaPorta2ºAndar
//
=VAR   Q0.5   destravaPorta1ºAndar
//
=VAR   Q0.6   destravaPortaTérreo
//
=VAR   Q0.7   VentilaIlumina
//
=VAR   I2.1   botãoEmergência
//
=VAR   Q1.0   alarmeEmergência
//
=VAR   I2.2   ExcessoPeso
//
=VAR   Q1.1   alarmePeso
//
=VAR   Q1.2   cabineEstáSubindo
//
=VAR   Q1.3   cabineEstáDescendo
//
=VAR   M0.0   problemaFechaCabine

NETWORK    0 // Inicia o controle na seq. esperaTér (O sistema deve ser sempre iniciado com a cabine no térreo e com a sua porta aberta, por meio de acionamentos manuais dos motores após queda de energia elétrica ou manutenção).

LDI   I2.1
=I    Q1.0

LDNI    I1.7
OI   I2.2
OI   I2.0
OI   I2.1
=   M0.0
// Indica algo errado que impede o fechamento da cabine

LBL   ENQ1

LDI   I2.2
NOT
JMP   ENQ2

LDNI    Q1.1
// Aciona imediatamente o alarme enquanto perdurar o excesso de peso
=I    Q1.1

LDN   V_0
JMP   ENQ1

LBL   ENQ2

LDN   VarAux
=   Início
// Gera um punho na variável Início quando do início da operação (1º ciclo)
O   VarAux
=   VarAux

LD   Início
S   esperandoTérreo,   1
// Ativa a seqüência inicial quando do início da operação
//**************** Início seqüência esperandoTérreo ****************

NETWORK    1 // Seq. esperandoTérreo: cabine parada no térreo aguardando chamadas/usuários

LSCR   esperandoTérreo

NETWORK    2 // Destrava porta do térreo para permitir entrada dos usuários.

LDNI    Q0.6
SI    Q0.6,   1
R   T0,   1

LD   Q0.6
TON   T0,   3000

LDI   I0.6
ONI    I1.7
OI   I2.0
// A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta e, se entrou alguém, após a entrada do último usuário, ou, se obstruída, após ser desobstruída.
R   T0,   1

NETWORK    3 // Quando alguém entra e aciona botão para subir, ou algum usuário chama a cabine em andar superior, o PLC trava a porta do térreo e transfere para seq. fechandoTér, desde que a porta da cabine não seja aberta, o botão "Emergência" não tenha sido pressionado, não haja excesso de peso nem alguém na linha da porta da cabine, o que é indicado pela ausência de luz na fotocélula, e nem obstáculo impedindo seu fechamento. A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta após a entrada do último usuário.

LDI   I1.2
OI   I1.1
OI   I0.1
OI   I0.2
OI   I0.0
SI    Q1.2,   1
SI    Q0.7,   1

LD   Q1.2
ANI    I0.6
A    T0
AN   M0.0
RI    Q0.6,   1
// Trava a porta de acesso à cabine

SCRT   fechandoTérreo

NETWORK    4 // Fim da Seqüência esperandoTérreo

SCRE
//**************** Fim seqüência esperandoTérreo *******************
//**************** Início seqüência esperando1ºAndar ****************

NETWORK    5 // Seq. esperando1ºAndar: cabine parada no 1º Andar aguardando chamadas/usuários

LSCR   esperando1ºAndar

NETWORK    6 // Destrava porta do 1º andar para permitir entrada dos usuários.

LDNI    Q0.5
SI    Q0.5,   1
R   T1,   1

LD   Q0.5
TON   T1,   3000

LDI   I0.5
ONI    I1.7
OI   I2.0
R   T1,   1

NETWORK    7 // Quando alguém entra e aciona botão para subir, ou algum usuário chama a cabine em andar superior, o PLC trava a porta do 1ºAndar e transfere para seq. fechando1ºAndar, desde que a porta da cabine não seja aberta, o botão "Emergência" não tenha sido pressionado, não haja excesso de peso nem alguém na linha da porta da cabine, o que é indicado pela ausência de luz na fotocélula, e nem obstáculo impedindo seu fechamento. A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta após a entrada do último usuário.

LDNI    Q1.3

LDI   I1.1
OI   I0.0
ALD
SI    Q1.2,   1
SI    Q0.7,   1

LDNI    Q1.2

LDI   I1.3
OI   I0.3
ALD
SI    Q1.3,   1
SI    Q0.7,   1

LDNI    I1.1
ANI    I0.0
ANI    I1.3
ANI    I0.3
RI    Q1.2,   1
RI    Q1.3,   1
RI    Q0.7,   1

LD   Q1.2
O    Q1.3
ANI    I0.5
A    T1
AN   M0.0
RI    Q0.5,   1

SCRT   fechando1ºAndar

NETWORK    8 // Fim da Seqüência esperando1ºAndar

SCRE
//**************** Fim seqüência esperando1ºAndar ****************
//**************** Início seqüência esperando2ºAndar ****************

NETWORK    9 // Seq. esperando2ºAndar: cabine parada no 2ºAndar aguardando chamadas/usuários

LSCR   esperando2ºAndar

NETWORK    10 // Destrava porta do 2º andar para permitir entrada dos usuários.

LDNI    Q0.4
SI    Q0.4,   1
R   T2,   1

LD   Q0.4
TON   T2,   3000

LDI   I0.4
ONI    I1.7
OI   I2.0
R   T2,   1

NETWORK    11 // Quando alguém entra e aciona botão para descer, ou algum usuário chama a cabine em andar inferior, o PLC trava a porta do 2ºAndar e transfere para seq. fechando2ºAndar, desde que a porta da cabine não seja aberta, o botão "Emergência" não tenha sido pressionado, não haja excesso de peso nem alguém na linha da porta da cabine, o que é indicado pela ausência de luz na fotocélula, e nem obstáculo impedindo seu fechamento. A cabine só é fechada após permanecer um tempo mínimo com sua porta aberta após a entrada do último usuário.

LDI   I1.3
OI   I1.2
OI   I0.1
OI   I0.2
OI   I0.3
SI    Q1.3,   1
SI    Q0.7,   1

LD   Q1.3
ANI    I0.4
A    T2
AN   M0.0
RI    Q0.4,   1

SCRT   fechando2ºAndar

NETWORK    12 // Fim da Seqüência esperando2ºAndar

SCRE
//**************** Fim seqüência esperando2ºAndar ****************
//**************** Início seqüência fechandoTérreo ****************

NETWORK    13 // Seq. fechandoTérreo: cabine parada no térreo e fechando sua porta

LSCR   fechandoTérreo

NETWORK    14 // Fecha porta da cabine.

LDNI    Q0.3
SI    Q0.3,   1

NETWORK    15 // No momento do fechamento da cabine, se alguém abrir sua porta, interromper a luz na fotocélula, acionar o botão de emergência, ou segurar sua porta ou colocar algum obstáculo impedindo o seu fechamento, o controle, por medida de segurança, transfere para a seqüência de operação "abrindo térreo".

LDI   I0.6
ONI    I1.7
OI   I2.1
OI   I2.0
RI    Q0.3,   1

SCRT   abrindoTérreo

LDI   I0.6
ONI    I1.7
OI   I2.1
OI   I2.0
NOT

LDI   I0.7
ALD
RI    Q0.3,   1

SCRT   subindoTérreo

NETWORK    16 // Fim da Seqüência fechandoTérreo

SCRE
//**************** Fim seqüência fechandoTérreo ****************
//**************** Início seqüência fechando1ºAndar ****************

NETWORK    17 // Seq. fechando1ºAndar: cabine parada no 1ºAndar e fechando sua porta

LSCR   fechando1ºAndar

NETWORK    18 // Fecha porta da cabine.

LDNI    Q0.3
SI    Q0.3,   1

NETWORK    19 // No momento do fechamento da cabine, se alguém abrir sua porta, interromper a luz na fotocélula, acionar o botão de emergência, ou segurar sua porta ou colocar algum obstáculo impedindo o seu fechamento, o controle, por medida de segurança, transfere para a seqüência de operação "abrindo andar tal".

LDI   I0.5
ONI    I1.7
OI   I2.0
OI   I2.1
RI    Q0.3,   1

SCRT   abrindo1ºAndar
NOT

LDI   I0.7
ALD
RI    Q0.3,   1
LPS

LD   Q1.2
ALD

SCRT   subindo1ºAndar
LPP

LD   Q1.3
ALD

SCRT   descendo1ºAndar

NETWORK    20 // Fim da Seqüência fechando1ºAndar

SCRE
//**************** Fim seqüência fechando1ºAndar ****************
//**************** Início seqüência fechando2ºAndar ****************

NETWORK    21 // Seq. fechando2ºAndar: cabine parada no 2ºAndar e fechando sua porta

LSCR   fechando2ºAndar

NETWORK    22 // Fecha porta da cabine.

LDNI    Q0.3
SI    Q0.3,   1

NETWORK    23 // No momento do fechamento da cabine, se alguém abrir sua porta, interromper a luz na fotocélula, acionar o botão de emergência, ou segurar sua porta ou colocar algum obstáculo impedindo o seu fechamento, o controle, por medida de segurança, transfere para a seqüência de operação "abrindo andar tal".

LDI   I0.4
ONI    I1.7
OI   I2.0
OI   I2.1
RI    Q0.3,   1

SCRT   abrindo2ºAndar

LDI   I0.4
ONI    I1.7
OI   I2.0
OI   I2.1
NOT

LDI   I0.7
ALD
RI    Q0.3,   1

SCRT   descendo2ºAndar

NETWORK    24 // Fim da Seqüência fechando2ºAndar

SCRE
//**************** Fim seqüência fechando2ºAndar ****************
//**************** Início seqüência abrindoTérreo****************

NETWORK    25 // Seq. abrindoTérreo: cabine parada no térreo e abrindo sua porta

LSCR   abrindoTérreo

NETWORK    26 // Aciona abertura da porta da cabine.

LDNI    Q0.2
SI    Q0.2,   1

NETWORK    27 // Quando a cabine estiver aberta, fica esperando chamadas ou usuários.

LDI   I1.0
RI    Q0.2,   1
RI    Q1.3,   1
RI    Q0.7,   1

SCRT   esperandoTérreo

NETWORK    28 // Fim da Seqüência abrindoTérreo

SCRE
//**************** Fim seqüência abrindoTérreo****************
//**************** Início seqüência abrindo1ºAndar ****************

NETWORK    29 // Seq. abrindo1ºAndar: cabine parada no 1ºAndar e abrindo sua porta

LSCR   abrindo1ºAndar

NETWORK    30 // Aciona abertura da porta da cabine.

LDNI    Q0.2
SI    Q0.2,   1

NETWORK    31 // Quando a cabine estiver aberta, fica esperando chamadas ou usuários.

LDI   I1.0
RI    Q0.2,   1

SCRT   esperando1ºAndar

NETWORK    32 // Fim da Seqüência abrindo1ºAndar

SCRE
//**************** Fim seqüência abrindo1ºAndar ****************
//**************** Início seqüência abrindo2ºAndar ****************

NETWORK    33 // Seq. abrindo2ºAndar: cabine parada no 2ºAndar e abrindo sua porta

LSCR   abrindo2ºAndar

NETWORK    34 // Aciona abertura da porta da cabine.

LDNI    Q0.2
SI    Q0.2,   1

NETWORK    35 // Quando a cabine estiver aberta, fica esperando chamadas ou usuários.

LDI   I1.0
RI    Q0.2,   1
RI    Q1.2,   1
RI    Q0.7,   1

SCRT   esperando2ºAndar

NETWORK    36 // Fim da Seqüência abrindo2ºAndar

SCRE
//**************** Fim seqüência abrindo2ºAndar ****************
//**************** Início seqüência subindoTérreo****************

NETWORK    37 // Seq. subindoTérreo: cabine subindo do térreo para o 1º andar.

LSCR   subindoTérreo

NETWORK    38 // Liga motor para subida da cabine.

LDNI    Q0.0
SI    Q0.0,   1

NETWORK    39 // Quando a cabine chega ao 1º andar, verifica se deve parar ou continuar.

LDI   I1.5
ANI    I1.1
ANI    I0.0
RI    Q1.2,   1
RI    Q0.7,   1

LDI   I1.5

LDI   I1.2
OI   I0.1

LDI   I0.2
ANI    Q1.2
OLD
ALD
OI   I2.1
RI    Q0.0,   1

SCRT   abrindo1ºAndar
NOT

LDI   I1.5
ALD

SCRT   subindo1ºAndar

NETWORK    40 // Fim da Seqüência subindoTérreo

SCRE
//**************** Fim seqüência subindoTérreo ****************
//**************** Início seqüência subindo1ºAndar ****************

NETWORK    41 // Seq. subindo1ºAndar: cabine subindo do 1º para o 2º andar.

LSCR   subindo1ºAndar

NETWORK    42 // Liga motor para subida da cabine.

LDNI    Q0.0
SI    Q0.0,   1

NETWORK    43 // Quando a cabine chega no 2º andar, desliga o motor.

LDI   I1.4
RI    Q0.0,   1
RI    Q1.2,   1
RI    Q0.7,   1

SCRT   abrindo2ºAndar

NETWORK    44 // Fim da Seqüência subindo1ºAndar

SCRE
//**************** Fim seqüência subindo1ºAndar ****************
//**************** Início seqüência descendo1ºAndar ****************

NETWORK    45 // Seq. descendo1ºAndar: cabine descendo do 1º andar para o Térreo.

LSCR   descendo1ºAndar

NETWORK    46 // Liga motor para descida da cabine.

LDNI    Q0.1
SI    Q0.1,   1

NETWORK    47 // Quando a cabine chega no Térreo, desliga o motor.

LDI   I1.6
RI    Q0.1,   1
RI    Q1.3,   1
RI    Q0.7,   1

SCRT   abrindoTérreo

NETWORK    48 // Fim da Seqüência descendo1ºAndar

SCRE
//**************** Fim seqüência descendo1ºAndar ****************
//**************** Início seqüência descendo2ºAndar ****************

NETWORK    49 // Seq. descendo2ºAndar: cabine descendo do 2º andar para o 1º andar.

LSCR   descendo2ºAndar

NETWORK    50 // Liga motor para descida da cabine.

LDNI    Q0.1
SI    Q0.1,   1

NETWORK    51 // Quando a cabine chega no 1º andar, verifica se deve parar ou continuar.

LDI   I1.5
ANI    I1.3
ANI    I0.3
RI    Q1.3,   1
RI    Q0.7,   1

LDI   I1.5

LDI   I1.2
OI   I0.2

LDI   I0.1
ANI    Q1.3
OLD
ALD
OI   I2.1
RI    Q0.1,   1

SCRT   abrindo1ºAndar
NOT

LDI   I1.5
ALD

SCRT   descendo1ºAndar

NETWORK    52 // Fim da Seqüência descendo2ºAndar

SCRE
//**************** Fim seqüência descendo2ºAndar ****************