Anda di halaman 1dari 20

Mestrado Integrado em Engenharia Electrotcnica e de Computadores

Disciplina Automao Ramos de Automao e Energia

Guio de trabalho prtico Introduo ao software FEUPAutom

Armando Jorge Sousa asousa@fe.up.pt Jos Antnio Faria jfaria@fe.up.pt

Apresentao
Este trabalho prtico tem por objectivo apresentar o software FEUPAutom, desenvolvido por docentes da FEUP* com o objectivo de apoiar o desenvolvimento de sistemas de controlo automtico a eventos discretos. O modo de funcionamento do FEUAutom muito semelhante aos dos autmatos programveis pelo que, conforme ir verificar mais tarde na disciplina, possvel executar quase directamente nos autmatos programveis programas que foram desenvolvidos no FEUPAutom. O trabalho prtico ocupa uma nica aula prtica cujo plano o seguinte: Na primeira parte, vai testar uma pequena aplicao de demonstrao com o objectivo de se familiarizar com o princpio de funcionamento do FEUPAutom. Na segunda parte, vai executar um conjunto de exerccios que percorrem as principais funcionalidades oferecidas pelo FEUPAutom para apoiar o desenvolvimento de aplicaes de controlo. Na terceira parte vai desenvolver o programa de controlo de um parque de estacionamento (idntico ao considerado da aula anterior). Na quarta parte (a realizar extra aula), vai desenvolver o programa de controlo de uma verso mais completa do parque de estacionamento.

A preparao obrigatria para a aula consiste apenas na leitura atenta de todo este guio.

* Armando Sousa, asousa@fe.up.pt e Paulo Costa, paco@fe.up.pt

MIEEC | Automao | 2008/09

2 / 20

Parte 1: Demonstrao do FEUPAutom

O software FEUPAutom ser apresentado nas aulas tericas e est disponvel para download na pgina da disciplina no SiFEUP. Para o executar, podera instal-lo no seu computador pessoal ou utilizar um dos PCs do laboratrio I006. O software contm dois componentes principais: O Sistema de Comando atravs do qual so editados e executados os programas de controlo (e que , sensivelmente, equivalente ao uComputador que utilizou no trabalho prtico anterior) O Simulador 3D que simula os sistemas fsicos controlados pelo Sistema de Comando de uma forma visual e realista.

Sadas Programa Entradas Sistema de Comando Simulador 3D

No modo de funcionamento normal, o Sistema de Comando: L os valores das entradas Executa o programa de controlo e determina o novo valor das sadas Actualizar (escreve) o valor das sadas

Por seu lado, o Simulador 3D: Executa os comandos provenientes do Sistema de Comando atravs das linhas de sada Gera o valor das entradas em funo da situao actual do sistema fsico

Para se familizarizar com o princpio de funcionamento do FEUPAutom, vai testar uma pequena aplicao de demonstrao que controla a entrada de um parque de estacionamento idntico ao do trabalho prtico anterior.

MIEEC | Automao | 2008/09

3 / 20

1.1.

Aplicao de demonstrao

Para testar a aplicao de demonstrao, proceda da seguinte forma: Efectue o download o ficheiro FEUPAutom.zip disponvel na pgina da disciplina e descompacte-o para uma pasta sua escolha Execute o programa FEUPAutom.exe presente na pasta FEUPAutom+EditorST No meu Targets seleccione, Simple Park (Instant Barrier) No menu Window, active a janela Inputs/Outputs Redimensione e reposicione as janelas para ficar com uma interface prxima da seguinte:

Edite o seguinte programa na janela ST Editor (o mais simples ser fazer copiar/colar): if (I1) then Q1 := true; Q2 := false; end_if; if

(I1=false) then Q1 := false; Q2 := true; end_if;

MIEEC | Automao | 2008/09

4 / 20

Compile o programa (menu Programs\Compile) e verifique que no ocorreram erros de compilao. Coloque o programa em execuo (menu Programs\Run) Agora, na janela do simulador, clique sobre a seta junto entrada para pedir um novo carro Na janela I/O Leds, observe e interprete a evoluo dos seguintes linhas de entrada e sada: I1: celula_entrada Q1: abrir_cancela Q2: fechar_cancela

1.2. Explicao do funcionamento Quando um novo carro se aproxima da entrada e atinge uma posio em que interrompe o feixe da clula fotoelctrica de entrada, o Simulador activa a entrada do Sistema de Comando correspondente a essa clula (neste caso, a entrada I1) O programa detecta a alterao em I1, activa a sada correspondente abertura da cancela de entrada (Q1) e desactiva a sada correspondente ao fecho da cancela (Q2). if (I1) then Q1 := true; Q2 := false; end_if;

O simulador detecta esta alterao nas linhas de sada e actua sobre o sistema fsico, isto , movimenta a cancela no sentido da abertura. Estando a cancela aberta, o Simulador faz avanar o carro. Depois do carro entrar no parque, a clula de entrada deixa de estar actuada pelo que o Simulador desactiva a entrada I1. O programa detecta esta alterao e desactiva a sada Abrir cancela (Q1) e activa a sada fechar cancela (Q2).

(I1=false) then Q1 := false; Q2 := true; end_if; Por seu lado, o simulador detecta esta nova alterao nas linhas de sada e movimenta a cancela no sentido do fecho. Nota: Este programa muito simples deve ser melhorado

if

MIEEC | Automao | 2008/09

5 / 20

Parte 2: Funcionalidades FEUPAutom


Nesta segunda parte do trabalho prtico vai realizar um conjunto de pequenos exerccios prticos com o objectivo de se familiarizar com as funcionalidades oferecidas pelo FEUPAutom para apoiar o desenvolvimento de aplicaes de controlo.

2.1. Linguagem de programao A linguagem de programao utilizada no FEUPAutom a liguagem ST Structured Text. Trata-se de um linguagem standard para a programao de dispositivos automticos (entre os quais os autmatos programveis) que faz parte da norma IEC 61131 e que, actualmente, suportada por praticamente todos os fabricantes de autmatos programveis. A linguagem ST ser brevemente apresentada nas aulas tericas e, no help do FEUPAutom, pode encontrar o respectivo manual de referncia.

A linguagem ST descende do Pascal e, por isso: As atribuies so efectuadas com := As comparaes so efectuadas com = No distingue maisculas e minsculas

Na escrita dos programas, para melhorar a legibilidade do cdigo: Escreva uma instruo por linha Utilize uma i ndentao correcta Utilize nomes descritivos para todas as variveis Utilize (* comentrios *) ou // 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.

MIEEC | Automao | 2008/09

6 / 20

2.2. Traados temporais O FEUPAutom permite efectuar traados temporais das variveis de um programa, um pouco como um osciloscpio, o que pde ser muito til na fase de teste dos programas. Para ilustrar esta funcionalidade, proceda do seguinte modeo: Abra a janela dos traados temporais seleccionando Log & Trace no menu Window. De seguida, edite o seguinte programa: Q1 := I0 and I1; Q5 := I0 or I1; Execute o programa em ciclo infinito (menu Program\Run) Modifique atravs de foragens os valores das entradas I0 e de I1 (para isso, deve activar a janela Inputs/Outputs), e confira os valores de Q0 e Q1. Pre a execuo do programa (menu Program\Stop) e escolha as variveis que pretende ver no grfico. Neste caso, seleccione I0,I1, Q0 e Q1

Exerccio 2.1. Copie o seguinte programa de controlo do parque para o editor: if (I1) then Q1 := true; Q2 := false; end_if; if then

(I1=false) and (I2=false) Q1 := false; Q2 := true; end_if; (I2 diz respeito ao sensor depois da cancela)

Coloque o programa em execuo e simule a entrada de vrios carros. Obtenha o traado temporal das variveis relevantes e copie-o (com ALT+PRTSCR) para posterior incluso no relatrio do trabalho a enviar ao docente.

Em que situao que este programa no funcionaria?

MIEEC | Automao | 2008/09

7 / 20

2.3. Nomes das variveis Os nomes atribudos por defeito s linhas de entrada e sada (I0, I1, .., Q0, Q1, ...) e s variveis de memria (M0, M1, ..., MW0, MW1, ...) podem ser alterados. Para isso, deve activar a janela Variables (menu Window) e filtrar pelo tipo de variveis que quer alterar (para j considere apenas Inputs, Outputs e MemWords). De seguida pode alterar o nome da varivel escrevendo o novo nome no campo UserName.

Exerccio 2.2. Altere os nomes de: entrada I1 para CelulaEntrada entrada I1 para CelulaSaida sada Q1 para AbrirCancela sada Q2 para FecharCancela

De seguida, re-escreva o programa de controlo anterior agora com nomes descritivos para as variveis. Dica: utilize CTRL+SPACE para evitar teclar nomes compridos de variveis

MIEEC | Automao | 2008/09

8 / 20

2.4. Foragem do valor das entradas e sadas

Como se viu na primeira parte do trabalho, no modo de funcionamento normal do FEUPAutom: O programa de controlo l as entradas e escreve nas sadas O simulador 3D l as sadas e escreve nas entradas.

No entanto, durante a fase de desenvolvimento e teste dos programas, muito til poder forar (i.e., impr) valores a linhas de sada, independentemente dos valores gerados pelo Sistema de Controlo, e forar valor de entradas, independentemente dos valores gerados pelo Simulador. A possibilidade de actuar directamente sobre as entradas e as sadas permite ao Utilizar testar determinadas situaes sob o seu controlo e, assim, diagnosticar mais facilmente eventuais erros de programao. Para forar o valor de uma entrada ou sada deve proceder da seguinte forma: Activar a janela Inputs/Outputs no menu Window. Para forar o valor 0 numa linha de entrada ou de sada, clicar sobre o boto correspondente coluna 0 em frente a essa linha De forma idntica, para forar o valor 1, clicar sobre o boto da coluna 1.

Exerccio 2.3. Para testar esta funcionalidade, simule a chegada de vrios carros entrada do parque e comande a abertura da cancela e o semforo actuando directamente sobre as linhas de sada (Q1: abrirCancela, Q2: fecharCancela; Q3: semaforoVerde; Q4: semaforoVermelho). Efctue o traado temporal dos sinais I1, Q1, Q2, Q3 e Q4. Copie a imagem do traado para posterior incluso no seu relatrio do trabalho prtico a enviar ao docente.

MIEEC | Automao | 2008/09

9 / 20

2.5. Varivel Auxiliares O FEUPAutom permite utilizar variveis de memria auxiliares do tipo bit e word (16 bits): As variveis do tipo bit (M0, M1, ...) armazenam um valor booleano, True (1) ou False (0). As variveis do tipo word (MW0, MW1, ...) armazenam um valor inteiro.

Exerccio 2.4. Para testar a utilizao de variveis em memria: Introduza o seguinte programa: m0 := not m0; mw0 := mw0 + 1; Escolha repetidamente Run Once no menu Program (ou prima F8) para executar um ciclo de programa de cada vez. No final de cada ciclo, observe o valor de M0 e MW0 passando o cursor do rato por cima do nome da varivel no editor (o valor apresentado na barra de estado situada ao fundo da janela do editor).

MIEEC | Automao | 2008/09

10 / 20

2.6. Variveis do sistema e Inicializao O FEUPAutom tem um conjunto de variveis especiais internas cujo valor alterado pelo prprio FEUPAutom, mas que podem ser consultadas pelo programa. A listagem de todas as variveis internas do sistema pode ser encontrada no HELP. Uma das mais importantes a varivel SW0, que conta o nmero de ciclos executados desde sempre no actual programa. Esta varivel pode ser utilizada para executar operaes de incializao do programa (i.e., operaes que apenas so executadas uma vez, no primeiro ciclo do programa, como se ver no ponto seguinte).

Exerccio 2.5. Para testar o comportamento da varivel de sistema SW0: Escreva a seguinte instruo no editor ST println (sw0); Prima CTRL+SHIFT+R * para re-inicializar todas as variveis incluindo SW0. De seguida, prima F8 diversas vezes e depois F9 e depois F10 e depois F8. Como explica o resultado?

* CTRL+SHIFT+R equivalente a menu Program \Clear All e re-inicializa todas as variveis incluindo SW0.

MIEEC | Automao | 2008/09

11 / 20

2.7. Operadores de flanco (RE e FE) A funo especial RE (Rising Edge) fica activa durante um ciclo do autmato apenas se a varivel em causa estava a False (0) no ciclo anterior e agora est a True (1). Teste a seguinte instruo visualizando o respectivo traado temporal:

q0 := RE i0;

A funo especial FE (Falling Edge) fica activa durante um ciclo do autmato apenas se a varivel em causa estava a True (1) e est a False (0). Teste a seguinte instruo visualizando o respectivo traado temporal:

q0 := FE i0;

Introduza e analise o funcionamento da seguinte instruo:

q0 := (FE i0) or (RE i0);

Relembre que a funo booleana XOR permite obter a funcionalidade de comutao (var_bool XOR 1 resulta em var_bool negada). Introduza e analise o funcionamento da seguinte instruo:

q0 := (RE i0) xor q0;

Resumo dos operadores Booleanos e sob flancos de variveis Operadores Booleanos: NOT, AND, OR, XOR Operadores de Flanco: RE (rising edge) e FE (falling edge)

MIEEC | Automao | 2008/09

12 / 20

2.8. Temporizadores A contagem de tempo um aspecto essencial nos programas de controlo. A cada temporizador Txx do FEUPAutom est associada uma estrutura de dados que contm: o modo de operaes Txx.mode; o tempo pr-programado preset Txx.P em dcimos de segundo o bit de sada Txx.Q que indica se o tempo j passou ou no.

Os temporizadores do FEUPAutom nunca param e o comando START marca o instante do incio da contagem de tempo. Por exemplo, para um temporizador T0 em modo TOn e com T0.P=20, aps o start iniciar a contagem de tempo, o bit T0.Q toma o valor 1 depois de ter decorrido o valor da temporizao (neste caso 20 x 0,1 seg = 2 seg).
if RE i0 then // inicializaes t0.mode := TOn; // modo de atraso activao t0.P := 20; // tempo activao em dcimos de segundo start t0; // inicio da contagem do tempo end_if; q0 := t0.q;

Exerccio 2.6. Teste o programa anterior numa situao simples, tal como o exemplificado na figura seguinte. O programa conta 2 segundos desde o flanco ascendente de I0. Passado esse tempo, a sada T0.Q toma o valor 1.

O mesmo programa numa situao mais complicada d origem ao seguinte traado temporal.

MIEEC | Automao | 2008/09

13 / 20

Obs1: Existem outros modos para os temporizadores que devem ser estudados no ficheiro de HELP do FEUPAutom Obs2: As inicializaes s necessitam de ser feitas uma vez, no incio do programa. Por vezes utiliza-se um teste para a varivel SW0=0 para fazer as inicializaes, por exemplo: if sw0 = 0 then // inicializaes t0.mode := TOn; t0.P := 20; end_if;

MIEEC | Automao | 2008/09

14 / 20

2.9. Exerccios Livres

Se ainda se sente pouco seguro quanto utilizao do FEUPAutom, dever resolver os livres exerccios seguintes, antes de passar terceira parte do guio. Exerccio 2.7. Crie um programa que liga a sada Q0 sempre e s quando todas as entradas I0, I1 e I2 estiverem ligadas.

Exerccio 2.8. Acrescente ao enunciado anterior a funcionalidade de ligar a sada Q1 quando pelo menos uma das sadas I0 e I1 ou I2 estiverem activas.

Exerccio 2.9. Crie um programa que no incio activa Q0 e a cada flanco descendente da varivel I0 activa a sada seguinte que est actualmente ligada, criando a sequncia: Q0, Q1, Q2, Q0, Q1

Exerccio 2.10. Crie um programa que ligue Q0 quando I0 estiver activo um tempo superior a 1 segundo (quando I0 ficar inactivo, Q0 tambm deve ficar inactivo).

MIEEC | Automao | 2008/09

15 / 20

Parte 3: Controlo de Parque Estacionamento Verso simples


Considere um parque de estacionamento idntico ao considerado no trabalho anterior mas, agora, no posto de entrada do parque existem duas clulas fotoelctricas, uma localizada antes da cancela e a outra depois, conforme representado na figura abaixo.

O simulador Simple Park reproduz o funcionamento de um parque de estacionamento com uma entrada com cancela e uma sada livre. As operaes sobre o parque disponveis no grafismo da aplicao so as seguintes: Clicar sobre a seta de entrada para fazer entrar um carro Clicar sobre a seta de sada para fazer entrar um carro Clicar sobre a sirene para activar o sensor (Siren Off)

Nota: Estas opes esto tambm disponveis no menu de contexto do rato premir o boto do lado direito do rato sobre a imagem Se forem enviados comando incoerentes ou se barreira bater no carro, possvel estragar a barreira. Esta situao de avaria representada atravs de chamas na caixa da barreira para a simulao voltar a funcionar, necessrio escolher Reset World ou premir sobre a chama

MIEEC | Automao | 2008/09

16 / 20

Exerccio 3.1 Desenvolva o programa de controlo do parque de forma que, quando um novo carro chega entrada do parque, e no caso de haver lugares disponveis: A cancela abre para o carro entrar. 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).

Para isso: Comece por seleccionar a verso Instant Barrier do simulador Simple Park (menu Targets) Abra a janela Variables (menu Window) e defina o nome das variveis de acordo com a tabela de atribuies abaixo.
Entradas celula1 celula2 celulaSaida Sadas abrirCancela fecharCancela semaforoVerde semaforoVermelho

I1 I2 I3 Q1 Q2 Q3 Q4

Edite, compile e teste o programa de controlo do parque recorrendo s funcionalidades do FEUPAutom apresentadas na segunda parte do guio.

MIEEC | Automao | 2008/09

17 / 20

Parte 4: Controlo de Parque Estacionamento Verso completa


Nesta quarta parte do trabalho, que poder realizar como trabalho extra aula, vai desenvolver uma verso um pouco mais completa do sistema de controlo do parque de estacionamento. Relativamente situao anterior, considere 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, a clula2 detectar a presena de um novo carro ento, por uma questo de segurana, a cancela deve abrir imediatamente. Como esta situao corresponde entrada ilegtima de um novo carro, deve ser accionada uma sirene, que permanecer ligada at o boto desligarSirene ser premido.

MIEEC | Automao | 2008/09

18 / 20

Exerccio 4.1 Comece por testar o comportamento do simulador nesta nova situao actuando directamente sobre as sadas (i.e., forando o seu valor) e observando a evoluo das entradas. De seguida, desenvolva o programa de controlo para esta nova especificao. Para isso, utilize a verso Moving Barrier do simulador Simple Park e considere as atribuies seguintes:

Entradas celula1 celula2 celulaSaida cancelaAberta cancelaFechada desligarSirene Sadas abrirCancela fecharCancela semaforoVerde semaforoVermelho ligarSirene

I1 I2 I3 I4 I5 I6 Q1 Q2 Q3 Q4 Q5

MIEEC | Automao | 2008/09

19 / 20

5. Relatrio Final
Cada grupo deve enviar, at ao incio da aula seguinte, por email, ao respectivo professor das aulas prticas um relatrio contendo as resolues dos exerccios propostos no guio (programas em ST, traados temporais. A mensagem de email deve ter o assunto [Auto] TP2 Tx Gy - Nomes1+Nomes2 e deve ter anexo o relatrio. O nome do documento contendo o relatrio deve ser da forma TP2 Tx Gy - Nomes1+Nomes2.ext. O texto do email deve conter a turma, o grupo, nome COMPLETO e nmeros de aluno dos autores do trabalho. Obs: x representa o nmero da turma, y o nmero do grupo, ext a extenso do ficheiro (doc, docx ou pdf) e Nomes representa o Primeiro e ltimo nome dos autores do trabalho exemplo: [Auto] TP2 T2 G3 ManuelFagundes+AmbrsioFelisberto

Bom Trabalho !

MIEEC | Automao | 2008/09

20 / 20

Anda mungkin juga menyukai