Sumário 

1. Concepção de um automatismo

1.1 Características de um automatismo

1.2 Estrutura de um automatismo

1.3 Instalação de um automatismo

2. Características Gerais

2.1 Origem e perspectivas

2.2 Estrutura de um autómato programável

2.3 As Entradas/Saídas (E/S)

2.4. O Processador

2.5. As memórias

2.6 A consola de programação

3. Concepção de um automatismo

3.1 Métodos de análise do funcionamento de um automatismo sequencial

4. Programação

4.1 Áreas de memória

4.2 Terminologia

4.3 O diagrama de contactos (Ladder Diagram)

Seminário de Sistemas Digitais e Microprocessadores

Autómatos Programáveis

 

 

Tradução e adaptação de extractos do livro "Automates Programmables" de André Simon, éditions L'Élan, 1983, Liège

1. Concepção de um automatismo

1.1 Características de um automatismo

Os automatismos são dispositivos que permitem que máquinas e instalações funcionem automaticamente.

Um automatismo bem conccebido:

- simplifica consideravelmente o trabalho do homem que, liberto em relação à máquina, pode dedicar-se a tarefas mais nobres;

-elimina tarefas complexas, perigosas, peníveis ou indesejáveis, fazendo-as executar pela máquina;

- facilita as modificações no processo produtivo, possibilitando a transição de uma quantidade ou tipo de produção para outra;

- melhora a qualidade dos produtos, controlando a máquina de modo a manter critérios de produção e tolerâncias respeitadas constantemente;

- aumenta a produção assim como a produtividade;

- permite a realização de economias de matéria prima e de energia;

- aumenta a segurança do pessoal;

- controla e protege as instalações e as máquinas.

Os automatismos intervêm em todas as fases da produção industrial, em domínios tão diversos como os das indústrias de transformação, de transporte, das máquinas-ferramenta...assim como no sector terciário.

1.2 Estrutura de um automatismo

Desde a sua concepção um automatismo deve ser decomposto em duas partes:

- a parte comando ou autómato, que elabora as ordens necessárias à execução do processo, em função dos pedidos que recebe às entradas e dos resultados de execução que lhe são fornecidos pela parte operativa;

- a parte operativa ou parte de potência, que efectua as operações, executando ordens que lhe são transmitidas pela parte comando.

Para além deste diálogo por ordens e resultados com a parte operativa, a parte comando troca informações com o exterior do sistema (piloto, utilizador, vigilante,...) donde recebe as ordens e a quem fornece resultados visuais ou sonoros.

Distingue-se em qualquer sistema automatizado, a máquina ou instalação, e a parte comando constituida pelos equipamentos de automatismo. Esta parte comando é assegurada por componentes que respondem do ponto de vista esquemático a quatro funções base: a detecção, o processamento de dados, o comando de potência e o diálogo.

fig.1 Diagrama de blocos das funções do comando

Componentes para a detecção

interruptores de posição, detectores de proximidade, células fotoeléctricas, detectores de velocidade, manostatos, etc.

Componentes para o processamento de dados

autómatos programáveis, microsistemas, sequenciadores, células lógicas, relés, contactores auxiliares, etc.

Componentes para o comando de potência

variadores de velocidade, arrancadores, distribuidores, contactores, etc.

Componentes para o diálogo homem-máquina

ecrãs de controle, mesas de comando, botoneirras pendentes, botões e luzes avisadoras, etc.

fig.2 Separação das partes Comando e Operativa

Esta estrutura possibilita um diálogo proveitoso entre o futuro utilizador do sistema e o profissional de automatismos responsável pela parte comando.

Exemplo: Num elevador, o conjunto electromecânico (cabina, motor, portas) constitui a parte operativa, os botões de chamada, a lógica e os armários dos aparelhos constituem a parte comando.

fig.3 Exemplo de comando de elevador

O profissional de automatismos encarregue da concepção e da realização da parte comando precisa de encontrar no caderno de encargos uma descrição clara, precisa, sem ambiguidades, nem omissões, do papel e das características do equipamento a realizar.

Para facilitar esta tarefa, é desejável que essa descrição seja dividida em dois níveis sucessivos e complementares.

Primeiro nível: especificações funcionais

O primeiro nível descreve o comportamento da parte comando em relação à parte operativa.

São as especificações funcionais que permitem que o conceptor compreenda:

- o que o automatismo deve fazer, face às diferentes situações que se possam apresentar;

- qual deverá ser o papel da parte comando a construir.

Essas especificações devem portanto definir, de um modo claro e preciso, as diferentes funções, informações e comandos implicados na automatização da parte operativa, assim como das seguranças de funcionamento previstas.

Pelo contrário, nesse nível, a escolha da tecnologia a utilizar não é necessariamente efectuada, pois pouco importa se o deslocamento de um móvel deve ser efectuado através de um êmbolo pneumático ou de um motor eléctrico. O que importa saber são as circunstâncias em que o deslocamento se deve efectuar.

Segundo nível: especificações tecnológicas e operacionais

O segundo nível completa as exigências funcionais e traz, através das especificações tecnológicas e operacionais, as precisões indispensáveis às condições de funcionamento dos equipamentos.

As especificações tecnológicas precisam as condições em que o automatismo deverá inserir-se fisicamente no conjunto que constitui o sistema automatizado e o seu ambiente.

É apenas a esse nível que devem intervir as informações sobre a exacta natureza dos captores e accionadores, as suas características e as limitações do seu uso.

A essas especificações de interface, podem ainda juntar-se as especificações do ambiente em que vai funcionar o automatismo: temperatura, humidade, poeira, riscos de explosão, tensões de alimentação, etc.

As especificações operacionais tratam do modo de funcionamento do automatismo ao longo da sua existência. Aí trata-se das considerações que respeitam ao equipamento, uma vez realizado e posto em serviço: fiabilidade, ausência de avarias perigosas, disponibilidade, possibilidades de modificação do equipamento em função das transformações da parte operativa, facilidades de manutenção, diálogo homem-máquina, etc.

Estas considerações são primordiais para a exploração do processo a automatizar e têm uma incidência marcante no modo de projectar o equipamento.

1.3 Instalação de um automatismo

A colocação em funcionamento de qualquer sistema automatizado implica o cumprimento de uma série de tarefas que constituem outras tantas etapas sucessivas, naturalmente interdependentes. Podem-se distinguir com efeito, quatro grupos de tarefas, representadas na figura:

- Estudo prévio

- Estudo propriamente dito e preparação

- Fabricação e ensaios

- Colocação em serviço e exploração.

fig. 4 As quatro etapas sucessivas para o estudo de um automatismo industrial

fig. 5 Etapas do estudo prévio de um automatismo industrial

Campos de aplicação

Estrutura; características

Arquitectura de um autómato (CPU; memórias;entradas e saídas E/S; módulos especiais)

Funcionamento

Hoje em dia, construtores de equipamentos de comando e engenheiros de automática não podem já ignorar os autómatos programáveis ou "Programmable Controllers" (PC). O ponto de referência a partir do qual estes sistemas de comando relativamente recentes se tornam de um preço comparável, se não mesmo inferior, ao dos equipamentos de comando tradicionais em lógica cablada, recua constantemente. Para a maior parte dos problemas de comando, convém portanto determinar a tecnologia de comando mais apropriada, e a esse respeito, a escolha incide cada vez mais nos autómatos programáveis. Antes de mais, trata-se não somente de uma questão de preço, mas principalmente do ganho de tempo, da facilidade de manipulação, da alta fiabilidade, da localização e eliminação rápida dos erros. Ao mesmo tempo, o produto final, isto é a máquina ou a instalação equipada com um tal autómato adquire um nível técnico mais elevado.

O objectivo das páginas seguintes é o de mostrar que qualquer técnico que deseje adquirir conhecimentos novos, está à altura de utilizar os autómatos programáveis.

2. Características Gerais

2.1 Origem e perspectivas

Os autómatos programáveis surgiram nos E.U.A. em 1969-70, e mais em particular no sector da indústria automóvel; começaram a ser utilizados na Europa dois anos mais tarde. A data do seu aparecimento coincide com o início da era do microprocessador e com a generalização da lógica cablada modular.

O autómato é a primeira máquina-linguagem, isto é, um calculador lógico (digital) cujo conjunto de instruções está orientado para os problemas de lógica e para os sistemas de evolução sequencial. É de notar que, cada vez mais, a universalidade dos computadores tende a desaparecer e o futuro parece abrir-se para esta nova classe de equipamentos: máquinas para tratamento de sinais, máquinas para gestão de bases de dados...

O autómato programável é, portanto e nesse sentido, um percursor e constitui um esboço da verdadeira máquina para os técnicos da automática.

O crescimento constante das aplicações electrónicas, a diminuição fantástica do preço dos componentes, o nascimento e o desenvolvimento dos microprocessadores e sobretudo a miniaturização das memórias, permitem imaginar autómatos programáveis, cujos preços atractivos, para características mais evoluidas, abrirão novos campos de aplicação.

O autómato programável pode ser utilizado isolado ou inserido num sistema repartido de controlo de processos e isso, em instalações tão variadas como uma cervejaria, uma padaria, uma fundição, uma refinaria, um teleférico ou uma instalação de aquecimento.

Com uma combinação de possibilidades de regulação e de comando sequencial, o autómato programável satisfaz as exigências dos processos simultaneamente contínuos e descontínuos (analógicos e digitais), regula as pressões, temperaturas, níveis e débitos e assegura todas as funções de temporização, cadência, contagem e lógica associadas.

Provido de uma carta (placa) de comunicações adicional, o autómato transforma-se num potente satélite, inserido numa rede de controlo distribuido.

Definição

Autómato programável é um aparelho electrónico programável por uma utilizador de automática e destina-se a pilotar, em ambiente industrial, máquinas ou processos lógicos sequenciais.

2.2 Estrutura de um autómato programável

a- Constituição

O autómato programável propriamente dito é constituido por:

- uma fonte de alimentação que assegura a transformação da energia eléctrica fornecida pela rede eléctrica (tensão alternada 220V/50 Hz) nas tensões contínuas exigidas pelos componentes electrónicos;

- uma interface de entradas e saídas (E/S ou I/O) assegurando a transformação e adaptação dos sinais eléctricos provenientes dos sensores (transdutores) para o autómato (mudança de nível de tensão, isolamento, filtragem) e recíprocamente dos sinais que vão do autómato para os accionadores;

- um processador (CPU), normalmente um microprocessador genérico ou específico, que é o "motor" do autómato programável e que lê e interpreta as instruções que constituem o programa guardado em memória e daí deduz as operações a realizar;

- uma memória, constituída por componentes electrónicos (tipo RAM ou ROM), que assegura a memorização do programa, dos dados (sinais das entradas) e dos accionadores (sinais das saídas).

Por outro lado, torna-se necessário utilizar uma consola de programação para escrever e modificar o programa, assim como para proceder às afinações e testes. Esta consola torna-se inútil, pelo contrário, durante a exploração industrial do autómato.

fig.6 Diagrama de blocos de um autómato programável

b - Evolução sequencial

No quadro dos autómatos programáveis, a noção de evolução sequencial é muito abrangente; refere-se não somente aos tradicionais automatismos por sequências, nos quais todas as variáveis de entrada e de saída são do tipo tudo ou nada (exemplo 1 da figura 2), mas é igualmente possível atribuir predicados aos acontecimentos tudo-ou-nada clássicos. Uma grandeza contínua (analógica) ou quantificada pode assim intervir numa operação de comparação. O exemplo 2 mostra que uma subida da temperatura cessa logo que se atinja uma temperatura de 200oC e desde que exista autorização de prosseguir o desenvolvimento do processo. É possível avançar um pouco mais na noção de evolução sequencial considerando que as acções lançadas estão associadas a comandos analógicos. O exemplo 3 ilustra uma regulação por patamar de um regulador.

fig. 7 Exemplos de evolução sequencial

c - Panorama geral

Os autómatos programáveis são equipamentos electrónicos com cablagem interna independente do processo a comandar (equipamento, hardware).

O autómato programável é adaptado à máquina ou à instalação a comandar por meio de um programa que define o modo de desenvolvimento das operações desejado (software) e de uma cablagem directa entre os elementos de entrada e de saída do autómato.

Os elementos de entrada são, por exemplo, os auxiliares de comando, os contactos de fim de curso, os detectores de proximidade, mas também, as tensões analógicas ou os detectores de corrente. Os contactores, as electroválvulas, os dispositivos de acoplamento óptico, as lâmpadas, etc, são elementos de saída.

O autómato programável executa comandos de tipo lógico e sequencial nas fábricas, isto é, próximo de máquinas, num ambiente industrial.

Um autómato de concepção avançada pode ter a sua exploração adaptada à formação e aos hábitos dos profissionais que o utilizam ou mantêm.

O número de instruções tratadas varia de um autómato para outro. O programa é directamente concebido pelo profissional de automatismos, o electricista ou o mecânico. Este trabalho é ainda facilitado pela existência de uma consola de programação.

Um autómato programável torna-se num equipamento específico logo que dotado de um programa e acoplado aos elementos de entrada e de saída. Para que o autómato possa trabalhar, o programa deve ser armazenado numa memória interna do autómato. Em geral utilizam-se memórias semicondutoras como memória interna de programa. Conforme o tipo de memória interna de programa, assim se distinguem os autómatos como de programação livre ou de programação alterável.

Os autómatos de programação livre estão equipados com memória de escrita e de leitura (RAM) na qual se pode introduzir o programa, sem necessidade de qualquer dispositivo particular, por meio da consola de programação. A memória RAM perde o programa no caso de corte da tensão de alimentação, mas issso pode ser evitado através de uma bateria-tampão.

Os autómatos de programação alterável são equipados de memórias apenas de leitura (ROM, PROM ou EPROM), que devem ser substituidas no caso de alteração do programa. As memórias EPROM podem ser apagadas por raios ultravioleta (UV) e ser de novo reprogramadas. Pelo contrário, as memórias PROM uma vez programadas não podem ser modificadas. Se se quizer proceder a modificações, torna-se necessário uma nova memória PROM para substituir a anterior.

Um autómato programável apresenta-se ou na forma de conjunto de placas (cartas) colocadas em bastidor ou em placa única, no caso dos modulares. As ligações entre as cartas fazem-se por meio de um bus (barramento) de ligações.

d - Noção de desenvolvimento cíclico.

A maioria dos autómatos actuais baseia-se na noção de desenvolvimento cíclico das instruções colocadas em memória.

O programa é uma sequência de instruções colocadas na memória. Um ciclo de execução consiste em primeiro lugar da tomada em conta das entradas que serão a partir daí fixadas para todo o ciclo, já que o autómato executa instrução a instrução até ao fim da memória. As ordens a executar são então definidas e podem ser colocadas nas saídas. O ciclo reproduz-se assim indefinidamente. É de referir que em cada ciclo todo o programa é executado. Por outro lado, desde que existam instruções de salto (ou de ramificação), elas não permitem senão incrementar o contador de programa. Esta noção tem uma importância fundamental no que respeita aos métodos de implantação dos sistemas sequenciais.

A sucessão "leitura das Entradas (E)-Processamento (P)- afectação das saídas (S)" corresponde a um ciclo síncrono quanto às entradas-saídas. É precisamente a forma mais clássica e a que apresenta menos riscos de acasos de funcionamento.

fig. 8 ciclo síncrono

Existem outros tipos de ciclo:

- ciclo síncrono quanto às entradas, assíncrono quanto às saídas

fig. 9 ciclo síncrono nas entradas e assíncrono nas saídas

As entradas são todas lidas no início do ciclo e afectam toda a duração do ciclo. Pelo contrário, as ordens calculadas são colocadas nas saídas à medida que forem processadas. Neste tipo de ciclo é preciso desconfiar dos acasos de ordens contraditórias ou de descontinuidade para as saídas.

- ciclo totalmente assíncrono

fig. 10 ciclo assíncrono

O valor das entradas é tido em conta à medida que as variáveis são processadas no programa e as saídas são assíncronas como no ciclo precedente. Este processamento utiliza numerosas variáveis internas para fixar ao longo do programa o valor de uma entrada. Efectivamente, é imperativo para a coerência de uma equação lógica, que as variáveis mantenham o mesmo valor durante o processamento da equação. Essa complexidade do programa pode ser vantajosa quando se pretendem criar redundâncias de processamento de uma equação associada às seguranças e necessitando de um tempo de resposta mais rápido.

e - estrutura geral

Para que haja o funcionamento cíclico, a memória é pilotada por um contador de programa, que pode ser um simples contador. Para os autómatos que realizam saltos complexos, o contador de programa está integrado no microprocessador, constituindo um registo.

A memória contem apenas instruções, que se organizam em dois blocos: uma parte, o código de operação, é transferido para o processador; uma outra, o endereço, é transferido para o bloco de entradas/saídas e indica a referência do operando para a instrução em curso. É de referir que esta parte indica também o valor de salto (JUMP) nos autómatos evoluidos, pelo que é transferida neste caso para o processador.

O bloco E/S (entradas/saídas) serve de orgão de ligação com os periféricos: memoriza os valores presentes nas linhas de entrada no instante de leitura das entradas; coloca os valores calculados nas linhas de saída.

O processador é a unidade de processamento lógico que executa os cálculos booleanos em função das instruções do programa. A unidade de processamento central (CPU) possui também um conjunto de variáveis internas utilizadas para memorizar temporariamente os dados, registos de tempo e de contagem, registos de índice,...

fig.11 Princípio de funcionamento de um autómato

Notas:

1) Chama-se registo a uma memória na qual se conserva temporariamente um bit ou uma palavra binária;

2) Acumulador é um registo especial que é utilizado para guardar os operandos e os resultados, quando do processamento;

3) CPU é a unidade de processamento central (Central Processing Unit).

2.3 As Entradas/Saídas (E/S)

As entradas/saídas (E/S ou I/O à inglesa), ligam o autómato aos orgãos exteriores do automatismo ou da instalação.

Os módulos de interface de entrada asseguram a adaptação de nível, o isolamento e a filtragem dos sinais provenientes dos diversos detectores e transdutores colocados na máquina. Estes estão ligados aos orgãos de comando:

- manuais: botões de pressão, comutadores, selectores, combinadores, etc.

- automáticos: fins de curso por acção mecânica, detectores indutivos ou capacitivos de proximidade, células fotoeléctricas, indicadores de velocidade, de nível, de pressão, etc.

Estes sinais de entrada, de proveniência e de natureza diversas, tensões alternadas ou contínuas, polaridades diferentes, de tipo "tudo ou nada", numéricos ou analógicos, têm que ser transformados antes de serem processados na unidade de processamento do autómato. Por outro lado, devem ser protegidos contra as sobretensões e os sinais parasitas, por vezes de valor elevado e que poderão ser considerados como um sinal e tratados como tal.

Os módulos de interface de saída, asseguram o nível do sinal de saída e o seu isolamento da electrónica do autómato; transmitem as ordens aos orgãos comandados: motores (por intermédio de contactores), electroválvulas eléctricas, hidráulicas ou pneumáticas, impressoras, sinalizadores luminosos, etc. Em função da natureza dos accionadores, os sinais de saída são amplificados em módulos estáticos a corrente contínua ou alternada, ou comandam relés electromagnéticos.

A separação galvânica de entradas e saídas

A separação galvânica permite a transmissão de sinais entre partes diferentes de uma instalação sem potencial de referência comum.

A aplicação aos autómatos programáveis implica uma clara separação entre a alimentação da parte de processamento do sinal e os circuitos de carga (entradas e saídas). Normalmente a separação de potenciais exige uma transformação dos sinais eléctricos numa outra grandeza física - a luz. Utilizam-se para isso dispositivos optoelectrónicos (semicondutores fotosensíveis). Nesses dispositivos optoacopladores, a transmissão do sinal de um circuito para outro, faz-se pela emissão luminosa de um díodo de arsenieto de gálio, emissor de infra-vermelhos. Por outro lado, o fototransistor inserido no outro circuito vai entrar em comutação em função da luz recebida.

fig. 12 Optoacoplador 4N25

Nota sobre optoacopladores:

A passagem de corrente no díodo leva o transistor a conduzir, como se tivesse corrente de base. Como no caso de um vulgar transistor, é necessário aplicar uma tensão ao colector para que o fototransistor funcione na região activa. Os dispositivos acoplados opticamente apresentam um isolamento típico da ordem dos milhares de Volt entre a entrada e a saída.

Quando se ligam ao autómato, sensores de dois terminais, tais como sensores fotoeléctricos ou de proximidade, o sinal de entrada pode ser erradamente considerado ON (ligado) por correntes de fuga (leakage currents). Para evitar esta situação, deve ligar-se uma resistência de drenagem, como na figura 13.

fig. 13 Resistência de drenagem na entrada

De igual modo, sempre que exista o risco de aparecimento de correntes de fuga que levem o transistor ou triac de saída a mau funcionamento, deve ligar-se uma resistência de drenagem como na figura 14.

fig. 14 Resistência de drenagem na saída

A protecção para cargas indutivas

Os receptores indutivos - bobinas de contactores, relés e electroválvulas - geram no corte, em função da sua indutância própria, picos elevados de tensão parasita que actuam em oposição à tensão de serviço. Estes picos de tensão podem atingir 4, 6 e mesmo 10 kV. Iremos distinguir os receptores a tensão contínua e os receptores a tensão alternada.

fig. 15 Protecção por díodo em roda livre

a) No que respeita ás bobinas de tensão contínua de pequena indutância, como é o caso dos pequenos relés, recomenda-se a ligação de um díodo em roda livre. A tensão de corte resulta fortemente atenuada por esta medida e reduz-se à queda de tensão no díodo (0,7 V). Neste caso, o tempo de amortecimento aumenta em função do valor da indutância.

b) Se se ligar um díodo de Zener em paralelo com a bobina, a tensão de corte ficará limitada ao valor da tensão de Zener, que é em geral de 30 V aproximadamente, para uma tensão de alimentação de 24V CC. A energia magnética acumulada na bobina escoa-se mais depressa que na montagem com o díodo. Para valores inferiores à tensão de Zener, o campo magnético anula-se sem atenuação. Daí resulta uma redução considerável do tempo de corte. A figura 16 apresenta uma ligação com díodo de Zener, vulgarmente utilizada nas saídas dos autómatos programáveis (saída a transistor).

fig. 16 Protecção por díodo de Zener

c) Em tensão alternada recomenda-se, em particular para o caso de bobinas a 220V CA, a utilização de de um circuito RC de protecção, em paralelo com a bobina (ex. R=50 Ohms; C=0.47uF).

fig. 17 Protecção por circuito RC, no caso de cargas indutivas em CA

Note-se que a utilização de elementos de acoplamento optoelectrónico nem sempre impede a destruição das placas, por sobretensão. Com efeito, na situação de sobretensão, todos os elementos colocados antes do optoacoplador podem ser destruídos, assim como o díodo emissor do optoacoplador.

i) módulos sem separação galvânica

A figura mostra um caso típico, onde se podem ver os blocos de filtragem e de adequação do nível de sinal.

fig. 18 módulo de entradas sem separação galvânica

ii) módulos com separação galvânica

fig. 19 módulos de entradas e saídas com separação por optoacoplamento

2.4. O Processador

A função do processador é a de ler permanentemente e a grande velocidade os estados lógicos (0 ou 1) dos sinais provenientes dos captores periféricos (entradas), em função do programa armazenado em memória e, no instante adequado, calcular e transmitir as ordens de saída para os accionadores.

Os circuitos a relés apresentam um tempo de resposta associado à colagem e descolagem dos contactos. Por sua vez, os elementos electrónicos apresentam um tempo de comutação (ex: passagem do transistor de saída da saturação ao corte). O autómato programável apresenta um tempo de resposta que é função da duração do ciclo. Com efeito, examinemos o intervalo de tempo que separa a alteração de uma entrada, da alteração da saída daí decorrente, no caso clássico de um ciclo síncrono em relação às entradas e ás saídas.

A situação mais desfavorável é a apresentada no gráfico da figura:

fig. 20 Cronograma mostrando o tempo de resposta do processador

Neste caso, o tempo de resposta a uma variação de estado de uma entrada pode estar compreendido entre um e dois ciclos.

O tempo de leitura do programa é evidentemente função do número de informações, mas, na maior parte dos casos, é da ordem dos milisegundos (inferior a 10 ms). Daí resulta que qualquer modificação do estado de uma entrada produz quase simultaneamente o sinal de saída correspondente que comanda o accionador.

2.5. As memórias

As memórias caracterizam-se pelo comprimento da palavra tratada, expressa em número de bits (dígito binário, binary digit)) e pelo número de milhares de palavras (de 8 bits (byte) ou de 16 bits) que pode armazenar. (k = kilo palavras = 1024 palavras).

O comprimento da palavra dá indicações sobre a complexidade da ordem que se pode escrever com uma palavra.

A capacidade de memória dos autómatos programáveis é variável, de 0.25 k palavras a 16 k palavras.

Tipos de memórias, utilizadas nos autómatos:

- RAM (Random Accesss Memory)

Estas memórias têm a vantagem de poder ser alteradas a cada momento, pois são memórias de escrita e de leitura (Read and Write Memories). São portanto muito utilizadas quer na fase de projecto e depuração do programa, quer na fase operacional, para guardar os dados e informações resultantes do processamento. Como este tipo de memórias é volátil (perde a informação em caso de corte de energia), torna-se necessário garantir a existência de baterias de alimentação.

- EPROM (Erasable Progammable Read Only Memory)

Estas memórias não perdem o seu conteúdo no caso de falha de tensão, mas não podem ser apagadas selectivamente, isto é, por endereço de memória, pois na operação de apagamento para reutilização, são utilizados raios ultravioletas (UV) que apagam toda a memória. Trata-se de um tipo de memória muito utilizado, mas que pressupõe uma prévia programação e testes utilizando a memória RAM. Só após a depuração do programa (verificação do seu funcionamento sem erros), se procede à gravação em EPROM.

- EEPROM (Electrical Erasable Programmable Read Only Memory)

Este tipo de de memória, de utilização recente mas rara, dado o seu preço elevado, permite a alteração dos valores guardados em cada endereço, por meios eléctricos.

2.6 A consola de programação

A consola de programação de um autómato é utilizada para a escrita e a depuração dos programas. Algumas consolas possibilitam a realização de testes e a colocação da instalação em funcionamento. Uma consola é constituida por um teclado e por um sistema de visualização.

O teclado é dotado da simbologia necessária à escrita do programa: letras, números, sinais específicos, etc. O sistema de visualização, que pode ser do tipo gráfico (visualização de diagramas de contactos, logigramas, diagramas Grafcet, etc) ou tipo ASCII (visualização das linhas de programa que são digitadas ou que estão guardadas em memória).

A consola de programação é, portanto, uma ferramenta fisicamente independente do autómato.

Uma consola possibilita, nomeadamente:

- a escrita do programa, a sua modificação ou anulação;

- a leitura do programa contido na memória;

- a operacionalização do programa, por simulação das entradas e execução das instruções;

- a transferência do programa para um dispositivo de armazenamento exterior (cassete audio, disquete, ou uma impressora);

- a verificação em cada instante e durante o funcionamento do autómato em modo normal, do estado dos detectores e accionadores, assim como do desenvolvimento da sequência de operações;

- a verificação e sinalização dos erros de programação (erros de sintaxe).

Trata-se portanto de uma ferramenta particularmente completa e que permite uma redução significativa do tempo de operacionalização de um determinado equipamento.

fig. 21 diagrama de blocos de um autómato com consola de programação

3. Concepção de um automatismo

3.1 Métodos de análise do funcionamento de um automatismo sequencial

.

Para analisar o funcionamento de um automatismo, o projectista dispõe de vários métodos de expressão.

a - Esquema eléctrico de contactos.

Pode raciocinar-se com base neste esquema, utilizando elementos em série e em paralelo.

fig. 22 Esquema eléctrico de contactos

Se "a" não está aberto (ausência de acção sobre "a") e se "b" está fechado (presença de acção sobre "b") ou se "s" está fechado (presença de acção sobre "s") e "d" não está aberto (ausência de acção sobre "d"), então "S é accionado.

b- Logigrama

Iremos relembrar as diversas funções lógicas e as suas expressões em linguagem booleana.

Seja um contacto "a" :

O contacto "a" pode ocupar duas posições: 0 (aberto) ou 1 (fechado).

fig. 23 Função E (AND)

fig. 24 Função OU (OR)

O exemplo da figura pode igualmente ser representado na forma gráfica bem conhecida dos profissionais de automatismos, com o auxílio dos símbolos E e OU.

fig. 25 Logigrama

Se houver ausência de acção sobre "a" ( a ) E presença de acção sobre "b" ( b) OU presença de acção sobre "a" E ausência sobre "d" ( d ), então a saída S será validada (activada).

c- Equações lógicas ou booleanas

São igualmente utilizadas equações lógicas para descrever o funcionamento dos automatismos.

A seguinte equação booleana é equivalente aos dois esquemas precedentes (figuras 22 e 25 ).

d- Diagrama funcional - Grafcet

Sempre que as especificações são expressas em linguagem corrente, existe um risco permanente de imcompreensão ou de malentendidos entre o redactor e o leitor de um caderno de encargos.

Com efeito, algumas palavras e expressões são pouco precisas, mal definidas, possuem vários sentidos, ou são retiradas de um calão técnico imcompreensível para os não-iniciados.

Por outro lado, a linguagem corrente revela-se mal adaptada a uma decrição precisa dos sistemas sequenciais, em particular sempre que estes possuem escolhas entre diversas opções possíveis ou sequências de desenvolvimento simultâneo (paralelo). É por essa razão que é útil dispor de uma ferramenta de representação de um caderno de encargos que seja normalizada, desprovida de ambiguidade e ao mesmo tempo, fácil de compreender e de utilizar.

O GRAFCET (Grafo de Comando Etapa-Transição), propõe-se responder a estas exigências.

(ver documento anexo: O GRAFCET - Diagrama funcional para automatismos sequenciais)

e - Organigrama

O organigrama é uma representação gráfica particularmente bem adaptada aos sistemas programados, mas que pode ter uma aplicação universal.

3.2 As escolhas tecnológicas

A partir do momento em que o projectista descreveu o funcionamento do automatismo, seja utilizando o GRAFCET ou o ORGANIGRAMA, ou qualquer outro meio de expressão, estamos em condições de proceder à escolha, entre as diversas soluções tecnológicas possíveis, para a realização da parte comando do automatismo. Com efeito, três grandes famílias tecnológicas estão ao dispor dos projectistas de automatismos: as soluções electromagnéticas, as electrónicas e as pneumáticas. Dentro de cada uma das famílias deve ter-se em consideração a natureza do processamento:

- lógica cablada para as electromagnéticas e pneumáticas,

- lógica cablada ou programada para a electrónica.

Uma terceira característica diz respeito ao tipo de utilização, ligado à natureza do sistema em construção: universal para os sistemas unitários ou semelhantes, específica para os sistemas repetitivos.

fig. 26 Quadro das tecnologias

Lógica cablada

O automatismo é realizado com a ajuda de módulos ligados entre si. O funcionamento não depende senão da cablagem; os módulos são electromagnéticos, eléctrónicos, pneumáticos ou fluídicos. A lógica cablada é bastante rápida quanto ao funcionamento, mas as ligações entre módulos limitam a acomplexidade e o volume dos equipamentos é grande.

Lógica programada

Um automatismo utilizando a lógica programada apresenta-se sob a forma de um computador, microcomputador ou de um autómato programável. O seu funcionamento depende do programa guardado em memória.

Autómatos Programáveis

Os autómatos programáveis são projectados para realizarem um ciclo de funcionamento automático a partir de um programa escrito com a ajuda de uma consola de programação.

Trata-se de um sistema de comando informatizado (geralmente baseado num microprocessador) dotado de interfaces para o comando de processos industriais sequenciais ou combinatórios, com uma linguagem de programação estudada para técnicos de várias especialidades (Mecânicos, Electricistas, Electrónicos, Técnicos de Automática).

Alguns autómatos possuem uma linguagem de programação adaptada aos métodos tradicionais (esquemas eléctricos de contactos, equações e esquemas lógicos), outros, mais evoluidos, permitem ainda a programação directa a partir do diagrama funcional GRAFCET.

Ver anexo 1.

4. Programação

Autómato SYSMAC C20K da OMRON

4.1 Áreas de memória

São necessários vários tipos diferentes de dados para um correcto e eficaz controlo. Para facilitar o manuseamento destes dados, o autómato programável possui diferentes áreas de memória para dados, cada uma delas com funções diferentes. As áreas normalmente acessíveis ao utilizador para uso na programação são denominadas de áreas de dados. A outra área de memória é a Memória de Programa, onde o programa do utilizador é guardada.

Iremos aqui descrever cada uma destas áreas. O nome, acrónimo (designação abreviada constituida pelas iniciais), limites e função de cada área está sumariadaa na tabela da figura. Com excepção da última área (Program Memory), todas as outras são áreas de dados.

(a) metade direita (b) metade esquerda (c) os números TC são utilizados para acesso a outras informações

fig. 27 Áreas de memória do autómato C20K

Bits de trabalho e palavras

Sempre que alguns bits ou palavras, em certas áreas de dados, não sejam utilizados para o fim a que se destinam, podem ser utilizadas na programação conforme as necessidades para controlar outros bits. Os bits e palavras disponíveis para esse efeito são designados por bits de trabalho (work bits) e palavras de trabalho (work words).

Flags e bits de controlo

Algumas áreas de dados contêm flags e/ou bits de controlo. As flags são bits que são colocados automaticamente ON ou OFF para indicar um determinado estado. Embora algumas flags possam ser colocadas ON ou OFF pelo utilizador, a maioria é apenas de leitura; não podem ser controladas directamente.

Os bits de controlo são colocados ON ou OFF pelo utilizador, para controlar aspectos específicos de funcionamento.

Estrutura da Área de Dados

Ao designar uma área de dados, é sempre necessário referir o acrónimo, com excepção das áreas IR e SR. Embora estes acrónimos sejam indicados frequentemente por questões de clareza, não são necessários nomeadamente na programação.Qualquer designação da área de dados sem acrónimo, subentende-se estar ou na área IR ou na área SR. Como os endereços destas duas áreas são contíguos, os endereços de palavra ou bit são suficientes para diferenciar as duas áreas.

A localização de um dado numa área qualquer, com excepçaõ da área TC, fica indicada peleo endereço. O endereço indica o bit e/ou a palavra na área onde se localiza o dado. A< área TR é constituida por bits individuais, usados para guardar condições de execução em pontos de ramificação dos diagramas de contactos. A área TC é constituida por números TC, cada um dos quais é utilizado para um temporizador específico, ou contador definido no programa.

As restantes áreas de dados (isto é, as áreas IR, SR, HR e DM) são constituidas por palavras, cada uma das quais com 16 bits, numeradas de 00 a 15 da direita para a esquerda. As palavras IR 00 e 01 são apresentadas na figura abaixo, com os bits respectivos. Neste caso, o conteúdo de todos os bits foi definido como sendo zero. O bit 00 é designado bit mais à direita; o bit 15, é designado o bit mais à esquerda.

fig.28

A área DM apenas é acessível por palavra; não é possível isolar um dado bit na área DM. Os dados das áreas IR, SR e HR são acessíveis seja por bit, seja por palavra, conforme a instrução que utiliza os dados.

Para designar uma destas áreas por palavra, tudo o que é necessário é o acrónimo, caso seja obrigatório, e a palavra de endereço de um ou dois dígitos. Para designar uma área por bit, a palavra de endereço tem que ser combinada com o número de bit, num endereço único de três ou quatro dígitos. Os dois dígitos mais à direita da designação de um bit têm que indicar um bit entre 00 e 15.

O mesmo número TC pode ser indicado para designar quer a palavra que contem o valor actual (PV, Present Value), do temporizador ou contador, quer o bit que funciona como flag de fim de contagem do temporizador ou contador.

fig. 29 exemplos de designações de bits e palavras.

Área IR

A área IR é utilizada quer como pontos de controlo de E/S (entrada/saída) quer como bite de trabalho, na manipulação e armazenamento de dados internos. A área é acessível quer por palavra, quer por bit. As palavras que podem ser utilizadas como pontos de controlo de E/S são chamadas de palavras E/S. Os bits das palavras E/S são chamados de bits E/S.

Se um dispositivo é uma entrad noo autómato, o bit associado é um bit de entrada; se o dispositivo envia uma saída do autómato, o bit associado é um bit de saída. Para activar uma saída, o bit associado deve ser posto ON.

Os bit E/S que não forem associados a pontos de E/S podem ser utilizados como bits de trabalho, salvo as devidas excepções (ver mapa de atribuição de endereços).

Utilização dos bits de entrada

Os bits de entrada podem trazer directamente sinais do exterior para o autómato e podem ainda ser usados de qualquer maneira na programação. Cada bit de entrada pode ser utilizado em tantas as instruções quantas as necessárias para o controlo. Não podem, no entanto ser utilizados em instruções de controlo de bit (OUT, DIFU e KEEP)

Utilização dos bits de saída

Os bits de saída são utilizados para fazer sair os resultados da execução do programa e podem ser utilizados de qualquer maneira na programação. Como as saídas são lidas apenas uma vez durante cada ciclo, qualquer bit de saída apenas pode ser usado numa instrução que controle o seu estado, incluindo OUT, KEEP, DIFU, DIFD e SFT. Se um bit de saída for utilizado em mais do que uma destasa instruções, apenas o estado da última constituirá a saída do autómato.

A tabela seguinte estabelece o mapa de endereços E/S do autómato C20K:

fig. 30 Tabela dos Input e Output bits do autómato C20K

Área SR

A área SR contem flags e bits de controlo utilizados para monitoração do funcionamento do sistema, para acesso a geradores de impulsos e para sinalização de erros. A área SR ocupa os endereços que vão da palavra 18 à 19 e os bits de endereço 1808 a1907.

A tabela junta faz a listagem das funções das flags e bits de controlo da área SR.

Desde que nada seja estabelecido em contrário, as flags estão OFF até a condição especificada acontecer, altura em que passam a ON. Os bits 1903 a 1907 são postos OFF quando o autómato executa a instrução END. Os restantes bits de controlo estão OFF até alteração pelo utilizador.

fig. 31 Tabela dos bits da área SR e respectivas funções

Ver a explicação promenorizada de cada bit no Operation Manual.

Área DM

A área DM é utilizada para guardar dados internos e transferência de dados, sendo apenas acessível por palavra. Os endereços vão de DM 00 a DM 63.

Embora constituídas por 16 bits, como qualquer outra palavra da memória, as palavras DM não podem ser endereçadas por bit, para utilização em instruções com operando de bit, como LOAD, OUT, AND ou OR.

A área DM preserva os dados mesmo quando se verifica corte de alimentação.

Área HR

A área HR é utilizada para guardar e manipular diversos tipos de dados, e pode ser acedida seja por palavra, seja por bit. Os endereços vão de HR 000 até HR 915. Os bits HR podem ser utilizados por qualquer ordem e podem ser programados as vezes que forem necessárias.

A área HR preserva os dados mesmo quando se verifica alteração do modo de operação do sistema ou corte de alimentação.

Área TC

A área TC é utilizada para a criação e rpogramação de temporizadores e contadores e guarda as flags de fim de contagem, os valores definidos (set values, SV) e os valores actuais (present values, PV) para os contadores e temporizadores. A gama vai de TC 00 a TC 47. Cada número TC é definido como contador ou como temporizador, pelas instruções seguintes: TIM, TIMH, CNT ou CNTR.

Uma vez definido por qualquer uma destas instruções, o número TC não pode ser redefinido no programa, usando a mesma ou outra instrução.

Área TR

A área TR possui oito bits que são utilizados apenas pelas instruções LD e OUT de modo a possibilitar determinados tipos de programação com ramificações do diagrama de contactos.

Os endereços TR vão de TR 0 a TR 7. cada um destes bits pode ser utilizado as vezes necessárias e na ordem desejada, desde que o mesmo bit TR não seja utilizado mais do que uma vez no mesmo bloco de instruções.

4.2 Terminologia

Existem dois tipos de instruções utilizadas na programação por diagrama de contactos ou diagrama de escada (ladder diagram): as instruções que correspondem a condições no diagrama e que apenas se utilizam na forma de instrução quando da passagem do programa para código mnemónico e as instruções que se utilizam à direita do diagrama de contactos e que são activadas de acordo com as condições existentes nas linhas de instrução que vão até elas.

A maior parte das instruções possui pelo menos um operando com elas associado. Os operandos indicam ou fornecem os dados sobre os quais vai incidir a acção da instrução. Estes dados podem ser introduzidos directamente, mas são normalmente indicados pelos endereços da sua localização em memória. Por exemplo, a instrução Move que tem IR 00 como operando origem, irá deslocar o conteúdo de IR 00 para uma outra localização. A outra localização é também designada por operando. Um bit cujo endereço é designado como operando é chamado de bit operando; uma palavra cujo endereço seja designado como operando é chamada de palavra operando.

4.3 O diagrama de contactos (Ladder Diagram)

O diagrama de contactos ou em escada, é constituido por uma linha ao alto à esquerda de onde partem linhas de ramificação para a direita (horizontais). A linha à esquerda é chamada de barramento (bus); as linhas que ligam ao barramento são chamadas de linhas de instrução. Ao longo das linhas de instrução existem condições que conduzem a outras instruções ao lado direito. As combinações lógicas destas condições determinam quando e como as instruções à direita são activadas. Na figura apresenta-se um diagrama de contactos.

fig.32 Exemplo de diagrama de contactos (ladder diagram)

Como se vê no diagrama, as linhas de instrução podem ramificar e voltar a juntar-se. O símbolo constituido por um par de linhas verticais é uma condição. As condições que não possuem linhas diagonais são chamadas condições normais e correspondem às instruções LOAD, AND ou OR. As condições com linhas diagonais são chamadas condições NOT ou inversoras e correspondem a LOAD NOT, AND NOT ou OR NOT. O número que encima cada condição indica o bit operando da instrução. É precisamente o estado lógico do bit associado a cada condição que determina a condição de activação das instruções seguintes. A função de cada uma das instruções que correspondem à condição é descrita mais abaixo. Antes disso iremos explicar alguma terminologia básica.

4.3.1 Terminologia Básica

Cada condição num diagrama de contactos ou está ON (é verdadeira, verifica-se) ou OFF (é falsa, não se verifica), dependendo do estado lógico do bit operando que lhe está associado. Uma condição normal está ON se o bit operando estiver ON; pelo contrário estará OFF se o bit estiver OFF. Em termos gerais utiliza-se uma condição normal sempre que se queira que algo aconteça quando um bit estiver ON e uma condição inversa quando se quizer que algo aconteça quando o bit estiver OFF:

fig.33 Condições normal e inversora

Condições de activação - Na programação por diagrama de contactos, a combinação lógica de condições ON e OFF antes de uma instrução determina a condição composta condicionante da activação da instrução. Esta condição que pode ser ON ou OFF, é chamada de condição de activação (execução) da instrução. Todas as instruções, com excepção das instruções LOAD, possuem condições de activação.

Bits operandos - Os operandos de cada uma das instruções do diagrama de contactos podem ser qualquer um dos bits das áreas IR, SR, HR e TC. Isto significa que as condições no diagrama de contactos podem ser determinadas por bits E/S (I/O), flags, bits de trabalho (work bits), temporizadores e contadores, etc. As instruções de leitura e de saída podem também utilizar a área de bits temporários TR, mas apenas em condições especiais.

Blocos lógicos - As condições associadas a cada instrução, são determinadas pela relação entre as condições estabelecidas pelas linhas de instrução associadas. Cada grupo de instruções que conjuntamente criam um resultado lógico é chamado de bloco lógico. Embora se possam projectar diagramas de contactos sem utilizar blocos lógicos individuais, é necessário compreender os blocos lógicos para que haja uma programação eficiente e torna-se mesmo essencial quando da passagem dos programas para código mnemónico.

4.3.2. Instruções de contactos

LOAD e LOAD NOT

A primeira condição que inicia qualquer bloco lógico num diagrama de contactos corresponde a uma instrução LOAD ou LOAD NOT.

fig.34 Instruções LOAD e LOAD NOT

Quando esta é a única condição na linha de instruções, a condição de activação da instrução à direita fica ON quando a condição estiver ON. Para a instrução LOAD (isto é, para uma condição normal), a condição de activação será ON quando IR0000 estiver ON; para a instrução LOAD NOT (isto é, uma condição inversora), a condição de activação estará ON quando IR0000 estiver OFF.

AND e AND NOT

Quando duas ou mais condições estiverem em série na mesma linha de instrução, a primeira corresponde a uma instrução LOAD ou LOAD NOT; as restantes condições correspondem a instruções AND e AND NOT. O exemplo seguinte mostra três condições que correspondem respectivamente, da esquerda para a direita, a uma instrução LOAD, uma AND NOT e a uma AND.

fig. 35 instruções AND e AND NOT

A instrução à direita terá uma condição de execução ON, apenas quando todas as três condições estiverem ON, isto é, quando IR0000 estiver ON, IR0100 estiver OFF e HR000 estiver ON.

programa

0000 LOAD 0000

0001 AND NOT 0100

0002 AND HR000

...

OR e OR NOT

Quando duas ou mais condições estiverem em linhas de instrução diferentes (paralelas) e que se ligam posteriormente, a primeira condição corresponde a uma instrução LOAD ou LOAD NOT; as restantes condições correspondem a instruções OR ou OR NOT.

fig. 36 instruções OR e OR NOT

A instrução à direita terá uma condição de execução quando qualquer uma das três condições estiver ON, isto é, quando IR0000 estiver OFF, quando IR0100 estiver OFF ou quando HR000 estiver ON.

programa

0000 LOAD 0000

0001 OR NOT 0100

0002 OR HR000

...

Combinando instruções AND e OR

Quando instruções AND e OR se combinam em diagramas mais complexos, podem por vezes ser consideradas individualmente, onde cada instrução estabelece uma operação lógica afectando a condição de execução e o estado (nível lógico) do bit operando.

Considere-se o exemplo da figura:

fig. 37 instruções AND e OR combinadas

Neste exemplo, existe um AND entre o estado de 0000 e o estado de 0001 que determinam a condição de execução com um OR com o estado de 0200. O resultado desta operação determina a condição de execução para um AND com o estado de 0002 que, por sua vez determina a condição de execução por um AND com a negação do estado de 0003.

programa

0000 LOAD 0000

0001 AND 0001

0002 OR 0200

0003 AND 0002

0004 AND NOT 0003

...

Em diagramas mais complexos, contudo, é necessário considerar blocos lógicos antes que uma condição de execução seja determinada para a instrução final e é nesses casos que as instruções AND LOAD e OR LOAD são utilizadas.

4.3.3 Instruções de Blocos Lógicos

As instruções de blocos lógicos não correspondem a condições específicas no diagrama de contactos; antes descrevem relações entre blocos lógicos. A instrução AND LOAD efectua o AND lógico entre as condições de execução de dois blocos lógicos. A instrução OR LOAD efectua o OR lógico entre as condições de execução de dois blocos lógicos.

AND LOAD

Embora simples na aparência, o diagrama da figura exige a utilização de uma instrução AND LOAD.

fig. 38 instrução AND LOAD

Os dois blocos lógicos estão assinalados por linhas a tracejado. A análise deste exemplo mostra que uma condição de execução ON só será produzida quando simultaneamente se verificarem:

1) qualquer uma das condições do bloco lógico da esquerda estiver ON (isto é, quando 0000 ou 0001 estiver ON) e

2) qualquer uma das condições do bloco lógico da direita estiver ON (isto é, quando 0002 estiver ON ou 0003 estiver OFF).

Analisando o diagrama em termos de instruções, a condição em 0000 seria uma instrução LOAD e a instrução seguinte pode ser uma instrução OR entre os estados de 0000 e de 0001. A condição em 0002 seria outra instrução LOAD e a condição seguinte uma instrução OR NOT, isto é, um OR entre o estado de 0002 e a negação de 0003. Finalmente para chegar à condição de execução à direita, seria necessária uma instrução AND entre os resultados das condições de execução destes dois blocos. A instrução AND LOAD permite-nos fazer isso.

programa

0000 LOAD 0000

0001 OR 0001

0002 LOAD 0002

0003 OR NOT 0003

0004 AND LOAD

...

OR LOAD

Embora se não descreva aqui com detalhe esta instrução, o diagrama seguinte vai exigir uma instrução OR LOAD o bloco lógico superior e o bloco lógico inferior. Teremos uma condição de execução ON para a instrução à direita do diagrama quando 0000 e 0001 estiverem ON ou quando 0002 estiver ON e 0003 estiver OFF.

fig. 39 instrução OR LOAD

programa

0000 LOAD 0000

0001 AND 0001

0002 LOAD 0002

0003 AND NOT 0003

0004 OR LOAD

...

4.3.4. Ramificação de linhas de instrução

Quando uma linha de instrução se ramifica em duas ou mais linhas, é por vezes necessário utilizar ou encravamentos (interlocks) ou bits temporários TR para guardar a condição de execução que existia no ponto de ramificação.

Esta situação decorre do facto de que a execução de uma linha de instruções se processa da esquerda para a direita até à instrução terminal à direita e, só depois se verifica o retorno ao ponto de ramificação para execução das instruções das linhas ramificadas. Se a condição de execução tiver mudado durante este período, perde-se a anterior condição de execução e não será possível uma execução correcta, sem que, de algum modo, se preserve a anterior condição. Os diagramas seguintes ilustram esta situação. Em ambos os diagramas, a instrução 1 é executada antes do retorno ao ponto de ramificação e da execução da instrução 2.

fig. 40 instruções ramificadas

Se, como se mostra no diagrama A, a condição de execução que existia no ponto de ramificação não for modificada antes do retorno à linha de ramificação (as instruções mais à direita não modificam a condição de execução), então a linha ramificada será executada correctamente e não será necessária qualquer medida específica de programação.

Se, como se mostra no diagrama B, existir uma condição entre o ponto de ramificação e a última instrução da linha de instrução superior, então a condição de execução no ponto de ramificação e a condição de execução no fim da linha superior poderão ser por vezes diferentes, tornando impossível assegurar a correcta execução da linha ramificada. O sistema apenas se lembra da condição de execução actual (isto é, a soma lógica para uma linha inteira) e não se lembra de somas lógicas parciais nos diversos pontos ao longo da linha.

Existem dois processos de construir programas com ramificações, de modo a garantir as condições de execução. Um deles utiliza os bits de armazenamento temporário TR; o outro, utiliza encrava-mentos (interlocks).

Os bits TR

A área de memória TR (Temporary Relay) possui oito bits, TR 0 a TR 7, que podem ser utilizados para armazenar temporariamente as condições de execução. Se se utilizar um bit TR como operando de uma instrução de saída (OUTput) colocada no ponto de ramificação, então a condição de execução existente será armazenada no bit TR indicado. O armazenamento das condições de execução, é uma aplicação especial da instrução OUTput. Ao retornar ao ponto de ramificação, o mesmo bit TR é utilizado como operando da instrução LOAD para restaurar a condição de execução que existia na altura em que o ponto de ramificação foi pela primeira vez atingido na execução do programa.

O diagrama B pode então ser escrito como na figura 41 de modo a assegurar uma execução correcta.

fig. 41

Em termos de instruções, o diagrama seria transcrito como segue: o estado de 0000 é lido (instrução LOAD), para estabelecer a condição de execução inicial. Esta condição activa agora a saída para o bit TR 0, para assegurar o armazenamento da condição no ponto de ramificação (instrução OUT TR 0). Escreve-se então uma instrução AND entre a condição de execução e o estado de 0001, sendo então executada a instrução 1. A condição de execução que estava armazenada no bit TR 0 é então lida (instrução LOAD TR 0), sendo a instrução 2 então executada.

programa

0000 LOAD 0000

0001 OUT TR 0

0002 AND 0001

0003 INSTRUÇÃO 1

0004 LOAD TR 0

0005 AND 0002

0006 INSTRUÇÃO 2

O exemplo seguinte apresenta uma aplicação que utiliza dois bits TR.

fig. 42 utilização de bits TR para solução de ramificações

Neste exemplo, TR 0 e TR 1 são utilizados para guardar as condições de execução nos pontos de ramificação. Após a execução da instrução 1, a condição de execução guardada em TR1 é lida para a execução de um AND com o estado de 0003. A condição de execução guardada em TR 0 é lida duas vezes, a primeira vez para um AND com o estado de 0004 e a segunda para um AND com o inverso do estado de 0005.

Os bits TR podem ser utilizados tantas vezes quantas as necessárias, desde que o mesmo bit TR não seja utilizado mais do que uma vez no mesmo bloco de instruções. Nesse caso um novo bloco de instruções recomeça cada vez que a execução retorna ao barramento. Se forem necessários mais do que oito pontos de ramificação no mesmo bloco de instruções, então torna-se necessário utilizar encravamentos.

Ao desenhar diagramas de contactos, deve cuidar-se em não utilizar bits TR, a não ser que sejam efectivamente necessários.

Encravamentos

O problema da preservação das condições de execução em pontos de ramificação, pode também ser resolvido utilizando as instruções Interlock IL(02) e Interlock Clear ILC(03). Quando uma instrução de encravamento é colocada num ponto de ramificação de uma linha de instrução, e a condição de execução para a instrução de encravamento estiver ON, cada ramo é considerado como sendo uma nova linha de instruções, com a primeira condição em cada ramo correspondendo a instruções LOAD ou LOAD NOT. Se a condição de execução para a instrução de encravamento estiver OFF, todas as instruções à direita dos ramos ligados ao ponto de ramificação recebem uma condição de execução OFF, até à linha de instrução de Interlock Clear.

O diagrama B da figura 40 pode ser corrigido por meio de instruções de encravamento. Como se vê pela figura, isso requere mais uma linha de instrução para a instrução Interlock Clear.

fig. 43 solução de ramificação com encravamento

Se 0000 estiver ON, o estado de 0001 e o estado de 0002 determinam respectivamente as condições de execução para as instruções 1 e 2. Como 0000 está ON isso leva ao mesmo resultado que efectuar um AND aos estados destes dois bits, como ocorreria se não usasse encravamento, isto é, as instruções Interlock (IL) e Interlock Clear (ILC) não afectam a execução. Se 0000 estiver OFF, a instrução de encravamento produz uma condição de execução OFF para as instruções 1 e 2, pelo que a execução continuará com a linha de instrução seguinte à linha que contem a instrução Interlock Clear.

Como os ramos que saem de um ponto de ramificação com encravamento, constituem linhas de instrução independentes, as secções de programas com encravamento, podem ser redesenhadas sem o ponto de ramificação. O diagrama seguinte apresenta o mesmo comportamento que o diagrama da figura anterior, sendo implementado da mesma maneira e com as mesmas instruções.

fig. 44 forma simplicada sem ramificações

4.3.5 Instruções de Salto

Uma determinada secção de um programa pode ser saltada, em função de uma dada condição de execução. Embora isso seja semelhante ao que acontece no caso da condição de execução de uma instrução de encravamento ser OFF, no caso do salto (Jump), os operandos das instruções mantêm o estado. As instruções de salto podem assim ser utilizadas para controlar dispositivos que exigem saídas permanentes, isto é, equipamentos pneumáticos ou hidráulicos, enquanto os encravamentos podem ser utilizados para dispositivos que não exigem saídas permanentes, como os electrónicos.

Obtem-se um salto por utilização da instrução Jump (JMP(04)) e da instrução Jump End (JME(05)). Se a condição de execução para uma instrução de salto for ON, o programa é executado normalmente como se o salto não existisse. Pelo contrário, se a condição for OFF, a execução do programa é transferida para a instrução Jump End sem modificação do estado do que estiver entre a instrução Jump e Jump End. Na realidade existem dois tipos de saltos.

As instruções Jump e Jump End são associadas a números entre 00 e 08. O número de salto utilizado define o tipo de salto.Os saltos com números entre 01 e 08 apenas podem ser utilizados uma vez numa instrução Jump e uma vez numa instrução Jump End. Quando uma instrução Jump com algum destes números é executada, a execução transfere-se imediatamente para a instrução seguinte à Jump End com o mesmo número, como se as instruções existentes entre as duas não existissem. O diagram B do exemplo dado anteriormente para o bit TR e o encravamento pode agora ser redesenhado com um salto. Embora se tenha usado o número 01 para o salto, qualquer número entre 01 e 08 serviria, desde que não tivesse ainda sido utilizado noutra parte do programa.

fig. 45 Diagrama B: corrigido com uma instrução Jump

O outro tipo de salto é criado com um salto de número 00. Podem criar-se tantos saltos 00 quantos quizermos, podendo ser utilizados consecutivamente sem uma instrução Jump End entre eles.

A execução de programas com múltiplas instruções Jump 00 para uma única instrução Jump End, assemelha-se à de secções de programa com encravamentos. O exemplo da figura resolve por meio de saltos de tipo JMP 00, o diagrama de contactos da figura 42.

fig. 46 Utilização de múltiplos saltos JMP 00.

4.3.6 Controlo do estado de bits

Existem cinco instruções que podem ser utilizadas para controlar o estado individual de bits: Output ou OUT, Output NOT ou OUT NOT, Differentiation Up ou DIFU, Differentiation Down ou DIFD e KEEP. Todas estas instruções aparecem como última instrução de uma linha de instrução e possuem um endereço de bit como operando. Embora estas instruções sejam utilizadas para colocar ON ou OFF bits de saída da área IR (isto é, enviar ou parar sinais de saída para dispositivos exxternos), são também utilizados para controlar o estado de outros bits na área IR ou noutras áreas.

OUT e OUT NOT

As instruções OUT e OUT NOT são utilizadas para controlar o estado do bit operando em função da condição de execução.

Com a instrução OUT, o bit operando ficará ON enquanto a condição de execução estiver ON e comutará para OFF enquanto a condição de execução estiver OFF.

Com a instrução OUT NOT, o bit operando ficará ON enquanto a condição de execução estiver OFF e comutará para ON enquanto a condição de execução estiver ON.

No exemplo da figura

fig. 47 instruções OUT e OUT NOT

o bit 0500 ficará ON enquanto 0000 estiver ON e o bit 0501 ficará OFF enquanto 0001 estiver ON. Neste caso 0000 e 0001 são bits de entrada (input bits) e 0500 e 0501 são bits de saída (output bits) associados a dispositivos controlados pelo autómato.

Differentiation Up e Down

As instruções Differentiation Up e Differentiation Down são utilizadas para colocar ON o bit operando durante o decurso de um ciclo (scan time). A instrução Differentiation Up activa o bit operando durante um ciclo, após a condição de execução, quando esta transita de OFF para ON; a instrução Differentiation Down activa o bit operando durante um ciclo, após a condição de execução, quando esta transita de ON para OFF. O exemplo seguinte mostra os mesmos bits E/S, mas desta vez são controlados pelas instruções Differentiation Up e Differentiation Down.

fig. 48 instruções Differentiation Up e Differentiation Down

Neste exemplo, o bit 0500 passará a ON durante um ciclo, após 0000 passar a ON. No ciclo seguinte, a instrução DIFU 0500 colocará o bit 0500 OFF, independentemente do valor de 0000. Por seu lado, bit 0501 passará a ON durante um ciclo, após 0001 passar a OFF. No ciclo seguinte, a instrução DIFD 0501 colocará o bit 0501 ON, independentemente do valor de 0001.

Keep

A instrução KEEP é utilizada para manter o estado do bit operando, com base em duas condições de execução. Para isso, a instrução KEEP está ligada a duas linhas de instrução. Quando a condição de execução existente no fim da primeira linha de instrução estiver ON, o bit operando da instrução KEEP é activado ON.Quando a condição de execução existente no fim da segunda linha de instrução estiver ON, o bit operando da instrução KEEP é activado OFF.

O bit operando de um ainstrução KEEP mantem o estado ON ou OFF, mesmo se estiver inserido numa secção de um diagrama com encravamento, enquanto a condição de execução da instrução de encravamento estiver ON.

No exemplo da figura, HR 000 ficará ON quando 0002 estiver ON e 0003 estiver OFF. HR 000 manterá o estado ON até que ou 0004 ou 0005 fique ON.

fig. 49 instrução KEEP

Bits auto-alimentados

Embora a instrução KEEP possa ser utilizada para criar bits auto-alimentados, é por vezes necessário projectá-los de outro modo, de forma a poderem ser desligados (OFF), mesmo numa secção de um programa com encravamento.

Para criar um bit auto-alimentado, o bit operando de uma instrução Output é usado como condição para a mesma instrução de Output num OR, de forma que bit operando da instrução Output permanecerá ON ou OFF até que exista mudança noutro bit. É usado um outro bit, pelo menos, para funcionar como Reset. Sem isso seria impossível retirar o bit operando do estado em que ficar.

O diagrama seguinte é uma versão do diagrama da figura 49, mas utilizando um bit auto-alimentado.

fig. 50 bit auto-alimentado

Neste exemplo, são utilizados dois bits de reset, isto é, HR 000 é colocado OFF, seja por 0004, seja por 0005 ficarem ON.

END

A última instrução de qualquer programa tem que ser uma instrução END. Quando a CPU varre o programa, executa todas as instruções até encontrar a primeira instrução END, antes de retornar ao início do programa e recomeçar a execução novamente.

fig. 51 instrução END