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).