Estruturação da Programação Autómatos Programáveis Programação Programação do autómato SAIA. Introdução. Estruturação da programação. Blocos de programa (PB) e blocos funcionais (FB). Leitura e envio de sinais. Linguagens de programação do SAIA. Introdução. Lógica de contactos, Blocos funcionais, Lista de instruções. Introdução ao GRAFTEC (SAIA). Escrita de programas em diferentes linguagens a partir de modelos GRAFCET Apresentação série 3 de problemas. T09.1 T09.2 Linguagens de Programação do SAIA Linguagem de Contactos Linguagem de contactos; Blocos funcionais; Lista de instruções; Programação baseada no GRAFCET (GRAFTEC no SAIA). T09.3 T09.4 1
Linguagem de Contactos Exemplo Funções Lógicas L (prat_ex1) Que função? T09.5 T09.6 Funções Lógicas: L Exemplo Contadores Que função? Up Up com preset Down com preset T09.7 T09.8 2
Contadores Contadores: Exemplo Up/Down com preset Up/Down com preset e clear Que faz? T09.9 T09.10 Temporizadores Temporizadores: Exemplo Que faz? T09.11 T09.12 3
Biestáveis Geração de Sinais Periódicos T09.13 T09.14 - Geração de Sinais Periódicos Elementos usados na programação do SAIA Code Type Range I Input 0..8191 O Output 0..8191 F Flag 0..8191 R Register 0..4095 T Timer 0..450 C Counter 0..1599 K Constant 0..16383 X text 0..7999 DB Data Block 0..7999 T09.15 T09.16 4
Condições que condicionam a realização de operações ou a chamada de blocos P Positive Arithmetic status flags High se o resultado da operação aritmética é positivo Estado lógico: l do acumulador das arithmetic status flags N Z E Negative Zero Error High se o resultado da operação aritmética é negativo (as flags P e N têm sempre valores lógicos opostos) High se o resultado da operação aritmética é 0 High se a instrução não pode ser executada (por exemplo devido à ocorrência de overflows, underflows) T09.17 T09.18 Código Branco H L P N Teste das flags Descrição Nenhuma condição Se o acumulador está a 1 (H) Se o acumulador está a 0 (L) Se a flag P está a 1 (H) Se a flag N está a 1 (H) Código Z E C Teste das flags (cont.) Descrição Se a flag Z está a 1 (H) Se a flag E está a 1 (H) Usado apenas com a instrução ACC Exemplo: CPB H 20 T09.19 T09.20 5
Operações com Bits COB 0 0 STH I 7 OUT O 32 ; Esta instrução deve iniciar qualquer programa. ; colocação no acumulador do conteúdo da entrada 7. ; colocação na porta de saída 32 do conteúdo do acumulador Operações com Bits OUT F 40 ECOB ; colocação na flag 40 do conteúdo do acumulador. ; Esta instrução deve finalizar qualquer programa STL I 12 ; colocação no acumulador do conteúdo negado da entrada 12. T09.21 T09.22 Operações com Bits Operações com Bits Leitura : STH [X] e STL [X] (Start High/Low) uso: STH[X] «var» em que «var» pode ser I, O, F, T,C Ler é colocar no acumulador Saída: OUT[X] (Output) uso: OUT[X] «var»; em que «var» pode ser O ou F Output é colocar na saída escolhida o conteúdo do acumulador T09.23 T09.24 6
Operações com Bits Saída: SET e RESET (SET[X], RES[X], SETD[X], RESD[X]) uso: SET[X] «var»; em que «var» pode ser O ou F Set é colocar na saída escolhida o valor 1, na condição do acumulador estar a 1, mantendo-se aquela até ordem de reset. Operações lógicasl E lógico: ANH[X] e ANL [X] OU lógico: ORH[X] e ORL [X] OU Exclusivo: XOR [X] Complemento: COM [X] T09.25 T09.26 Operações lógicas. l Exemplo Detecção dinâmica de flancos: instrução DYN COB 0 0 STH I 5 ORH I 13 OUT O 32 ECOB ; lê para o acc, I 5 ; faz o OU do acc com I 13 (resultado no acc) ; coloca o valor de acc em O 32 COB 0 0 STH I 0 DYN F 500 ; COM O 32 ; complementa se acc =1 ECOB T09.27 T09.28 7
Detecção dinâmica de flancos: instrução DYN Entrada I0 Flag 500 Saída O32 Operações no acumulador ACC código C H L Complement High Low ; código = C H L P N Z E Código nas operações no acumulador Acc é complementado Acc é posto a 1 Acc é posto a 0 T09.29 T09.30 Operações no acumulador Operações que envolvem palavras de 32 bits (registos) N Z E Código nas operações no acumulador (cont.) Negative É atribuído a acc o valor da flag aritmética N Zero É atribuído a acc o valor da flag aritmética Z Error É atribuído a acc o valor da flag aritmética E No comando lógico l estas operações surgem associadas: Aos contadores (C); Aos temporizadores (T); Ao índice de registo. T09.31 T09.32 8
Operações que envolvem palavras de 32 bits (registos) Operações que envolvem palavras de 32 bits (registos) Consistem em geral em: Guardar uma dada constante num registo; Operações de cópiac Operações de incremento e decremento. As operações de 32 bits afectam a generalidade das flags aritméticas. ticas. As operações de incremento e decremento só se realizam se o acumulador estiver a 1. T09.33 T09.34 Operações que envolvem palavras de 32 bits (registos) Um registo (R) definido por um grupo de 32 bits sós pode conter inteiros se for declarado como contador ou temporizador. Nos outros casos pode conter decimais, hexadecimais, binários, reais e ascii. Operações de carregamento (loading( loading) uso: LD[X] «var» ; «var» corresponde a : R,T,C valor Ter em atenção: O carregamento dos contadores e dos temporizadores só se faz se o acumulador estiver em 1. Para registos o carregamento é sempre feito. T09.35 T09.36 9
Operações de carregamento. Exemplo Operações de Incremento/Decremento LD R 100 10001Y LD R 1001 AB01H LD T 1 200 ; carregamento de um binário ; carregamento de um hexadecimal ; carregamento de um inteiro ( neste caso, unidades de tempo) INC[X]: incremento de um R,T,C de um valor (admissível) Uso: INC[X] «var» DEC[X] «var» ; «var» corresponde a: R,C ; «var» corresponde a: R,C Estas operações só se realizam se o acumulador estiver a 1 T09.37 T09.38 Operações com o Index Register Transferência de Sequências de n Bits Cada COB tem associado um index register O SAIA define operações para carregar, guardar e incrementar/ decrementar o IR até um certo limite. Todas as operações com opção [X] referem-se a elementos cujo número é o dado somado ao conteúdo do index register Objectivo: ler uma sequência de variáveis lógicas, ou seja que ocupam posições sucessivas de memória e enviá-las para um destino definido. Operadores envolvidos: 1) nº de bits a transferir 2) fonte: R ou (I,O, F,T, ou C) 3) destino:(o, F,T, ou C) ou R T09.39 T09.40 10
Transferência de Sequências de n Bits. Transferência de Sequências de n Bits. Transferência de n bits para um registo: BITI 8 ; lê 8 bits I 0 ; a partir da entrada 0 (até 7) R 500 ; e armazena-os no registo 500 Transferência de n bits de um registo para variáveis veis lógicas: l ld r 1500 bito 4 1011Y r 1500 ; do registo 1500 respectivamente o 32 ; carrega o registo 1500 ;com a palavra binária 1011 ; transfere 4 bits ;para as saídas o 32...0 35 T09.41 T09.42 Operações de Movimentação de Dados: COPY,, PUT, GET Operações de Movimentação de Dados: COPY,, PUT, GET Uso: COPY[X] «varf» «vard» ; «varf» corresponde a R, T, C ; «vard» corresponde a R, T, C Estas operações realizam-se independentemente do valor actual do acumulador. Logo: A sua utilização mais segura é dentro de blocos de programa, que podem ser chamados condicionalmente. T09.43 T09.44 11
Operações de Movimentação de Dados: COPY,, PUT, GET. Aplicação Conversão Binário BCD - instrução DIGI É usual na inicialização colocar num registo um valor de contagem ou temporização, e, durante a execução, copiar este registo respectivamente para um dado contador ou temporizador. T09.45 T09.46 Conversão Binário BCD - instrução DIGI Conversão BCD Binário instrução DIGO Um número n inteiro existente num registo pode ser codificado em BCD e armazenado em flags ou enviado para saídas binárias. (que externamente serão com certeza de novo descodificadas para inteiros) T09.47 T09.48 12
Instruções de Controlo Existem no PG5 instruções de salto ( (jump) absoluto e condicional. Não é contudo boa programação a sua utilização Apresentação Série S 3 Pretende-se controlar a temperatura de um forno industrial em torno dos 200 C. Optou-se por um controlo do tipo On/Off, para regular a temperatura. A temperatura é regulada utilizando uma resistência de aquecimento. A passagem de corrente nessa resistência é controlada por meio de um relé (R). A temperatura é monitorizada por meio de 2 sensores binários (S1 e S2). O sensor S1=1 se T>190 C. O sensor S2=1 se T>210 C. O sistema deverá funcionar do seguinte modo (ver figura): Em aquecimento: Manter a resistência ligada (R=1) até a temperatura atingir os 210 C. Quando T=210 C, desligar resistência (R=0). Em arrefecimento: Manter a resistência desligada (R=0) até a temperatura descer aos 190 C. Quando T=190 C ligar resistência (R=1). T09.49 T09.50 Pretende-se comandar uma válvula de actuação eléctrica que controla a abertura e fecho de um depósito de matéria-prima, a qual se pretende que seja pesada em doses iguais. Esta pesagem é feita para um recipiente, ilustrado na figura, que tanto pode ser deslocado manual como automaticamente, não interessando para este problema. Desde que exista o recipiente vazio o contacto a é actuado. Isto provoca a abertura da válvula e o início da pesagem. Quando o contacto b é actuado a pesagem deve ser terminada, fechando-se a válvula. O retorno à posição inicial é feito pela acção de uma mola, quando o recipiente é retirado. Pode acontecer que o reservatório se esgote a meio de um enchimento. Para prever esta possibilidade, e supondo que o tempo de enchimento é, no máximo 15s, deve acender-se uma lâmpada desde que passe esse tempo e o sensor b não seja actuado. Essa lâmpada vai servir para que um operador recarregue o reservatório permitindo o fim do enchimento, ao fim do qual a lâmpada apaga. Um sistema de aceitação/rejeição de peças para posterior processamento baseia-se na sua altura. O tapete rolante é colocado em movimento através de um botão start. Uma luz vermelha que estava acesa apaga e fica acesa uma verde. A peça aparece sempre do lado esquerdo, deslocando-se para o direito. Para o efeito dispõe-se de dois sensores como indicado na figura. Se a peça é baixa de mais (não chega a actuar a) um sinal T deve ser activado sendo desactivado quando o sensor deixa de ser actuado. Se a peça tem a altura suficiente, a actuação dos sensores segue a sequência que se retira da figura, nunca se chegando a actuar T. (Supõe-se que b está a uma altura tal que nenhuma peça pode passar sem o actuar.) T09.51 T09.52 13
Para controlo da qualidade da produção (simplificado) vamos assumir que são contadas as peças demasiado baixas e que ao fim de 5 peças deve acender-se uma luz vermelha e o tapete deve parar. Quando o operador fizer o start de novo deve ser feito o reset desse contador. T09.53 14