Você está na página 1de 11

Mestrado Integrado em

Engenharia Electrotcnica e de Computadores

Automao
Ramos de Automao e Energia

Guio de trabalho prtico:

Projecto de sistema de controlo de


parque de estacionamento
baseado no software
FEUPAutom

Jos Antnio Faria jfaria@fe.up.pt


Armando Jorge Sousa asousa@fe.up.pt
Apresentao

Depois de, nas aulas anteriores, ter realizado o projecto do sistema de controlo de um parque
de estacionamento com base em lgica discreta, vai agora projectar dois sistemas de controlo
idnticos recorrendo ao software FEUPAutom que implementa um controlador baseado em
PC, programvel com a linguagem Structured Text (ST).

Este trabalho prtico (TP) durar duas aulas.

Apenas no final da segunda aula que as funcionalidades implementadas sero conferidas e o


desempenho do grupo ao longo das duas aulas ser avaliado.

O software ser-lhe- apresentado nas aulas tericas e estar disponvel para download nos
contedos da disciplina, pelo que poder instal-lo no seu computador ou trabalhar no
laboratrio.

O software contm dois elementos principais:


- o Editor FEUPAutom atravs do qual desenvolve o seu programa de controlo em
linguagem ST
- o Simulador 3D Park onde simulado o funcionamento do sistema a controlar (neste caso
o parque de estacionamento)

A preparao deste TP consiste nos seguintes pontos:


leitura prvia de todo o guio
familiarizao com a linguagem de programao ST
executar os programas de teste

Cada grupo deve enviar, no final da segunda aula, por EMail, ao respectivo professor das
aulas prticas as impresses para PDF geradas pelo FEUPAutom do cdigo produzido para
cada um dos trabalhos do parque (partes 2 e 3). O EMail a enviar deve ter o ttulo [Auto] TP2
Turma xxx Grupo yyy e deve ter anexo os 2 PDFs; o texto do email deve conter a turma, o
grupo e o nome dos autores do trabalho (substituir xxx pela turma e yyy pelo n grupo).

Automao 2007/8 2 / 11
Parte 1: Familiarizao com o FEUPAutom

Arranque o editor do FEUPAutom.


Confira que a tecla F1 arranca o Help do FEUPAutom.

Este documento contm informao de interesse e deve ser consultado sempre que surgirem
perguntas ao funcionamento do FEUPAutom.

Todos os programas do FEUPAutom funcionam em ciclo, ciclo esse que no representado


explicitamente no cdigo do utilizador (consulte o help para mais detalhes).

A linguagem de programao utilizada o ST, parte da norma 61131 de programao de


dispositivos automticos e descende do pascal.

Relativamente programao no FEUPAutom em linguagem ST:


Atribuies com :=
Comparaes =
No distingue maisculas e minsculas
Os blocos de IF tm THEN e END_IF obrigatoriamente e ELSE opcionalmente
Nas expresses booleanas obrigatrio por (parntesis) entre todas as expresses
elementares. Especial cuidado com IFs e NOTs, p. ex.: IF ((X=Y) AND ((NOT
Z)=W)) THEN

Escreva cdigo legvel:


Utilize uma instruo por linha
Inicie o cdigo na margem esquerda
Utilize indentao correcta: aps cada IF (ou outra instruo de bloco), chegue o
cdigo 2 espaos para a direita, aps cada ENF_IF, reponha o cdigo 2 espaos antes
(ver exemplo).
Utilize nomes descritivos adequados para cada varivel exemplo: SensorEntrada
Utilize comentrios adequados. Apesar da norma ST mencionar apenas (* comentrios
*), o FEUPAutom permite ainda // comentrios.

Relativamente ao editor:
No possvel alterar cdigo durante a sua execuo
Utilize ctrl space para chamar o menu de completion este menu lista variveis e
keywords frequentes da linguagem (no todas!)
Tenha em ateno a colorizao do cdigo medida que o vai introduzindo

Automao 2007/8 3 / 11
Programas de Teste

Programa de Teste 1 Varivel Inteira na memria - Word

Introduza o seguinte programa:

mw0 := mw0 + 1;
println (mw0);

Este programa incrementa um varivel de memria do tipo WORD (um inteiro) a cada ciclo
executado. A varivel chama-se mw0. A atribuio feita com o operador := .
Escolha menu Program -> Run Once ou prima F8 para perceber o funcionamento do
FEUPAutom. O valor de mw0 impresso a cada ciclo executado.
Examine a varivel mw0 passando o cursor do rato por cima: o valor apresentado na barra
de estado.
Escolha menu Program -> Run ou prima F9. No modo Run no so impressos valores mas
possvel ver o valor das variveis movimentando continuamente o rato por cima da varivel.

Programa de Teste 2 Varivel Booleana na memria

Introduza o seguinte programa:

m0 := not m0;
println (m0);

A varivel m0 uma varivel auxiliar de memria do tipo bit, que armazena um valor
booleano, True (1) ou False (0).
Prima repetidamente F8 para observar o funcionamento do programa e inspeccione o valor de
m0.

Programa de Teste 3 - Sadas

Introduza o seguinte programa:

q0 := not q0;

Q0 representa a primeira sada do sistema, isto , o programa pode comandar esta varivel e
esta varivel est associada a um actuador, isto , por exemplo, seria possvel associar uma luz
varivel Q0 e quando Q0 estivesse activo, a luz estaria acesa.

O cdigo deste programa comuta continuamente True -> False -> True, etc a varivel Q0.

Abra a janela IO Leds (menu window -> IO Leds ou prima F6).


Prima Run F9 e logo de seguida Stop F10.
Abra a janela de log (menu windo -> Log -> Trace ou prima F7).
Assinale com um visto a opo Q0 para ver o traado temporal desta varivel.
Deve observar aproximadamente uma onda quadrada.

Automao 2007/8 4 / 11
Programa de Teste 3 Entradas e foragens

Introduza o seguinte programa:

q0 := i0;

A entrada I0 uma varivel associada a um sensor externo, por exemplo, seria possvel a
varivel I0 estar associada a um boto e nessa altura sempre que o boto estivesse premido, a
varivel teria o valor true. No possvel o programa atribuir valores a variveis de entrada.

Para testar o programa, prima Run F9.


Na janela de IO Leds seleccione forar a primeira entrada que se chama I0.
Isto dizer ao programa para ligar I0 fazendo batota - atravs desta noo de forar
consegue-se por I0 a ser comandada pelo utilizador.

Force I0 a true (ou 1) e ver o led acender (figura ao lado).

Se o programa estiver a ser executado correctamente, o led Q0 acompanhar o I0.

Faa experincias.

Programa de teste 4 Operadores de flanco

Introduza o seguinte programa:

q0 := (RE i0) xor q0;

A funo especial RE (Rising Edge) fica activa apenas se no ciclo anterior do autmato a
varivel em causa estava a False (0) e no presente ciclo est a True (1).

Execute com Run F9, e teste o funcionamento: a cada flanco ascendente (de 0 para 1) da
varivel I0, a varivel Q0 trocada. A funo booleana XOR utilizada para obter a
funcionalidade de comutao.

Operadores Booleanos: NOT, AND, OR, XOR


Operadores de Flanco: RE (rising edge) e FE (falling edge)

Automao 2007/8 5 / 11
Programa de teste 5 Temporizadores

Utilize o menu Project -> open para abrir, dentro do directrio help, o ficheiro com o nome
TimerSimple2.faproj, que listado de seguida para facilidade de consulta:

(**************************************************************)
(* TimerSimple2.faproj - Exemplo de Timers *)
(* Modo TOn: Liga aps xxx.P dcimos de segundo *)
(* Modo TOff: Liga logo e desliga aps xxx.P dcimos de seg *)
(* Pisca Q0 1 seg on e 1 seg off *)
(**************************************************************)

// Obs: a word de sistema 0 (SW0) conta o nmero de ciclos executados


// e pode ser utilizada para inicializaes

// IMPORTANTE: para repor sw0:=0, premir CTRL+SHIFT+R

if sw0 = 0 then // inicializaes

t0.mode := TOn; // modo de atraso activao


t0.P := 10; // tempo de activao em dcimos de segundo
start t0; // inicio da contagem do tempo

t1.mode := TOff; // modo de atraso desactivao


t1.P := 5;
start t1;

end_if;

if t0.q then
start t0;
start t1;
q0 := not q0;
end_if;

xxx.Q o bit associado ao temporizador xxx; para um temporizador no modo TOn, este bit
fica True passado xxx.P dcimas de segundo; para o modo TOff, este bit fica False passado
passado xxx.P dcimas de segundo.
Estude o cdigo e as formas de onda acima apresentadas. Tente seguir o funcionamento do
programa para se aperceber do funcionamento dos temporizadores do FEUP Autom.
Obs: Os temporizadores do FEUPAutom nunca param e o comando START marca o instante
do incio da contagem de tempo

Automao 2007/8 6 / 11
Programas Livres

Os seguintes programas livres so opcionais e destinam-se apenas a dar prtica de


programao sob FEUPAutom e consolidar conceitos.

Programa Livre 1

Crie um programa que apenas liga a sada Q0 quando I0 e I1 estiverem ambas ligadas.

Programa Livre 2

Acrescente ao enunciado anterior a funcionalidade de ligar a sada Q1 quando pelo menos


uma das sadas I2 e I3 ou I4 estiverem activas.

Programa Livre 3

Crie um programa que a cada flanco descendente da varivel i0, activa para a sada seguinte:
q0, q1, q2, q0,

Programa Livre 4

Crie um programa que ligue Q0 quando I0 estiver activo um tempo superior a 1 segundo.

Programa Livre 5

Crie um programa que ligue Q0 quando I0 estiver activo mas Q0 s pode ficar activo durante
um tempo mximo de 1 segundo.

Automao 2007/8 7 / 11
O Simulador 3D Park

Operaes sobre o simulador de parque:


Prima do lado direita da cancela ou premir o boto Car Arrive para fazer entrar um
carro
Prima do lado esquerdo da cancela ou premir o boto Car Exit para fazer entrar um
carro
Se forem enviados comando incoerentes, possvel estragar a barreira. Esta situao
de avaria representada atravs de chamas na caixa da barreira para a simulao
voltar a funcionar, necessrio premir Fix Barrier

Obs: Estas opes esto tambm disponveis no menu de contexto do rato premir o boto do
lado direito do rato sobre a imagem

O simulador pode funcionar no modo em que barreira instantnea ou no modo em que o


motor vai abrindo / fechando a barreira.
As ligaes dos sensores e actuadores esto listadas nas especificaes de cada uma dos
trabalhos. Os sensores da simulao tal como as clulas de entrada sero entradas no
FEUPAutom e os actuadores tal como o motor da barreira so sadas do FEUPAutom.

Automao 2007/8 8 / 11
Parte 2: Trabalho do Parque Especificao base

Considere um parque de estacionamento idntico ao considerado no trabalho anterior mas,


agora, no posto de entrada do parque existem duas clulas fotoelctricos, uma localizada antes
da cancela e a outro depois, conforme representado na figura seguinte.

Quando um novo carro chega entrada do parque, e no caso de haver lugares disponveis:
o a cancela abre para o carro entrar.
o a cancela fecha depois do carro deixar de ser detectado pela clula 2 (e no aps um
tempo fixo como, simplificadamente, se admitia no trabalho anterior).

Desenvolva o programa de controlo do parque nesta nova situao considerando a seguinte


lista de atribuies:

Entradas
celula1 I1
celula2 I2
celulaSaida I3 Clula2
Sadas
abrirCancela Q1
fecharCancela Q2
semaforoVerde Q3
semaforoVermelho Q4 Clula1

Utilize o FEUPAutom com o Target Simple Park, na verso Instant Barrrier

Utilize a janela Window -> Variables do FEUPAutom para definir o nome das
variveis e seus mapeamentos de acordo com a tabela acima mostrada.

Automao 2007/8 9 / 11
Parte 3: Trabalho do parque Especificao completa
Relativamente situao anterior considere agora as seguintes especificaes adicionais:

Existem dois novos fim-de-curso designados por cancelaAberta e cancelaFechada que esto
activos quando a cancela est completamente aberta ou fechada, respectivamente.

Assim, a ordem de abertura da cancela deve passar a estar activa apenas enquanto o fim-de-
curso cancelaAberta no estiver activo (caso contrrio, o motor foraria a cancela para alm
da sua posio limite)

Para o fecho da cancela deve considerar uma especificao semelhante, isto , a ordem de
fecho s deve estar activa at o fim-de-curso cancelaFechada indicar que a cancela j est
completamente fechada.

Como anteriormente, a cancela fecha quando o carro que entrou deixar de ser detectado pela
clula2.

Se, antes da cancela estar completamente fechada, for detectado a presena de um novo carro
pela clula2, por uma questo de segurana, a cancela deve abrir imediatamente.

Desenvolva o programa de controlo para esta nova situao considerando a seguinte lista de
atribuies:

Entradas
celula1 I1
ligarSirene desligarSirene
celula2 I2
celulaSaida I3
cancelaAberta I4 cancelaAberta
cancelaFechada I5
desligarSirene I6
Sadas
abrirCancela Q1 Clula2
fecharCancela Q2
semaforoVerde Q3
semaforoVermelho Q4
ligarSirene Q5 cancelaFechada

Clula1

Automao 2007/8 10 / 11
Para valorizao de nota, considere ainda a especificao adicional:

Tal como referido anteriormente, se, antes da cancela estar completamente fechada, for
detectado a presena de um novo carro pela clula2, por uma questo de segurana, a cancela
deve abrir imediatamente. No entanto, como esta situao corresponde a uma entrada
ilegtima de um novo carro, dever ser accionada uma sirene, a qual permanecer ligada at
que o boto desligarSirene seja premido.

Utilize o FEUPAutom com o Target Simple Park, na verso Moving Barrrier

Utilize a janela Window -> Variables do FEUPAutom para definir o nome das
variveis e seus mapeamentos de acordo com a tabela acima mostrada.

Relatrio Final
No final da segunda aula sero avaliadas as funcionalidades implementadas e o desempenho
do grupo ao longo das duas aulas ser avaliado

Cada grupo deve enviar, no final da segunda aula, por EMail, ao respectivo professor das
aulas prticas as impresses para PDF geradas pelo FEUPAutom do cdigo produzido para
cada um dos trabalhos do parque (partes 2 e 3). O EMail a enviar deve ter o ttulo [Auto] TP2
Turma xxx Grupo yyy e deve ter anexo os 2 PDFs; o texto do email deve conter a turma, o
grupo e o nome dos autores do trabalho (substituir xxx pela turma e yyy pelo n grupo).

Bom Trabalho !

Automao 2007/8 11 / 11

Você também pode gostar