Especificação do módulo Elevador

 

A figura seguinte representa a interface de utilizador do módulo Elevador. Trata-se de uma versão simplificada da realidade, mas com funcionalidade em tudo idêntica à de um elevador verdadeiro.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


O lado direito representa o painel no interior da cabine do elevador, com:

O lado esquerdo representa um corte do prédio, vendo-se:

Neste corte do prédio não se indica nem o piso em que a cabine está nem a direcção do movimento da cabine do elevador porque estas indicações são iguais para todos os pisos e já são dadas na cabine do elevador.

Os botões de chamada em cada piso e de indicação do destino dentro da cabine têm as seguintes características:

O módulo Elevador possui uma série de sinais que dão informação sobre o estado do elevador e permitem controlar esse mesmo estado, de acordo com a figura seguinte.

 

Estes sinais são descritos brevemente em seguida, juntamente com a sua funcionalidade no sistema.

 

Sinais de saída do módulo Elevador:

 

Bits CallButtons

5

4

3

2

1

0

Subir

(piso 2)

Subir

(piso 1)

Subir

(piso 0)

Descer

(piso 3)

Descer

(piso 2)

Descer

(piso 1)

 

o       Botões do elevador (4 bits, 0 a 3). Permitem especificar o piso para que se quer ir. O bit 0 corresponde ao piso 0, o bit 3 ao piso 3;

o       Sensores dos pisos (4 bits, bits 4 a 7). O bit 4 corresponde ao piso 0, o bit 7 ao piso 3. Apenas um dos bits estará a 1, correspondente ao piso em que a cabine está. Quando a cabine está em movimento, entre pisos, todos os bits estão a zero. Quando a cabine passa por um piso, o bit correspondente vai a 1 durante algum tempo e depois volta a zero (excepto se a cabine parar nesse piso). O conceito de cabine em movimento é implementado por este módulo à custa de tempos de atraso após se dar ordem para o elevador subir ou descer. Embora tal seja fundamental para o teste funcional do sistema, dificulta os testes de desenvolvimento. Por este motivo, um clique do rato numa das portas dos vários pisos coloca directamente a cabine nesse piso, permitindo mover a cabine à mão. Só quando aparentemente o sistema já funcionar é que se deve dar ordens ao motor para funcionar, podendo então testar-se o funcionamento em tempo real do sistema.

 

Bits ButtonsSensors

7

6

5

4

3

2

1

0

Está no piso 3

Está no piso 2

Está no piso 1

Está no piso 0

Ir para o piso 3

Ir para o piso 2

Ir para o piso 1

Ir para o piso 0

 

 

Portos de entrada do módulo Elevador:

·        CabinLights - Lâmpadas dos botões do elevador (4 bits; 1=acesa, 0=apagada). Correspondem pela mesma ordem aos botões do elevador;

·        MotorSignals  - Motor (2 bits, bits 1 e 0). Estes bits indicam ao elevador o movimento pretendido para a cabine (00 e 11 – motor parado; 01 – motor a subir; 10 – motor a descer). O painel da cabine tem duas setas que indicam o sentido do motor quando este está em funcionamento. O módulo Elevador desliga o motor automaticamente se for dada ordem para o motor descer com a cabine no piso 0 ou ordem para subir com a cabine no piso 3 (protecção por hardware!). Neste caso, dá uma mensagem de erro ao utilizador;

·        LevelSignals  - Indicador do piso em que se está (2 bits, bits 1 e 0). O número afixado no canto superior direito da interface deste módulo reflecte o valor destes dois bits (0 a 3). O programa é suposto manter o valor anterior mesmo quando a cabine sai de um piso e mudá-lo apenas quando a cabine chega ao piso seguinte;

·        DoorSignal  - Porta da cabine (1 bit, bit 0). 0 fecha a porta, 1 abre-a. O programa deve ter cuidado em só mandar abrir a porta quando a cabine está parada num piso e fechá-la antes de pôr o motor em movimento. É dada uma mensagem de erro ao utilizador se a porta for mandada abrir com o motor em movimento ou com os 4 bits de sensores de piso estejam a 0 (cabine fora de piso). Ao chegar a um piso, a porta é suposta ser aberta durante algum tempo (para permitir às pessoas entrar e sair) e depois fechada, mesmo que não haja mais nenhuma chamada da cabine pendente. Para determinar o tempo de abertura pode ser usado o sinal de fim de tempo de porta aberta (RTClock) que o próprio módulo Elevador fornece (mas tem de ser o programa a detectar este sinal e mandar fechar a porta).