Buscar

no(profim)tas-AR-EI

Prévia do material em texto

INSTITUTO POLITÉCNICO DE BRAGANÇA 
ESCOLA SUPERIOR DE TECNOLOGIA E GESTÃO 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Notas de Apoio à Disciplina de 
Automação e Robótica 
 
 
Engenharia Informática 
 
 
 
 
 
 
 
 
 
 
Paulo Jorge Pinto Leitão 
 
 
 
 
 
Bragança, Setembro de 2004 
 
 
Automação e Robótica 2
Índice 
1 AUTOMAÇÃO DE PROCESSOS 5 
1.1 Introdução aos Autómatos Programáveis 6 
1.2 Arquitectura dos Autómatos Programáveis 7 
1.2.1 Unidade Central de Processamento 8 
1.2.2 Memória 9 
1.2.3 Unidade de programação 11 
1.2.4 Módulos de Entrada e Saída 12 
1.2.5 Fonte de Alimentação 13 
1.2.6 Cartas Especiais 13 
1.3 Funcionamento 14 
1.4 Aplicações dos Autómatos Programáveis 15 
2 PROGRAMAÇÃO BÁSICA DE AUTÓMATOS PROGRAMÁVEIS 17 
2.1 Escrita de programas 17 
2.1.1 Fluxogramas e Algoritmia 17 
2.1.2 Linguagens de Programação para Autómatos 20 
2.1.3 Procedimentos básicos para a escrita de um programa 20 
2.2 Endereçamento da memória 21 
2.3 Instruções Básicas 22 
2.3.1 LOAD 22 
2.3.2 OUTPUT 22 
2.3.3 AND 23 
2.3.4 OR 24 
2.3.5 END 24 
2.3.6 Instruções Lógicas de Bloco 26 
2.3.7 Combinação de instruções AND LOAD e OR LOAD 27 
2.3.8 Execução de Várias saídas 29 
2.3.9 SET e RESET 29 
2.3.10 DIFFERENTIATE UP, DIFFERENTIATE DOWN 30 
2.3.11 Instruções de Bifurcação 30 
2.3.12 KEEP 31 
2.4 Temporizadores 34 
2.4.1 Temporizador ao Impulso 36 
2.4.2 Temporizador após a operação 37 
2.4.3 Temporizador de alta velocidade 38 
2.5 Contadores 38 
2.5.1 CNT 38 
2.5.2 Contador reversível CNTR 39 
2.5.3 Exemplo de aplicação 40 
2.6 Instruções de Manipulação de Dados 41 
 
Automação e Robótica 3
2.6.1 MOVE 41 
2.6.2 MOVE NOT 42 
2.6.3 Instruções Diferenciais 42 
2.6.4 Endereçamento Indirecto 43 
2.7 Interrupções 43 
2.8 Subrotinas 45 
3 MODELAÇÃO DE SISTEMAS COMPLEXOS CONDUZIDOS POR EVENTOS 47 
3.1 Introdução ao Grafcet 47 
3.2 Especificação Funcional e Tecnológica 48 
3.2.1 Especificação Funcional 48 
3.2.2 Especificação Tecnológica 48 
3.3 Conceitos Básicos do Grafcet 48 
3.3.1 Etapas 48 
3.3.2 Transições 49 
3.4 Princípio de Funcionamento 49 
3.4.1 Inicialização 50 
3.4.2 Validação 50 
3.4.3 Disparo de uma transição 50 
3.5 Representação de Sequências Simultâneas e Alternativas 53 
3.5.1 Sequências Simultâneas - Paralelismo Estrutural (Nó AND) 53 
3.5.2 Sequências Alternativas - Paralelismo Interpretado (Nó OR) 54 
3.6 Conceitos Complementares 56 
3.6.1 Acção Condicional 56 
3.6.2 Temporização 56 
3.7 Cooperação entre Processos 57 
3.7.1 Sincronização 57 
3.7.2 Partilha de Recursos 60 
3.7.3 Subtarefas 62 
3.8 Análise e Validação de Grafcet 65 
3.8.1 Introdução à Análise de Grafcet 66 
3.8.2 Grafcet Autónomo 66 
3.8.3 Gráfico das situações acessíveis 66 
3.8.4 Análise de Grafcet 67 
4 INTRODUÇÃO À ROBÓTICA INDUSTRIAL 72 
4.1 Introdução 72 
4.2 Estrutura e Configuração de Robôs 73 
4.2.1 Robôs Cartesianos ou Rectangulares 74 
4.2.2 Robôs Cilíndricos ou Esféricos 74 
4.2.3 Robôs Articulados 75 
4.2.4 Movimento do Robô 76 
4.2.5 Accionamento dos Robôs 77 
 
Automação e Robótica 4
4.2.6 Tipos de Controlo de Movimento 78 
4.3 Sensores e Actuadores para Robôs 78 
4.3.1 Sensores de Tacto 79 
4.3.2 Sensores de proximidade 79 
4.3.3 Sistemas de visão artificial 80 
4.3.4 Garras Mecânicas 80 
4.3.5 Garras Magnéticas 81 
4.3.6 Garras de Sucção 81 
4.3.7 Garras com outros princípios de funcionamento 81 
4.3.8 Ferramentas para robôs 82 
4.4 Segurança na Robótica 82 
4.4.1 Medidas de Protecção passivas 83 
4.4.2 Medidas de Protecção Activas 83 
4.5 Operação e Programação de Robôs Industriais 84 
4.5.1 Métodos de Programação de Robôs 84 
4.5.2 Programação “on-line” 84 
4.5.3 Programação “off-line” 85 
4.6 Aplicações Industriais 85 
4.6.1 Manuseamento de materiais 85 
4.6.2 Pintura 86 
4.6.3 Soldadura 87 
4.6.4 Operações de Montagem 87 
5 REFERÊNCIAS BIBLIOGRÁFICAS 89 
ANEXO - REPRESENTAÇÃO DA INFORMAÇÃO 90 
Sistemas de Numeração 90 
Sistema Decimal 91 
Sistema Binário 91 
Sistema Hexadecimal 92 
Conversão entre Bases 93 
Conversão de Decimal para Outra Base 93 
Conversão de Outra Base para Decimal 94 
Sistemas de Codificação Avançados 94 
BCD (Binary Coded Decimal) 94 
Código GRAY 95 
Código ASCII 95 
Álgebra de Boole 96 
Operadores 96 
Teoremas 97 
Leis de Morgan 97 
 
 
Automação e Robótica 5
1 AUTOMAÇÃO DE PROCESSOS 
Nos últimos anos, tem-se assistido a uma mudança drástica dos esquemas de 
produção. Isto deve-se, por um lado à crescente competição entre as empresas, por 
outro, ao enorme desenvolvimento das tecnologias que envolvem micro-
controladores, robôs, máquinas de controlo numérico, redes de comunicação, 
inteligência artificial, etc. 
Em abstracto, todas as estratégias de produção visam um conjunto de objectivos, 
que na realidade corresponde a um só mais lato: o aumento da competitividade. Não 
é correcto dizer-se que o objectivo é o aumento da produtividade, pois de que serve 
produzir mais se não houver clientes para os produtos? 
Assim, automatização industrial poderá ser definida pelo conjunto de tecnologias 
relacionadas com a aplicação de equipamentos (mecânicos, electrónicos, baseados em 
computador, etc.) em sistemas industriais de produção, e que com ela é conseguido 
um aumento de competitividade (em termos de custos, qualidade, disponibilidade e 
inovação). 
Um sistema automatizado pode contribuir para o aumento da competitividade da 
empresa através da: 
− Redução de custos de pessoal: a redução de custos de pessoal obtém-se, por 
exemplo, com a automatização das máquinas (tem o seu custo...) ou com a 
automatização do controlo e planeamento da produção. 
− Redução de custos de stock (intermédios e terminais): devido ao controlo e 
planeamento da produção, que visa, entre outros aspectos, atingir stocks 
intermédios mantidos ao mínimo (stock zero), disponibilidade de produtos 
(atraso zero), optimização de compras graças ao controlo de produção em tempo 
real, etc. 
− Aumento da qualidade dos produtos: utilização de máquinas mais precisas do 
que o homem, o que garantem melhores características de repetibilidade 
(qualidade constante, não dependente de turnos particulares). 
− Maior disponibilidade dos produtos: redução do número de avarias. 
− Aumento da evolutibilidade: menos tempo necessário para o projecto, 
planeamento e fabrico de novos produtos, associado à utilização de máquinas 
programáveis aptas a desempenhar diferentes operações. 
− Aumento da flexibilidade da produção: resposta rápida às solicitações do 
mercado e capacidade de operar diferentes variantes de produtos. 
 
Um dos dispositivos mais importantes num sistema automatizado é o autómato 
programável (PLC - Programmable Logic Controller), que pode ser definido como um 
dispositivo electrónico e programável, destinado a comandar e controlar, em 
ambiente industrial e em tempo real, processos produtivos. 
O PLC surgiu com o objectivo de substituir os sistemas de controlo, desenvolvidos 
em lógica cablada, vulgarmente utilizados na indústria. Esta lógica cablada recorre à 
utilização de relés electromecânicos e de blocos lógicos interligados entre si, que 
apresenta algumas desvantagens, como sejam a complexidade de expansão e de 
alteração nas funções a desempenhar, os custos envolvidos na concepção do sistema 
 
Automação e Robótica 6
de controlo e a complexidade de realizar manutenção (por exemplo, detectar o 
estado de um sistema que engloba 1000 sensores e actuadores, é bastante complexo 
em lógica cablada, pois é necessário verificar localmente cada um dos dispositivos). 
 
1.1 INTRODUÇÃO AOS AUTÓMATOS PROGRAMÁVEIS 
O PLC foi inicialmente concebido por um grupo de engenheiros da General Motors 
em 1968, tendo em mente algumas especificações básicas [Simpson, 94; Warnock, 88]: 
• Facilidade de programação e reprogramação; 
• Facilidade de manutenção e reparação, de preferência utilizando módulos 
plug-in; 
• Redução de dimensões em relação a um sistema equivalente em lógica 
cablada; 
• Redução de custos. 
Estes controladores programáveispretendiam, na altura em que foram concebidos, 
fornecer alguma flexibilidade de controlo, baseada na programação e modularidade 
de funções, além de reduzir o tempo de concepção e de instalação de sistemas de 
controlo. 
 
Figura 3.1 – Exemplo de um Autómato Programável 
O sucesso que se seguiu à introdução de PLCs no controlo de processos, provocou 
um incremento de grupo de engenheiros a estudar esta tecnologia emergente. 
Naturalmente e rapidamente, foi necessário criar funcionalidades adicionais aos PLCs. 
O conjunto de instruções disponíveis para a sua programação cresceu rapidamente 
desde as simples instruções lógicas (E, Ou, Negação, etc) para instruções avançadas, 
que incluíam contadores e temporizadores, e posteriormente, para instruções 
matemáticas avançadas. O desenvolvimento a nível do hardware também se verificou 
com o aumento das capacidades de memória e o aumento do número de entradas e 
saídas disponíveis. 
As possibilidades de comunicação surgiram aproximadamente em 1973. O primeiro 
sistema foi o Modbus da Modicon. Esta funcionalidade, permite que um PLC possa 
comunicar com outro PLC para trocar e partilhar informações, além de poderem estar 
afastados do processo que controlam. A falta de estandardização associada à mudança 
 
Automação e Robótica 7
contínua da tecnologia e aos protocolos de comunicação incompatíveis, faz com que 
as comunicações entre PLC´s sejam um pesadelo. 
Nos anos 80 houve um esforço para normalizar as comunicações entre PLCs, com a 
General Motors a desenvolver um protocolo standard para a indústria da manufactura, 
o MAP (Manufacturing Automation Protocol). Mais tarde, tentou-se desenvolver um 
novo protocolo não tão pesado do que o anterior, designado por Fieldbus, mas a falta 
de normalização deu origem a vários standards de facto, desenvolvidos por diferentes 
fabricantes de tecnologia de automação. 
Nos anos 90 a grande novidade foi a tentativa de normalizar as várias linguagens de 
programação de PLC´s. Deste modo, existe a possibilidade de programar PLCs 
utilizando diagramas de blocos, lista de instruções, C e texto estruturado ao mesmo 
tempo. 
Actualmente existem mais de 50 fabricantes diferentes de autómatos 
programáveis, cada um dos quais apresenta diferentes gamas de autómatos com 
diferentes funcionalidades, diferentes linguagens de programação e diferentes 
protocolos de comunicação. Dos diversos fabricantes de autómatos programáveis, 
destacam-se: Siemens, Omron, Schneider, Rockwell, Mitsubishi, Telemecanique, AEG, 
Allen-Bradley, Fagor, Saia e Fatrónica. 
O rápido crescimento do mercado (principalmente a partir da década de 80), 
associado à grande variedade de PLCs disponíveis, fez com que os sistemas de 
controlo previamente utilizados na indústria, se tornassem rapidamente obsoletos, 
principalmente devido ao facto de apresentarem pouca flexibilidade. Actualmente, os 
autómatos programáveis são os componentes fulcrais no desenvolvimento de 
aplicações de automação industrial, dadas as suas características, das quais se 
destacam: 
• Baixo custo e um vasto domínio de aplicações; 
• Instalação e manutenção simples e barata; 
• Substituição directa de automatismos baseados em tecnologias cabladas; 
• Linguagens de programação adaptadas aos automatismos e de simples 
percepção; 
• Elevada flexibilidade: reprogramável, modular, etc; 
• Adaptação a ambiente industrial, sendo robusto contra a humidade, choque, 
poeiras e ruído electromagnético. 
Uma última característica e vantagem é o facto das dimensões de um PLC serem 
cada vez mais reduzidas, necessitando de um menor espaço físico para a sua 
implementação. 
 
1.2 ARQUITECTURA DOS AUTÓMATOS PROGRAMÁVEIS 
Independentemente do fabricante, um PLC possui um conjunto de módulos comuns 
e um conjunto de características similares. Genericamente, a arquitectura de um 
autómato programável assenta nos seguintes blocos funcionais: unidade central de 
 
Automação e Robótica 8
processamento, memória, módulos de entrada e saída, fonte de alimentação e 
unidade de programação. 
Basicamente, o módulo de entrada adquire o estado do mundo exterior e armazena 
esses valores na memória. A execução do programa, também ele armazenado na 
memória, permite de acordo com os valores das entradas tomar decisões de acções a 
realizar, através do módulo de saída. O programa de software que gere o 
funcionamento do sistema de controlo que se pretenda que o PLC realize, é criado 
utilizando uma linguagem de programação adequada e transferido para o PLC através 
de uma unidade de programação. 
A potencialidade de cada autómato programável pode ser analisada atrás da 
capacidade de endereçamento, conjunto de instruções, número de entradas e saídas, 
número de cartas especiais, assim como o tempo de ciclo, as suas capacidades de 
comunicação e a facilidade de utilização. 
 
Memória
Fonte de
Alimentação
CPU
E
nt
ra
da
s
S
aí
da
s
Unidade de
Programação
Mundo
Exterior
Mundo
Exterior
 
Figura 3.2 - Arquitectura de um PLC 
Cada um destes blocos será abordado mais aprofundadamente nos pontos que se 
seguem, sendo para cada um deles referidas as suas principais funcionalidades. 
 
1.2.1 Unidade Central de Processamento 
A Unidade Central de Processamento, designada por CPU, é o cérebro do PLC, 
tendo por função o controlo e supervisão de todas as suas actividades, assim como a 
gestão do fluxo de informação no seu interior, a partir da execução de um programa 
que se encontra armazenado em memória (normalmente EEPROM). 
O CPU é constituído genericamente por um microprocessador e por uma pequena 
memória interna. Este microprocessador é controlado por um programa especial, 
designado por sistema operativo, e que é armazenado de forma permanente na 
memória. As funções do sistema operativo são criar uma plataforma de trabalho que 
permita ao microprocessador, entre outras funções, o controlo, o processamento e a 
comunicação. Durante a execução do programa de controlo sobre o sistema operativo, 
o CPU realiza a gestão da memória, a monitorização das entradas e a actualização das 
saídas. 
Um CPU tem tipicamente as seguintes funções: 
 
Automação e Robótica 9
• Operação de entrada e saída, que permitem ao PLC comunicar com o mundo 
exterior, através da transferência de dados para os módulos de entrada e saída; 
• Operações aritméticas e lógicas, que são executadas na Unidade de Lógica 
Aritmética (ALU). A ALU é capaz de executar, entre outras, as operações de 
adição, subtracção e comparação. Para efectuar uma operação, a ALU 
necessita que lhe sejam fornecidos dois operandos e um operador, sendo os 
resultados armazenados na memória temporária ou utilizados de imediato para 
o processamento, conforme as instruções do programa; 
• Leitura e actualização do conteúdo da memória, que podem ser dados sobre o 
estado do sistema ou instruções contidas no programa; 
• Operação de salto, que permitem que na execução de um programa, seja 
possível saltar algumas porções desse programa sem que estas sejam 
executadas. 
Adicionalmente, ao CPU existe um relógio que gera uma frequência a partir de um 
oscilador externo, que irá determinar a velocidade de operação do PLC e fornece a 
sincronização para todos os elementos do sistema. 
Alguns PLCs, normalmente os de gama alta, destinados a tarefas de controlo 
complexas, possuem CPUs com mais de um microprocessador. A vantagem é a 
possibilidade de multiprocessamento, o que permite uma maior velocidade de 
processamento, através da divisão das tarefas de controlo e de comunicação. 
Uma condicionante a que os CPUs devem estar preparados é a imunidade ao ruído 
eléctrico proveniente por exemplo de motores trifásicos. Além de serem fisicamente 
robustos para suportarem ambientes hostis, os PLCs já possuem, actualmente, rotinas 
que verificam que a memória do PLC não foi corrompida por ruído ou outros 
problemas, permitindo assim o bom funcionamento do equipamento. 
 
1.2.2 Memória 
O PLC necessita de armazenar a informaçãoque recebe do exterior através das 
unidades de aquisição de informação e guardá-la para posterior processamento, assim 
como toda a informação resultante do processamento. Como é implementada esta 
possibilidade de armazenamento de informação? 
Num PLC é possível encontrar dois tipos de memórias quanto à tarefa a realizar: 
memória de sistema e memória do utilizador [Almeida, 93]. A primeira contém todo o 
programa que permite ao PLC realizar o conjunto de operações que caracterizam o 
seu funcionamento e assegurar a comunicação entre o utilizador e o processador e 
ainda traduzir a linguagem do utilizador para linguagem máquina. A memória do 
utilizador destina-se ao armazenamento do programa de controlo e da informação que 
circulará no PLC. 
A capacidade de memória é expressa em termos do número de grupos de 8 bits 
(Binary Digits), designados por bytes, que possui. É vulgar dizer que um PLC possui 48 
Kbytes de memória, o que significa que poderá armazenar 48 mil bytes de informação 
ou 384000 bits. 
 
 
Automação e Robótica 10
0 1 2 3 4 
 
5 6 7 8 9 
 
10 11 12 13 14 
 
15 16 17 18 19 
 
Figura 3.3 -Representação da memória de um computador 
A memória pode ser comparável a um conjunto de gavetas ou registos, cada uma 
das quais bem definida por um rótulo ou endereço, onde é possível colocar ou ir 
buscar informação binária (estrutura sequencial e ordenada de células onde é possível 
guardar e manipular toda a espécie de informação). 
Cada célula de memória tem um endereço que indica a sua posição relativa, 
permitindo referenciarmos a informação armazenada numa célula de memória como o 
conteúdo dessa posição. Assim, a indicação do endereço de uma posição de memória 
permite ler o seu conteúdo e/ou modifica-lo. 
O acesso a estas células de memória é do tipo aleatório, isto é, não é preciso ler o 
conteúdo de todas as gavetas anteriores a uma que contém a informação pretendida, 
o que permite uma velocidade de acesso bastante grande. 
As memórias podem ser classificadas de acordo com diferentes parâmetros. Assim, 
existem dois tipos de memórias, quanto à possibilidade de armazenamento da 
informação após se desligar a alimentação: as memórias que retém o seu conteúdo 
mesmo que não exista alimentação são designadas por memórias não voláteis. Por 
outro lado, existem as memórias voláteis, que apenas armazenam a informação 
enquanto estiver alimentada, perdendo-a quando for desligada a alimentação. 
Por outro lado, as memórias podem ser classificadas quanto à possibilidade de 
alteração do seu conteúdo, sendo de seguida descritos os principais tipos de memória 
[Simpson, 94]. 
Read Only Memory (ROM) 
A ROM (Read Only Memory) é uma memória apenas de leitura, isto é, a informação 
nela armazenada durante o processo de fabrico é permanente, não se perdendo 
quando se desliga a alimentação. Este tipo de memória é utilizada pelos fabricantes 
para armazenar de forma permanente dados estáticos e programas que irão ser 
necessários ao funcionamento do PLC. 
Geralmente, os PLCs raramente utilizam memória ROM nas suas aplicações, a não 
ser PLCs dedicados, que tem por objectivo o controlo de apenas um pequeno grupo de 
tarefas. 
Random Acess Memory (RAM) 
Esta memória permite a leitura e escrita da informação, apresentando no entanto a 
desvantagem de perder toda a informação quando se desliga. Esta memória é 
utilizada para armazenar temporariamente a informação que circula no PLC e os 
dados que reflectem o mundo exterior e a execução do programa. 
Endereço 
Informação 
 
Automação e Robótica 11
Programmable Read Only Memory (PROM) 
É um tipo especial de ROM que pode ser programada. Normalmente é utilizada para 
guardar de forma permanente os dados armazenados na RAM. 
Erasable Programmable Read Only Memory (EPROM) 
Este tipo de memória armazena os dados de forma permanente, mas diferencia-se 
das memórias anteriores pelo facto de ser possível reprogramar o seu conteúdo. As 
EPROM possuem uma pequena janela sobre o array de memória, que exposto a uma 
fonte de luz ultra-violeta apaga todo o conteúdo da memória. Esta operação tem uma 
duração média de 20 minutos. Após a EPROM ter sido apagada, é possível voltar a 
escrever dados para a memória, normalmente através da transferência de programas 
para o seu interior, utilizando um dispositivo electrónico adequado. 
Electrically Erasable Programmable Read Only Memory (EEPROM) 
O conteúdo deste tipo de memória pode ser de novo programado, utilizando um 
terminal de programação de PLC, e após todo o seu conteúdo ter sido eliminado, 
operação que demora 10 milisegundos. É utilizada para armazenar o programa de 
controlo que se pretende realizar. 
 
1.2.3 Unidade de programação 
As unidades de programação têm por objectivo a escrita off-line e online de 
programas, a monitorização e a modificação do estado do PLC. 
A programação dos PLC pode ser realizada utilizando consolas de programação ou 
utilizando PCs com acesso à rede. As consolas de programação estão a ser 
progressivamente substituídas pela programação através de PC, e a sua aplicação 
resume-se fundamentalmente à programação on-line em ambiente industrial. 
 
Computador
 
Figura 3.4 - Dispositivos de Programação 
Ambos os dispositivos permitem a programação off-line dos PLCs, o que significa 
que o programa pode ser escrito sem que o dispositivo esteja conectado ao PLC, sendo 
o programa transferido para o PLC quando for necessário. 
As consolas de programação estão a ser abandonadas, porque é necessário um 
dispositivo de programação para cada PLC, além de apenas programar uma gama 
restrita de autómatos programáveis. A sua utilização resume-se a tarefas de 
manutenção, programação dedicada e modificação de dados do sistema; por exemplo, 
 
Automação e Robótica 12
se o protocolo de comunicação do PLC com o PC falhar é necessário o uso da consola 
para estabelecer de novo o protocolo. 
 
1.2.4 Módulos de Entrada e Saída 
Os módulos de entrada e saída têm como objectivo, a interface entre o PLC e o 
mundo exterior, devendo igualmente implementar o condicionamento e isolamento do 
sinal. Os módulos de entrada têm por objectivo a aquisição de informação do mundo 
real, para posterior tratamento. Por outro lado, o controlo de um processo requer a 
actualização de equipamentos, pelo que é necessário ligar os dispositivos a controlar 
ao módulo de saída. 
Todos os módulos de entradas e saídas possuem isolamento eléctrico do processo a 
controlar, utilizando acoplamento óptico. 
 
D
is
po
si
tiv
o 
de
En
tra
da
Saída para o CPU
Isolamento Óptico
 
Figura 3.5 - Isolamento das entradas 
Este isolamento garante que não existe ligação eléctrica entre o mundo exterior e o 
CPU. Um isolamento óptico consiste num díodo emissor de luz e num fototransistor, 
formando um acoplador óptico, que permite a transmissão de sinais de pequena 
tensão e o isolamento de sinais de elevados valores de tensão. Por exemplo, a entrada 
fornece um sinal eléctrico que é transformado em luz. A luz emitida é recebida pelo 
receptor que é de novo transformada num sinal eléctrico. O isolamento óptico é usado 
para entradas e saídas. 
Cada entrada/saída possui um endereço que o identifica univocamente, e que é 
utilizado ao longo do programa de controlo, sempre que se pretende manipular essa 
entrada/saída. Normalmente, os módulos de E/S possuem a indicação do estado de 
cada entrada/saída através de leds, o que torna simples a verificação do estado do 
processo. As entradas/saídas estão disponíveis através de cartas de expansão que 
comunicam com o CPU através de um barramento, designado de bus, de dados e de 
endereços. 
Existem dois tipos de entradas/saídas: digitais e analógicas. As entradas e saídas 
digitais apresentam apenas dois valores: ON e OFF (1 e 0). Por exemplo, se um sensor 
de proximidade detectar a presença de um objecto, na entrada aparecerá o sinal 
lógico 1; caso contrário estará o valor 0. 
Quando o sinal a adquirir pode tomaruma gama de valores determinada e de forma 
contínua, está-se na presença de sinais analógicos, que requerem o uso de módulos de 
entrada/saída analógicos. Por exemplo, um sensor de luminosidade pode ser 
considerado como sendo uma entrada analógica, porque produz uma tensão que é 
proporcional à luz que detecta. 
 
Automação e Robótica 13
Um módulo de entradas analógicas executa a conversão analógico-digital (A/D), 
ficando o sinal em formato digital e disponível para ser processado pelo CPU. O 
módulo de saída analógico efectua o processo inverso e converte o sinal digital para 
um valor analógico (D/A). A resolução da conversão é um factor importante para a 
precisão de controlo quando se utilizam PLCs. Os conversores que usam palavras de 8 
bits terão uma resolução de 1:128. Desta forma, um sinal de valor máximo 5V pode 
ser convertido num valor digital com um intervalo entre valores de 0,02V. O aumento 
da resolução passa pelo aumento do numero de bits utilizados pelo conversor. 
 
Módulo de Entrada 
Este módulo interliga o PLC ao mundo exterior, adquirindo sinais que reflectem o 
estado do mundo exterior, através da utilização de sensores, interruptores, etc. O 
módulo de entrada converte o nível lógico do mundo real para o nível lógico requerido 
pelo CPU, ao mesmo tempo que executa o isolamento. 
Existem no mercado uma vasta gama de sensores que poderão implementar as 
entradas de um PLC, das quais se destacam os sensores indutivos, capacitivos, fins de 
curso, células fotoeléctricas, etc. 
Módulo de Saída 
O módulo de saída disponibiliza uma conexão ao mundo real, permitindo a 
actualização do processo, de acordo com a informação obtida pelas entradas e com a 
execução do programa. As saídas podem ser disponibilizadas através de relé, 
transístor ou triac. 
Os dispositivos de saída vulgarmente utilizados no controlo de processos são os 
motores passo a passo, lâmpadas, válvulas pneumáticas, etc. 
 
1.2.5 Fonte de Alimentação 
A fonte de alimentação tem por objectivo o fornecimento das várias tensões de 
alimentação requeridas para o funcionamento de todos os componentes do PLC. 
Esta unidade converte a tensão de alimentação exterior (220 V) numa tensão 
continua requerida pelo CPU, memória e módulo de entradas e saídas (normalmente 5 
ou 24 V). 
 
1.2.6 Cartas Especiais 
Existem dispositivos auxiliares ao PLC que não se enquadram na sua arquitectura 
genérica, pois são específicos para o tipo de aplicação. Neste grupo de cartas 
especiais, encontramos entre outras, os leitores de códigos de barras, as cartas ASCII 
e as cartas fuzzy logic. 
• Fuzzy Logic 
A lógica fuzzy foi desenvolvida para criar uma lógica que melhorasse a 
tradicional lógica binária que apenas admite dois valores lógicos: 0 e 1. A 
 
Automação e Robótica 14
lógica fuzzy pretende copiar o raciocínio humano e desenvolver processos 
lógicos a partir de expressões pouco precisas ou difusas que variam entre 
dois valores lógicos (0 e 1). Por exemplo, utilizando lógica fuzzy não se diz 
que uma pessoa é alta ou baixa, mas sim que essa pessoa tem uma 
determinada probabilidade de ser alta. 
• Carta ASCII 
Este módulo é utilizado para manipulação e transmissão de dados 
alfanuméricos entre o PLC e dispositivos periféricos, tais como impressoras, 
monitores, etc. 
• PID 
Utilizadas para solucionar problemas complexos, em que é necessário 
implementar controlo integral, derivativo e proporcional. 
• Leitores de códigos de barras 
Muito utilizadas na industria para identificação dos produtos que circulam 
num processo. 
 
1.3 FUNCIONAMENTO 
O funcionamento de um PLC resume-se à execução contínua do programa carregado 
na sua memória. Na figura que se segue, estão ilustradas as três fases mais 
importantes do ciclo de funcionamento de um autómato programável. 
 
Verificação do estado das entradas
Execução do programa
Actualização do estado das saídas
 
Figura 3.6 - Ciclo de funcionamento de um PLC 
Inicialmente, o PLC analisa o estado de todas as entradas e armazena-os na 
memória, para serem usadas durante a execução do programa. Na fase que se segue, 
o PLC executa o programa, executando uma linha de instrução de cada vez. 
Finalmente, as saídas são actualizadas de acordo com o estado das entradas e das 
instruções do programa. 
Este ciclo repete-se continuamente enquanto o PLC estiver em funcionamento. 
Quando se analisa o funcionamento de um PLC, através da performance do seu tempo 
de resposta, é necessário considerar três tempos distintos: 
 
Automação e Robótica 15
• Tempo de resposta de entrada; 
• Tempo de processamento; 
• Tempo de resposta de saída. 
Consideremos a situação de detectar quando o copo está cheio de água, para se 
fechar a torneira, e façamos a analogia com o funcionamento de um PLC. Os olhos da 
pessoa estão sempre a receber informação e a envia-la para o cérebro. 
 
 
Figura 3.7 - Tempo de Resposta 
Quando a água chegar ao nível pretendido, os olhos enviam essa informação para o 
cérebro que a deverá processar. O tempo que o cérebro demora a receber a 
informação proveniente dos olhos é designada por tempo de resposta de entrada. O 
cérebro tendo a informação de que a água está num determinado nível irá processar a 
informação e decidir qual a acção ou acções a tomar. Este tempo é designado por 
tempo de processamento. 
Finalmente, o cérebro irá dar ordens às mãos para fechar a torneira. O tempo que 
decorre até que as mãos recebam a ordem é designado por tempo de resposta de 
saída. 
1.4 APLICAÇÕES DOS AUTÓMATOS PROGRAMÁVEIS 
Os PLCs apresentam um vasto domínio de aplicações, das quais se destacam: 
• Aplicações de robótica 
 
• Controlo de máquinas CNC 
 
Automação e Robótica 16
 
• Controlo de células de fabrico ou montagem 
• Sistemas de transporte e manuseamento de materiais. 
 
 
 
 
 
 
 
 
• Controlo e monitorização de processos industriais, etc. 
 
Automação e Robótica 17
2 PROGRAMAÇÃO BÁSICA DE AUTÓMATOS PROGRAMÁVEIS 
A linguagem de programação, assim como a estrutura e definição de endereços e 
mapeamento da memória difere de fabricante para fabricante, o que associado com a 
vasta diversidade de fabricantes de autómatos existentes no mercado, torna 
limitativo o estudo genérico que se pretende efectuar. Apesar de ser intenção deste 
texto fornecer os princípios básicos da programação de autómatos programáveis, irá 
utilizar-se como referência o autómato programável CPM1 da Omron para testar e 
desenvolver todas as aplicações referidas neste texto. 
 
2.1 ESCRITA DE PROGRAMAS 
2.1.1 Fluxogramas e Algoritmia 
Os computadores, infelizmente, só fazem aquilo que mandamos e não aquilo que 
desejamos que eles façam. O computador tomará sempre um dos caminhos possíveis 
nas suas acções e por isso é preciso assegurar que o computador siga pelo único 
caminho correcto possível que leve aos resultados desejados. Uma afirmação como 
calcule a média das notas neste teste é muito imprecisa, apesar de parecer 
especificar aquilo que desejamos. Muitos detalhes foram omitidos, como por exemplo, 
onde estão as notas, quantas são, etc. 
A programação de computadores em alguns casos pode ser difícil, razão pela qual 
os bons programadores recebem altos salários. Tal dificuldade deve-se à 
complexidade inerente, combinando muitos processos mentais. Entretanto, podemos 
torná-la muito mais fácil se dividirmos o problema sistematicamente em partes menos 
complexos (a abordagem do dividir para conquistar). 
 
Problema
Solução em forma
de algoritmo
Solução como
programa de
computador
Passo difícil
Fase da
implementação
Fase da resolução
do problema
 
Figura 5.1 - Resolução de um problema 
Primeiro, é importante separarmos a fase de resolução do problema da tarefa da 
fase da implementação. Na fase de resolução do problema, é necessário a elaboração 
 
Automação e Robótica 18
de um algoritmo ou fluxograma para resolver o problema proposto. Apenas, quando a 
formulação de um algoritmo adequado e satisfatório,é que se passa para a 
implementação do algoritmo numa qualquer linguagem de programação. Dado um 
algoritmo suficientemente preciso, a codificação num programa de computador é 
quase directa. 
Um algoritmo pode ser definido como uma sequência ordenada e sem ambiguidade, 
de passos elementares que levam à solução de um dado problema. Apesar de o termo 
ser novo em si, o conceito é bastante familiar. As indicações dadas para se chegar até 
uma determinada rua constituem um algoritmo para se encontrar essa rua. Uma 
receita de cozinha é uma forma muito familiar de fluxograma. 
É necessário que os algoritmos cumpram algumas regras. Assim, os passos de um 
algoritmo devem ser simples e sem ambiguidade e devem estar numa ordem 
cuidadosamente definida. 
Como exemplo, vamos elaborar um algoritmo para realizar uma tarefa bastante 
familiar, a substituição de uma lâmpada queimada. A operação básica pode ser 
expressa em dois passos simples: 
• remova a lâmpada queimada 
• coloque a nova lâmpada 
Apesar de esta solução parecer resolver o problema, de facto estes passos não são 
suficientemente claros para um robot, pois cada um dos passos envolve alguns 
pressupostos que um robot não conhece. Assim, é necessário especificar cada um dos 
passos anteriores. 
Em primeiro lugar, o que é necessário para remover a lâmpada queimada? 
Vamos admitir que ela esteja pendurada num tecto. Este facto envolve uma 
escada, posicioná-la correctamente e subi-la. De seguida é necessário remover a 
lâmpada. Para a remoção, é necessário girar a lâmpada no sentido anti-horário até 
que se solte. Assim, o simples passo remova a lâmpada queimada foi expandido nos 
seguintes passos: 
• Posicione a escada debaixo da lâmpada queimada 
• suba na escada até que a lâmpada possa ser alcançada 
• rode a lâmpada queimada no sentido anti-horário até que se solte 
Para colocar uma lâmpada nova, é necessário seleccionar uma outra de mesma 
potência (o que deve ser feito antes de se subir na escada), posicionar a lâmpada, 
girá-la no sentido horário até que esteja completamente colocada e finalmente descer 
da escada. Deste modo, o passo coloque a nova lâmpada foi expandido para: 
• escolha uma nova lâmpada de mesma potência da queimada 
• posicione a nova lâmpada 
• rode a lâmpada no sentido horário até estar colocada 
• desça da escada 
 
Automação e Robótica 19
Apesar do algoritmo ter já sete passos, ainda não tem uma especificação 
suficientemente precisa. Por exemplo, o passo escolha uma nova lâmpada de mesma 
potência da queimada deve ser melhor especificado. Suponhamos que temos uma 
caixa com lâmpadas novas. Devemos examiná-las uma a uma até encontrarmos uma 
com a mesma potência da queimada. Isto exige as seguintes operações: 
• seleccione uma lâmpada candidata à substituição 
• se a potência não é a mesma, repita o processo até encontrar uma que sirva, 
− deite fora a lâmpada seleccionada 
− seleccione uma nova lâmpada 
São introduzidos aqui dois conceitos importantes: o da decisão (se) e o da repetição 
(repita). A capacidade de decisão permite-nos adiar a selecção real de um caminho 
até à execução do programa. Neste caso, não podemos determinar o que fazer até 
que a potência de uma lâmpada real tenha sido examinada. É possível especificar que 
uma operação básica seja repetida muitas vezes; neste caso a selecção de uma 
lâmpada é efectuada até se encontrar uma lâmpada de potência adequada. Usando 
estes conceitos para os restantes passos, passamos a ter o seguinte algoritmo: 
• posicione a escada debaixo da lâmpada queimada 
• seleccione uma nova lâmpada para a substituição 
• se a potência não for a mesma da queimada, repita o processo até encontrar 
uma que sirva 
− deite fora a lâmpada seleccionada 
− seleccione uma lâmpada nova 
• repita até que a lâmpada possa ser alcançada 
− suba num degrau da escada 
• repita até que a lâmpada fique solta 
− rode a lâmpada no sentido anti-horário 
• posicione a nova lâmpada 
• repita até que a lâmpada esteja colocada 
− rode a lâmpada no sentido horário 
• desça a escada 
As operações indicadas simples sem ambiguidade, as decisões necessárias são 
imediatas e a ordem na qual os passos devem ser seguidos é claramente expressa. A 
escrita de programas para computadores ou autómatos, passa pelo assentar de ideias 
na forma de um fluxograma ou algoritmo e depois transpor esse algoritmo para a 
linguagem de programação adequada. 
 
 
Automação e Robótica 20
2.1.2 Linguagens de Programação para Autómatos 
A programação de PLCs pode ser realizada utilizando várias linguagens genéricas, 
seguindo a norma IEC 61133, das quais se destacam os seguintes dois tipos: 
• lista de instruções; 
• diagrama de blocos (ladder). 
A lista de instruções é caracterizada por existir uma sequência de instruções para 
realizar cada uma das tarefas. Essas instruções são escritas sob a forma de 
mnemónicas. 
 
LD I 0.1 
AND I 0.2 
SET O 1.0 
 
Cada fabricante utiliza mnemónicas diferentes para programar os seus autómatos 
assim como designações diferentes para endereçar a memória. Este facto, faz com 
que cada fabricante possua uma linguagem de programação própria para os seus 
autómatos. 
O diagrama de contactos (ladder) é caracterizado pela existência de sequências de 
contactos (normalmente abertos ou fechados) que irão provocar a actualização das 
saídas. 
 
0.0 10.0
 
 
O diagrama de contactos é uma linguagem genérica de programação de autómatos, 
a menos de algumas funções específicas de alguns autómatos e do endereçamento de 
memória. 
Dado que vai ser utilizado o PLC CPM1 da Omron nas experiências laboratoriais, 
iremos utilizar os diagramas de ladder como linguagem de programação, que é 
disponibilizada pela Omron através do seu software de programação SYSWIN. 
 
2.1.3 Procedimentos básicos para a escrita de um programa 
A elaboração de programas para autómatos tendo em vista a solucionar problemas, 
passa pela definição de um conjunto de passos básicos, dos quais se destacam os 
seguintes: 
• Obter a lista de todos os dispositivos de Entradas e Saídas, criando uma 
tabela de memória que ilustre os bits E/S alocados a cada dispositivo. 
• Determinar quais as palavras disponíveis para serem utilizadas dentro do 
programa. 
 
Automação e Robótica 21
• Criar tabelas de endereços de temporizadores e contadores, assim como 
endereços de salto a usar no programa (apenas se podem usar de 01 a 99). 
• Desenhar o diagrama de contactos. 
• Verificar o programa da existência de erros de sintaxe e tentar corrigi-los. 
• Transferir o programa para o autómato. 
• Executar o programa no autómato. 
Se durante a execução do programa se verificarem erros ou anomalias, deve-se 
corrigir esses erros e verificar o programa de novo, sendo por vezes necessário 
redesenhar o diagrama de contactos. 
 
2.2 ENDEREÇAMENTO DA MEMÓRIA 
A memória de um PLC, tal como já foi referido, divide-se normalmente em dois 
grandes blocos: memória do sistema e memória do utilizador. A memória do sistema 
armazena todos os parâmetros de configuração do PLC, enquanto que a memória do 
utilizador armazena dados temporários de entrada e de saída, assim como dados 
auxiliares à execução do programa. 
Cada fabricante de autómatos tem uma forma de endereçamento da memória 
muito própria, e que normalmente difere do endereçamento utilizado noutros 
autómatos. Por exemplo, para codificar as entradas e saídas, é vulgar utilizar-se a 
letra I para as entradas e a letra O para as saídas; no entanto, também existem 
autómatos que utilizam as letras X e Y, para codificar as entradas e saídas, 
respectivamente. 
Na figura 5.3 está representado o endereçamento da memória utilizada pelo 
autómato CPM1 da Omron. Verifica-se que a codificação de entradas e saídas é 
realizada pelo prefixo IR. 
 
 
Área de Dados Palavras Função 
 
Área IR 
(Relés 
internos) 
 
Área de Entrada 
 
Área de Saída 
 
Área de Trabalho 
IR 000 a IR 009 
 
IR 010 a IR 019 
 
IR 200 a IR 231 
Estes bitspodem ser alocados aos terminais 
E/S externos. Os bits de trabalho podem 
ser usados livremente dentro do programa. 
Área SR 
(Relés especiais) 
SR 232 a SR 255 Estes bits servem funções específicas, tais 
como flags e bits de controlo. 
Área TR 
(Relés temporários) 
 
TR 0 a TR 7 (só se 
trabalha com os 8 
bits) 
Estes bits são utilizados para guardar 
temporariamente o estado ON/OFF da 
secção do programa (mnemónicas). 
Área HR 
(Relés retenção) 
HR 00 a HR 19 Estes bits guardam informação e mantém o 
seu estado ON/OFF após a alimentação ser 
desligada. 
Área AR 
(Relés auxiliares) 
AR 00 a AR 15 Estes bits são semelhantes a SR mas 
mantém o seu valor após a alimentação ser 
desligada. 
 
Automação e Robótica 22
Área LR 
(Relés ligação) 
LR 00 a LR 15 Utilizado para ligações 1:1 a outro PLC. 
Área Contadores e 
Temporizadores 
TC 000 a TC 127 Os mesmos endereços são utilizados para os 
temporizadores e contadores. 
 Leitura/Escrita DM00 a DM 099 
DM 1022 a DM 1023 
Podem ser usados livremente no programa. 
Área DM Log de erros DM 1000 a DM 1021 Utilizados para guardar o tempo e o código 
de erro da ocorrência. 
(Módulo 
de Dados) 
Apenas leitura DM 6144 a DM 6599 Não podem ser escritos a partir do 
programa. 
 Setup PC DM 6600 a DM 6655 Utilizados para guardar os vários 
parâmetros que controlam a comunicação 
com o PC. 
Figura 5.2 - O endereçamento da memória no CPM1 
 
2.3 INSTRUÇÕES BÁSICAS 
Os operandos utilizados como entradas e saídas possuem dois valores de 
identificação: endereço físico e mnemónica. O endereço físico é a designação directa 
do bit ou byte de uma área específica de memória. A mnemónica é utilizada para 
simplificar a escrita e a leitura do programa. 
Uma condição normalmente aberta é Verdadeira (ON) se a entrada é ON e Falsa 
(OFF) se o operando é OFF. Uma condição normalmente fechada é Verdadeira se o 
operando é OFF e Falsa de o operando é ON. 
 
normalmente
fechado
. . .
normalmente
aberto
 
 
No estudo que se segue, apenas se vai considerar entradas e saídas normalmente 
abertas. No entanto, para trabalhar com lógica normalmente fechada, deve-se 
colocar o sufixo NOT a seguir à instrução para a lógica normalmente aberta. 
 
2.3.1 LOAD 
A primeira condição que inicia qualquer bloco lógico corresponde à instrução LOAD, 
cuja mnemónica é LD. Se esta instrução é a única na linha de instruções então a saída 
é ON se o operando for ON e OFF se o operando for OFF. O resultado desta instrução 
pode ser conjugada com outra entrada através de uma relação lógica ou 
imediatamente transferida para o exterior, actualizando uma saída. 
 
2.3.2 OUTPUT 
A forma mais simples de transferir para a saída os resultados da combinação da 
execução de instruções é utilizando a instrução OUT. 
 
Automação e Robótica 23
Esta instrução pode actualizar saídas do autómato, mas também flags internas, tais 
como as áreas SR, AR, HR, etc. 
 
 0.0 10.0 
0.0 10.0
 
ON 
OFF 
ON 
OFF 
 
 0.0 10.0 
0.0 10.0
 
ON 
OFF 
OFF 
ON 
Figura 5.3 - Tabela de Verdade das Instruções OUT e OUT NOT 
Vamos considerar o seguinte caso de aplicação: existe uma bomba de tirar água 
que funciona de acordo com o estado de um botão de accionamento, isto é premindo 
o botão a bomba funciona, e libertando o botão a bomba deixa de funcionar. 
Pretende-se elaborar um programa que execute o controlo da bomba. 
Assim, supondo que o botão está associado à entrada 0.0 e que a bomba está 
associada à saída 10.1, é possível realizar o programa de controlo, utilizando listra de 
instruções. 
 
LD 0.0 
OUT 10.0 
 
Este programa coloca a saída 10.0 (bomba) em funcionamento de acordo com o 
estado da entrada 0.0 (botão). Se o botão estiver premido, isto é a entrada 0.0 está 
ON, então a bomba será colocada em funcionamento. Caso o botão não esteja 
premido então a bomba deixa de estar em funcionamento. 
 
2.3.3 AND 
 
A manipulação de operandos lógicos requer por vezes a utilização do operador 
lógico AND. Este operador permite activar uma saída apenas quando todos os 
operandos de entradas forem Verdadeiros. 
Num conjunto de instruções que implemente o AND de mais do que duas entradas, 
a primeira das instruções será a instrução LD; e as restantes condições as instruções 
AND. 
 
0.0 10.10.11.0
 
 
Na figura anterior a linha de instrução representada por um diagrama de contactos, 
implementa a seguinte expressão lógica: 
 
Automação e Robótica 24
10.0 = 0.0 AND 1.0 AND 0.1 
 
A saída 10.0 será activada, apenas se as três condições forem verdadeiras, isto é, 
quando 0.0 é ON, 1.0 é OFF e 0.1 é ON. 
A aplicação da instrução AND pode ser analisada no seguinte exemplo: 
A utilização de maquinaria pesada, como por exemplo, quinadoras ou máquinas de 
corte, requer a instalação de sistemas de segurança, para precaver a integridade 
física dos operadores que trabalham com essas máquinas. O sistema de segurança 
mais vulgar nesses casos é a implementação de dois botões de início de 
funcionamento (um para cada mão do operador). Desta forma, a máquina só executa 
a tarefa, por exemplo o corte de chapa, se os dois botões estiverem premidos. 
 
LD 0.0 
AND 0.1 
OUT 10.0 
 
Neste caso, temos duas entradas, 0.0 e 0.1, e uma saída 10.0, que representa o 
accionamento da máquina para executar a sua tarefa. 
 
2.3.4 OR 
No ponto anterior referiu-se a instrução lógica AND. No entanto, existe uma outra 
instrução lógica básica, designada por OR, que é fundamental na manipulação de 
operandos lógicos. Quando duas ou mais condições estão separadas em linhas de 
instruções diferentes e a correr em paralelo, a primeira condição corresponde à 
instrução LD; as restantes condições correspondem à instrução OR. 
 
1.1 10.0
0.1
1.0
 
 
A saída 10.0, para o caso da figura anterior, será ON quando uma das três 
condições for ON, isto é, quando 1.1 é OFF ou 1.0 é OFF ou 0.1 é ON. 
 
2.3.5 END 
No fim de um programa é necessário adicionar a instrução END. Durante a execução 
do programa, o CPU executa todas as instruções até à instrução END, antes de voltar 
ao início do programa e voltar a executá-lo. Aliás, o autómato funciona em ciclo 
executando ciclicamente o programa carregado no autómato. 
 
 
Automação e Robótica 25
END
0.0 10.00.1
 
 
Se não existir a instrução END no fim do programa, este não poderá ser executado. 
 
Exemplo de aplicação 
Pretende-se controlar o funcionamento de um dispositivo que efectua a mistura de 
dois líquidos, utilizando dois botões: 
• Movimento - se premido, o dispositivo deve funcionar; se não, deve estar 
parado. 
• Emergência - se caso seja premido, o dispositivo deve parar o seu 
funcionamento. 
 
Líquido A Líquido B
 
Figura 5.4 - Misturador de líquidos 
O primeiro passo na escrita do programa é a escolha das E/S do autómato para a 
aplicação em causa: 
• botão de movimento - IR 0.0 movimento; 
• botão de emergência - IR 0.1 emergência; 
• motor do dispositivo - IR 10.0 motor. 
Então a linha de instruções que implemente o funcionamento pretendido está 
ilustrado na figura que se segue. 
0.0 10.00.1
 
Vamos supor agora, que o botão de movimento é substituído por dois outros botões 
distintos, que representam a presença de diferentes tipos de líquidos no dispositivo, e 
que se pretende que o misturador inicie o seu funcionamento sempre que exista pelo 
menos um dos líquidos no dispositivo (um dos botões premido). 
Desta forma iremos ter entradas e uma saída: 
• botão para o liquido A - IR 0.3 líquido_a; 
• botão para o liquido B - IR 0.4 líquido_b; 
 
Automação e Robótica 26
• botão de emergência - IR 0.1 emergência; 
• motor do dispositivo - IR 10.0 motor. 
A implementação do programa para este caso é semelhante ao anterior, diferindo 
apenas no facto do funcionamento do misturador depender da existência de pelos 
menos um dos botões associados aos líquidos estar activado. 
0.3 10.00.1
0.4
 
A instrução lógica que implementa esta funcionalidade é o OR, pelo que basta 
efectuaro OR entre as entradas líquido_A e líquido_B, seguido do AND com a entrada 
de emergência negada. 
 
2.3.6 Instruções Lógicas de Bloco 
A elaboração de diagramas mais complexos do que aqueles analisados até ao 
momento, requer a introdução dos conceitos de AND LOAD e OR LOAD. 
Vamos supor que pretendemos implementar a seguinte expressão lógica: 
 
10.0 = (0.0 OR 0.1) AND (0.2 OR 0.3) 
 
A implementação através de diagramas de contactos é directa, e está ilustrada na 
figura que se segue. 
0.0 10.00.2
0.1 0.3
 
 
No entanto, se pretendermos utilizar a programação em lista de instruções, é 
impossível implementar a expressão lógica utilizando as instruções lógicas básicas, 
uma vez que o valor da execução da condição 0.0 OR 0.1 é perdido quando se inicia a 
execução da condição seguinte (0.2 OR NOT 0.3). Existem então as instruções AND 
LOAD e OR LOAD para armazenar as condições intermédias. 
Assim, é possível escrever o diagrama anterior em lista de instruções utilizando 
AND LOAD. 
 
LD 0.0 
OR 0.1 
LD 0.2 
OR NOT 0.3 
AND LD 
 
 
Automação e Robótica 27
A instrução AND LD permite armazenar o resultado da primeira condição e realizar 
o AND com a segunda condição. 
Vamos considerar agora o caso de se pretender implementar a seguinte expressão 
lógica: 
 
10.0 = (0.0 AND 0.1) OR (0.2 AND 0.3) 
 
Tal como o exemplo anterior, a sua implementação em diagramas de contactos é 
extremamente simples, mas complica-se se o pretendido for a utilização de lista de 
instruções. 
 
0.0 10.00.1
0.2 0.3
 
 
Neste caso não se trata de realizar o AND de duas condições constituídas por mais 
do que uma condição, mas sim o OR, pelo que a instrução adequada é o OR LD. 
 
LD 0.0 
AND NOT 0.1 
LD 0.2 
AND 0.3 
OR LD ← executa o OR dos dois blocos 
OUT 0.0 
 
2.3.7 Combinação de instruções AND LOAD e OR LOAD 
As instruções AND LOAD e OR LOAD podem ser combinadas, caso o número de 
blocos seja superior a 2 mas não exceda os 8 blocos. 
 
0.0 10.00.1
0.50.4
0.30.2
Bloco 3
Bloco 2Bloco 1 
Considerando o diagrama de contactos, representado atrás, é possível traduzi-lo 
para lista de instruções. 
 
LD NOT 0.0 
AND 0.1 
LD 0.2 
AND NOT 0.3 
 
Automação e Robótica 28
LD NOT 0.4 
AND 0.5 
OR LD 
AND LD 
OUT 10.3 
 
É de referir que neste caso, primeiro é executada a instrução OR LOAD e só depois 
a instrução AND LD. 
 
Exemplo de aplicação 
Pretende-se escrever em lista de instruções o programa equivalente ao 
representado pelo seguinte diagrama de contactos. 
0.0 10.00.1
0.50.40.3
0.2
Bloco 5
Bloco 2Bloco 1
0.70.6 Bloco 4
Bloco 3
 
O programa em lista de instruções é como se representa de seguida. 
 
LD 0.0 
LD 0.1 
AND 0.2 
LD 0.3 
AND 0.4 
LD 0.5 
LD 0.6 
AND 0.7 
OR LD ← blocos 4 e 5 
AND LD ← bloco 3 com resultado anterior 
OR LD ← bloco 2 com resultado anterior 
AND LD ← bloco 1 com resultado anterior 
OUT 10.0 
 
É de salientar que apenas se põe o problema de utilização de instruções de bloco, 
se não se programar em diagramas de contactos. Além disso, é sempre possível não 
utilizar as instruções de bloco, se utilizarmos flags internas para armazenar dados 
temporários e intermédios. 
 
Automação e Robótica 29
2.3.8 Execução de Várias saídas 
Existem situações em que é necessário executar mais do que uma acção, para as 
mesmas condições de entrada. Neste caso, as saídas são codificadas sucessivamente a 
seguir à última instrução da linha. 
 
0.1 HR0.10.3
0.2
0.4
10.0
10.7
 
Ou utilizando lista de instruções, 
 
LD 0.1 
OR 0.2 
AND 0.3 
OUT HR0.1 
OUT 10.0 
AND 0.4 
OUT 10.7 
 
2.3.9 SET e RESET 
Estas instruções são similares às de OUTPUT e OUTPUT NOT, diferindo no facto do 
seu estado apenas ser alterado quando a condição for ON. Quando a condição de 
entrada for Verdadeira, o bit de saída é ON ou OFF, caso se trate de um SET ou 
RESET, respectivamente. A particularidade desta instrução, é que mantém o seu 
estado após a condição de entrada passa a Falsa. 
 
SET
(saída)
Condição Condição
RESET
(saída) 
Figura 5.5 - Evolução temporal para as instruções SET e RESET 
Vamos considerar o caso de pretendermos controlar o funcionamento de um motor, 
através de dois botões: o botão verde para o colocar em funcionamento e o botão 
vermelho para o parar. 
Neste caso, não se pode utilizar a instrução OUT, porque com esta instrução logo 
que libertássemos o botão verde, o motor parava, e o que se pretende é que o motor 
continue a funcionar mesmo que se liberte o botão e até que se prima o botão 
vermelho. 
 
Automação e Robótica 30
Para implementar esta funcionalidade é necessário utilizar as instruções SET para 
por o motor em funcionamento quando se prime o botão verde, e a instrução RSET 
para parar o motor quando se prime o botão vermelho. 
 
RSET 10
Botão verde
Botão vermelho
SET 10.0
 
 
Assim quando se pressiona o botão verde, este vale o estado lógico ON, pelo que o 
motor inicia o seu funcionamento; quando se pressiona o botão vermelho, a instrução 
RSET é executada, parando de imediato o motor. 
 
2.3.10 DIFFERENTIATE UP, DIFFERENTIATE DOWN 
As instruções DIFU e DIFD são utilizadas para forçar um bit a ON durante apenas um 
ciclo de funcionamento. Sempre que é executado, DIFU compara a condição corrente 
com a condição anterior. Se a condição anterior era OFF e a condição corrente é ON, 
então DIFU tornará o bit a ON. Se a condição anterior é ON e a condição corrente é 
ON ou OFF, então DIFU tornará o bit a OFF ou manterá o bit a OFF (com esta instrução 
o bit apenas se manterá em ON durante um ciclo). 
Quando executada, DIFD compara a execução corrente com a condição anterior. Se 
a condição anterior era ON e a condição corrente é OFF, a instrução DIFD tornará o bit 
a ON. Se a condição anterior é OFF e a corrente é ON ou OFF, DIFD tornará o bit a OFF 
ou manterá o bit a OFF. 
 
DIFD 10.
1.0
1.1
DIFU 10.
 
 
 
2.3.11 Instruções de Bifurcação 
Quando uma linha de instrução se divide em mais do que 2 linhas, é necessário usar 
bits temporais para armazenar o resultado da condição na bifurcação. 
 
0.0 10.00.1
0.2 10.1
TR 0
 
 
 
Automação e Robótica 31
É necessário no ponto de bifurcação colocar um bit TR, de modo a manter 
temporariamente o resultado da última condição, e assim ser utilizada 
posteriormente. 
 
LD 0.0 
OUT TR 0 
AND 0.1 
OUT 10.0 
LD TR 0 
AND 0.2 
OUT 10.1 
 
2.3.12 KEEP 
A instrução KEEP é usada para manter o estado do bit, baseado em duas condições. 
Para tal, a instrução é conectada a duas linhas de instrução. Quando a condição da 
primeira linha é ON, o bit operando torna-se igual a ON. Quando a condição da 
segunda linha é ON, o bit operando da instrução KEEP torna-se OFF. 
O bit operando para a instrução KEEP manterá o seu estado (ON ou OFF) mesmo 
quando colocado numa secção diferente do diagrama. 
 
0.2 0.3
0.4
KEEP (1
HR 0000
0.5
 
Exemplo de aplicação (1) 
Pretende-se elaborar um sistema de controlo para o comando de um motor e de 
uma bomba, que apresenta as seguintes características: 
• Após ser premido o botão de arranque, a bomba é ligada; 
• O funcionamento efectivo da bomba é detectado pelo medidor de caudal. O 
motor é ligado depois de detectada a entrada em funcionamento da bomba; 
• A actuação do botão de paragem provoca o desligar da bomba e do motor. 
Implementação do sistema de controlo pode recorrer à lógica digital. 
 
arranque
paragem
caudal motor ON
bomba O
R
S
R
S
 
 
 
Automação e Robótica 32
No entanto, para a implementação em autómato programável, é necessário 
efectuar a atribuição de endereços: 
 
 IR 00.00 - arranque 
 IR 00.01 - paragem 
 IR 00.02 - caudal 
 IR 10.00 - motor ON 
 IR 10.01 - bomba ON 
A representação da evolução temporal das várias variáveis em jogo, ajuda a 
apreender o problema e a conceber uma solução. Para este caso, a evolução temporal 
está ilustrada na figura que se segue. 
 
Arranque
Paragem
Caudal
Bomba ON
Motor ONA implementação da solução, utilizando as instruções SET e RESET está 
representada na figura que se segue. 
 
Arranque
Caudal
Paragem
Bomba ON
SET Bomba ON
RSET Motor
RSET Bomba ON
SET Motor
Paragem
Paragem
 
 
No entanto, é possível implementar a mesma solução utilizando a instrução KEEP. 
 
Arranque
Paragem
KEEP (11
Bomba ON
Bomba ON
Paragem
Caudal
KEEP (1
Motor ON
 
 
 
Automação e Robótica 33
Nesta última solução, a entrada Arranque coloca a Bomba em funcionamento 
enquanto a activação do botão Paragem desliga a Bomba. Para que o Motor funcione é 
necessário que a Bomba esteja em funcionamento e que já exista Caudal a alimentar 
o Motor. 
 
Exemplo de aplicação (2) 
Pretende-se realizar o controlo de uma electroválvula, com as seguintes 
características: 
• possibilidade de três acções de comando: abrir, fechar e parar; 
• uma saída do autómato comanda a abertura da válvula e outra o seu fecho. 
Estas duas saídas não podem tomar em simultâneo o valor lógico 1; 
• quando a válvula atinge uma das posições extremas (totalmente aberta ou 
fechada), a respectiva saída do PLC é desactivada; 
• a válvula pode ser comandada em modo manual e automático; 
• em modo manual as ordens são iniciadas a partir de 3 botões de pressão: 
abrir, fechar e parar; 
• em modo automático, a válvula é comandada por três flags geradas por 
outro módulo do programa; 
• está previsto um sinal exterior de inibição, que quando está activo, inibe as 
duas saídas de comando da válvula. 
O primeiro passo na elaboração do programa é a atribuição de endereços às 
variáveis que irão ser utilizadas no programa: 
 
 IR 00.00 a IR 00.02 - abrir, fechar e parar 
 IR 00.03 a IR 00.04 - aberto e fechado 
 IR 00.05 - inibição 
 IR 10.00 a IR 10.01 - act_abrir e act_fechar 
 IR 200.00 a IR 200.01 - flag_abrir e flag_fechar 
 IR 00.06 - manual (1- manual e 0 - automático) 
 
O programa que solucione este problema está ilustrado na figura que se segue. 
 
 
Automação e Robótica 34
ent_abrir
modo
modo
flag_abrir
SET abrir
RSET abrir
RSET fecha
SET fechar
RSET abrir
RSET fechar
ent_fechar modo
fechado
RSET abrir
RSET fechar
fechado
inibiçãoaberto
inibição
flag_parar
inibição
abriraberto
fechar
fechado
ent_parar modo
modo
modo
 
 
2.4 TEMPORIZADORES 
Os temporizadores são utilizados sempre que se pretenda realizar uma determinada 
acção ao fim de um determinado período de tempo ou durante um período de tempo. 
No autómato CPM1 da Omron, os temporizadores estão disponíveis através dos 
endereços TC 000 a TC 127. 
 
TIM
N
VT
Condição A
 
 
em que N é o numero do temporizador e VT 
contém o valor do tempo que se pretende 
contar. 
 
O temporizador é activado quando a condição de execução vai a ON e é 
desactivado quando a condição de execução vai a OFF. Se quando VT tiver sido 
esgotado e a condição A for ON, então o temporizador virá a ON. 
 
Condição
A
Temporizador
TIM N
VT < VT VT 
Figura 5.7 - Evolução temporal de um temporizador 
As unidades de medida nesta instrução de temporização são as décimas de segundo 
(0,1 segundo). 
 
Automação e Robótica 35
Exemplo de aplicação 
O elevador representado na figura desloca-se entre dois pisos. O seu movimento é 
comandado (subir, descer e parar) a partir dos comandos dados pelos operadores 
(botões de chamada bot_ch1 e bot_ch2) e das informações provenientes dos 
detectores de fim de curso (piso1 e piso2). 
 
piso2
bot_ch2
bot_ch1 piso1
 
Figura 5.8 - Elevador entre dois pisos 
A atribuição de endereços é a seguinte: 
 IR 00.00 - bot_ch1 
 IR 00.01 - bot_ch2 
 IR 00.02 - piso1 
 IR 00.03 - piso2 
 IR 10.00 - motor_up 
 IR 10.01 - motor_down 
O programa que controle o movimento do elevador entre os dois pisos é o seguinte. 
 
bot_ch2
RSET motor_u
RSET
motor_down
piso1
piso2bot_ch1
piso1
piso2
SET motor_u
SET
motor_down
 
 
Adicionalmente, pretende-se controlar a porta do elevador. Esta deverá abrir 5 
segundos após ter chegado ao piso desejado. Sempre que o elevador seja requisitado, 
a porta deverá ser fechada. 
A nova atribuição de endereços é como se representa: 
 IR 00.04 - porta_aberta 
 IR 00.01 - porta_fechada 
 IR 10.02 - abre_porta 
 
Automação e Robótica 36
 IR 10.03 - fecha_porta 
O novo programa em diagrama de contactos está ilustrado na figura que se segue. 
 
bot_ch2 piso1
SET motor_u
SET
fecha_porta
porta_aberta
RSET motor_
RSET
motor_down
piso1
piso2
porta_abertaTIM 000
bot_ch1
piso2 motor_up
motor_down
piso2
SET
motor_down
SET
fecha_porta
SET abre_po
RSET
abre_porta
TIM
000
#50
piso1
 
 
NOTA: Pensar em melhorar o sistema incorporando a possibilidade de no interior do 
elevador se poder fechar a porta e ir para um outro piso. Adicionalmente, pensar no 
caso de existirem mais do que dois andares? 
 
2.4.1 Temporizador ao Impulso 
Neste tipo de configuração, pretende-se que a saída esteja activa durante o 
período de tempo especificado no temporizador. 
 
0.0
10.2
TIM
16
#20
10.2TIM 16 
 
Para o caso da figura anterior, a saída 10.2 estará ON apenas durante o tempo 
especificado, neste caso 2 segundos. 
 
 
Automação e Robótica 37
2.4.2 Temporizador após a operação 
Pretende-se com esta configuração que a saída esteja activa apenas durante um 
determinado período de tempo, especificado no temporizador, após a entrada de 
controlo tenha deixado de estar activa. Um exemplo da necessidade deste tipo de 
configuração do temporizador é caso do controlo de uma luz de um parque automóvel 
subterrâneo. Neste caso, pretende-se que a luz que ilumina o parque, apenas esteja 
acesa 30 segundos após o carro ter entrado no parque. 
 
10.0
0.0
TIM
10
#50
10.0
TIM 10
10.0
0.0
 
 
Neste caso, a saída 10.0 ficará no estado OFF após 5 segundos a condição de 
execução ter ficado OFF. Na figura que se segue, é possível verificar a evolução 
temporal da entrada e da saída e concluir que a saída 10.0 apenas permanece em ON 
5 segundos após a entrada ter passado a OFF. 
 
5 seg.
10.0
0.0
 
Exemplo de aplicação 
Uma lâmpada de sinalização deve permanecer a piscar, com período de 20 
segundos, durante todo o tempo em que um carro se movimenta. O carro é 
comandado a partir de um botão premido continuadamente durante todo o 
movimento. 
 
A atribuição de endereços é a seguinte: 
 
 IR 00.00 - carro 
 IR 10.08 - lâmpada 
 TIM 000 e 001 - temporizadores para a onda quadrada 
 
A representação dos estados que os temporizadores para formar a onda quadrada 
deverão tomar está ilustrada na figura que se segue. 
 
 
Automação e Robótica 38
TIM 000
TIM 001
 
 
Na figura que se segue, encontra-se representado o programa que implementa a 
onda quadrada. 
 
TIM 000
TIM
000
#100
carro
lampada
TIM 001
TIM
001
#100
TIM 000
 
 
2.4.3 Temporizador de alta velocidade 
Este temporizador, designado por TIMH, é semelhante ao TIM, exceptuando o facto 
daquele ter como unidades de medida as centésimas de segundo (0,01 s). 
 
TIM 000
TIM H
000
#150
10.0
0.0
 
 
Na figura anterior, a saída 10.0 estará a ON após 1,5 segundos a entrada 0.0 ter 
passado a ON. 
2.5 CONTADORES 
Os contadores são utilizados para contar o número de eventos associados a uma 
determinada condição. 
 
2.5.1 CNT 
A instrução CNT é usada para contar de forma decrescente desde um valor pré-
definido (VC), quando a condição de execução em CP passa de OFF para ON, isto é, o 
valor corrente (PV) será decrementado de 1 unidade sempre que CNT é executado, 
com CP=ON, e que a condição de execução tenha sido OFF na última execução. 
 
Automação e Robótica 39
CNT
N
VC
CP
R
 
 
em que N é o numero do contador e VC é o valor 
inicial do contador. 
 
O contador é desactivado com a entrada de reset R. Quando R passa de OFF para 
ON, o valor actual passa a valer VC. O valor presente nunca é decrementado quando R 
é ON. 
 
CNT 001
CNT
001
#700
10.0
0.0 255.02
0.1
R
CP
 
 
O contador 001 conta o número de vezes que oclock (SR 25502) vai de OFF a ON. A 
entrada 0.0 é utilizada para controlar o tempo quando o contador está em operação 
(1seg x 700 =11 minutos e 40 segundos). 
 
2.5.2 Contador reversível CNTR 
O contador reversível, designado por CNTR, permite contar de forma crescente ou 
decrescente, isto é, é utilizado para contar entre 0 e VC de acordo com duas 
condições de execução, na entrada incremental (EI) e na entrada decremental (ED). 
O valor corrente será incrementado de uma unidade quando a condição de 
execução para EI é ON e a última condição de execução é OFF. 
 
CNTR
N
VC
EI
R
ED
 
 
Se simultaneamente as entradas EI e ED passarem a ON, o valor corrente não se 
alterará. O contador é desactivado através da entrada R. Quando chegar a zero, o 
contador fica a ON. 
Este tipo de contador é circular, pois se o valor actual do contador coincidir com o 
valor pré-definido do contador, e se a entrada EI passar a ON, então o próximo valor 
do contador passará a ser 0. 
 
0 VC. . . 
 
Automação e Robótica 40
2.5.3 Exemplo de aplicação 
Considere um posto de embalamento de produtos. Os produtos chegam ao posto 
através de um tapete rolante. 
 
Co
nt
en
to
r
 
Figura 5.9 - Sistema de embalamento com peças semelhantes 
Existe um sensor no referido posto, que permite a detecção dos produtos. Sempre 
que existam 100 produtos no contentor deve ser colocado um novo contentor 
utilizando um actuador pneumático. 
Atribuição de endereços: 
 
 IR 00.00 - detector 
 IR 10.00 - actuador 
 TC 120 - contador 
 
O diagrama de contactos para este problema é o representado de seguida. 
 
CNT 120
CNT
120
#100
detector
CNT 120
R
CP
DIFU actuad
 
 
Pretende-se efectuar algumas melhorias no sistema: 
• se uma peça estiver mais de 5 segundos em frente ao posto, então gera 
alarme; 
• quando chega a 100, o tapete deve parar, para dar tempo à mudança de 
contentor; 
• após 10 segundos, o tapete deve voltar a funcionar; 
• possibilidade de detectar dois tipos de peças A e B (contentor A - 100 peças 
e contentor B - 50 peças), tal como se mostra na próxima figura. 
 
 
Automação e Robótica 41
Actuador
pneumático
A
B
 
Figura 5.10 - Selecção de diferentes tipos de peças 
2.6 INSTRUÇÕES DE MANIPULAÇÃO DE DADOS 
A solução de determinados problemas requer a necessidade de manipular não 
apenas um bit mas sim um conjunto de bits agrupados numa palavra (word), 
constituída por dois bytes, ou seja 16 bits. 
 
2.6.1 MOVE 
Esta instrução permite copiar o conteúdo de uma palavra origem para uma palavra 
destino, sempre que a condição de execução for verdadeira. 
 
MOV
S
D 
 
em que S é a palavra origem, que pode 
pertencer às áreas IR, SR, AR, DM, HR, 
TC, LR ou ser um valor numérico, e D é a 
palavra destino, que pode pertencer às 
áreas IR, SR, AR, DM, HR e LR. 
 
É preciso ter em atenção que os DM 6144 a DM6655 não poderão ser utilizados para 
a palavra destino, pois pertencem a uma área de memória reservada apenas a leitura. 
 
Palavra Origem
. . .
Palavra Destino
. . .
MOV
 
 
O estado dos bits da palavra origem é preservado durante a realização da instrução 
MOV. 
 
MOV
001
HR 05
0.0
 
 
Neste caso, quando a entrada 0.0 estiver em ON, o conteúdo de IR 001 é copiado 
para HR05. Por exemplo se IR 001 contiver o valor 01101011111, então HR05 passará a 
conter esse valor. 
 
 
Automação e Robótica 42
IR 000 : 0110 1011 111 
... 
 ⇓ ⇓ ⇓ 
HR 05 : 0110 1011 111 
... 
 
2.6.2 MOVE NOT 
Esta instrução é semelhante ao MOV, com a diferença de quando a condição de 
execução for verdadeira, é copiado para a palavra destino o conteúdo invertido da 
palavra origem. Se a palavra origem for um valor numérico, então deverá estar no 
formato hexadecimal. 
 
MVN
#F8C5
DM 001
0.0
 
 
Uma vez que # F8C5 em hexadecimal é semelhante a 111 1000 1100 0101 em 
binário, então o valor que será transferido para o DM 0010 será 0000 0111 0011 1010, 
que é o complementar de #F8C5. 
 
2.6.3 Instruções Diferenciais 
Algumas instruções permitem tanto a forma não diferencial como a diferencial. As 
instruções são distinguidas através da colocação do símbolo @ imediatamente antes 
da mnemónica da instrução. Uma instrução não diferencial é executada sempre que a 
condição de execução é ON. 
Uma instrução diferencial é executada apenas após a condição de execução passar 
de OFF a ON. Se a condição de execução não se alterou ou se mudou de ON para OFF, 
a instrução não será executada. 
 
@MOV
HR 10
DM 000
0.0
Diagrama A Diagrama B
MOV
HR 10
DM 0000
0.0
 
 
No diagrama A, que apresenta a instrução MOV não diferencial, o conteúdo de HR10 
é copiado para DM 0000 sempre que o programa execute a linha de instrução. Se o 
tempo de ciclo é 80 ms e 0.0 permanece em ON por 2,0 segundos então a operação 
MOV é executada 25 vezes, sendo apenas preservado o último valor que é copiado 
para DM 0000. 
No diagrama B, a instrução diferencial @MOV move o conteúdo de HR 10 para DM 
0000 apenas quando 00.00 passa a ON. Mesmo que 00.00 se mantenha em ON durante 
 
Automação e Robótica 43
2 segundos com o mesmo tempo de ciclo (80 ms), a instrução só será executada uma 
vez, aquando do primeiro ciclo, no qual 00.00 passa de OFF para ON. 
 
2.6.4 Endereçamento Indirecto 
Quando a área DM é especificada para um operando, um endereço indirecto poderá 
ser utilizado, vulgarmente designado por apontador. Um apontador diferencia-se de 
um endereço normal por ter um asterisco antes do prefixo DM: *DM XXXX. 
Quando se utilizam apontadores, o DM especificado conterá o endereço da palavra 
DM que contém a informação que será usada como operando da instrução. 
 
 
MOV
*DM 0001
LR 00
4C59
1111
F35A
5555
2506
D541
. . .
DM 0000
o valor 5555 é
copiado para LR00
indica DM 1111
DM 1113
DM 1112
DM 1111
DM 0002
DM 0001
 
Figura 5.11 - Utilização de apontadores no endereçamento de memória 
No exemplo anterior, *DM 0001 é utilizado como 1º operando da instrução MOV, 
sendo o seu conteúdo o apontador para a posição de memória DM 1111, cujo conteúdo 
será copiado para o segundo operando, neste caso, o LR 00. 
 
Importante: Quando se trabalha com endereços indirectos, o conteúdo do DM que 
irá especificar a palavra que contém a informação, deverá estar em formato BCD e 
compreendido entre 0000 e 1999. 
 
2.7 INTERRUPÇÕES 
Uma interrupção é um tipo de entrada especial que permite o tratamento imediato 
do acontecimento, deixando por instantes de executar o programa principal. Após ter 
sido tratada a interrupção, o ciclo de execução volta ao programa principal. O 
autómato programável CPM1 possui três tipos de interrupções, descritas de seguida: 
• Entradas de interrupção - o processamento da interrupção é executada 
quando uma das entradas de interrupção passa a ON a partir de uma fonte 
externa. 
• Interrupções temporizadas - o processamento da interrupção é executado a 
partir de um temporizador com precisão de 0,1 ms. 
• Interrupções de contadores - o processamento da interrupção é executado 
quando o contador atinge o valor especificado no contador. 
 
Automação e Robótica 44
As entradas de interrupção tem prioridade sobre os outros dois tipos de 
interrupção. Quando 2 entradas de igual prioridade são actuadas simultaneamente, é 
executada a entrada de interrupção 0, no que se segue a entrada de interrupção 1, 
etc. 
O CPM1 possui as entradas 0003 a 0006 como entradas de interrupção, que podem 
ser definidas como entradas de interrupção utilizando o DM 6628. 
 
 
Palavra Valores 
 
DM 6628 
 
0 : entrada normal 
1: entrada interrupção 
2: entrada de resposta rápida 
 
Figura 5.12 - Configuração das interrupções 
As interrupções das entradas 00.03 a 00.06 são alocadas às interrupções 00 a 003 e 
às subrotinas 000 a 003. Se as entradas de interrupção não estiverem a ser utilizadas, 
as subrotinas de interrupção 000 a 0003 podem ser utilizadas como subrotinas 
normais. 
Quando uma entrada de interrupção é recebida, o programa principal éinterrompido e o programa de interrupção é executado imediatamente. O sinal de 
interrupção deverá estar a ON durante pelo menos 200 µs, de forma a ser detectado. 
 
Programa de Interrupção
Programa
Principal
Programa
Principal
Entrada de
interrupção 
Figura 5.12 - Funcionamento de uma interrupção 
Para activar as entradas de interrupção é necessário utilizar a instrução INT. 
 
INT
CC
000
D 
 
em que CC é o código de controlo e D são 
os dados de controlo. 
 
Se pretendermos configurar as entradas que se pretendem que sejam interrupções, 
deveremos utilizar o valor 000 no parâmetro CC (permite colocar uma máscara nas 
entradas de interrupção). No parâmetro D deverá ser colocado o valor que 
corresponda à activação das entradas de interrupção; por exemplo, se pretendermos 
configurar a entrada 0.4 como entrada de interrupção, devemos colocar o valor #D (1 
1 0 1). 
 
DM 6628
0003
0004
0005
0006
Bit 0Bit 15
 
 
Automação e Robótica 45
Exemplo de aplicação 
Vamos considerar o diagrama que se segue, em que se representa a activação de 
uma interrupção a partir da entrada 0.3. 
.
.
.
INT
000
000
#000E
SBN 000
 RET
Programa de
interrupção
0.3
 
 
Quando a entrada 00.03 (interrupção numero 0) vai a ON, o controlo passa 
imediatamente para o programa de interrupção com a subrotina 000. As entradas de 
interrupção foram configuradas no DM 6628 com o valor 0001. 
 
0.
6 
0.
5 
0.
4 
0.
3 
1 1 1 0 
 
O valor #E colocado na instrução INT, permite o enable da interrupção da entrada 
0.3. 
 
2.8 SUBROTINAS 
As subrotinas permitem dividir as tarefas complexas de controlo em pequenos 
módulos. Quando o programa principal invoca a subrotina, o controlo é transferido 
para a subrotina, sendo as instruções da subrotina executadas. Quando todas as 
instruções da subrotina estiverem concluídas o controlo regressa ao programa 
principal. 
 
em que N é o numero da subrotina. 
 
 
Na figura que se segue é possível verificar que a instrução SBS 000 permite realizar 
um salto no programa principal para a subrotina 0, representada pela instrução SBN 
00. 
 
SBS N
 
 
Automação e Robótica 46
Programa Principal
 SBS 00
Programa Principal
 SBN 00
Subrotina
 RET
 END 
Figura 5.13 - Principio de funcionamento das subrotinas 
O final da subrotina é representado pela instrução RET, que retorna a execução do 
programa para a instrução seguinte a da chamada da subrotina. 
 
 
Automação e Robótica 47
3 MODELAÇÃO DE SISTEMAS COMPLEXOS CONDUZIDOS POR EVENTOS 
3.1 INTRODUÇÃO AO GRAFCET 
O GRAFCET (Graphe de Commande Etape-Transition) foi estabelecido em 1977 pela 
“Association Française pour la Cybernétique Economique et Technique”, e é uma linguagem 
gráfica utilizada para representar o algoritmo de controlo, com respeito às suas interacções 
com o mundo exterior. A linguagem GRAFCET fornece aos utilizadores a possibilidade de 
implementar projectos de automação simples ou complexos, com eficiência e baixo custo. De 
uma forma simples, o GRAFCET consiste em: 
• Dois elementos gráficos: ETAPAS e TRANSIÇÕES. 
• Dois elementos de controlo: ACÇÕES para as Etapas e Receptividades para as 
transições. 
Uma etapa é ligada sempre a uma transição e uma transição é sempre ligada a uma 
etapa, através de ligações orientadas. 
SOBE_BROCA SE /BROCA_UP1
LIGA_BROCA;
BAIXA_BROCA SE T/X2/3s/2
LIGA_BROCA;
SOBE_BROCA3
t1 INICIO.BROCA_UP
t2 BROCA_BAIXO
t3 BROCA_UP
Acção
Etapa InicialLigação
Etapa
Transição
Receptividade
 
Figura 6.1- Exemplo de um Grafcet 
A utilização da ferramenta Grafcet oferece algumas vantagens, das quais se 
destacam as seguintes: 
• Suportado por um Standard - suportado pelo standard IEC 848 da International 
Electrotechnical Commission, representativo de todas as empresas que suportam 
o Grafcet de modo a manter a sua integridade e universalidade. 
• Gráfico Orientado ao Processo - desenvolvido para aplicações de processo, o 
Grafcet possui características que não são suportadas pelas outras ferramentas 
similares, tais como processamento paralelo. 
 
Automação e Robótica 48
• Desenvolvimento independente do autómato programável - o trabalho de 
especificação realizado com o Grafcet é completamente independente do tipo 
de autómato programável que será utilizado na aplicação de automação. 
• Tarefa de concepção facilitada - o formato gráfico torna mais fácil a tarefa de 
identificação de erros de concepção. Mais importante, o Grafcet diminui o custo 
dos erros de interpretação, quer sejam originários de construtores, fornecedores 
ou equipas de concepção. 
• Redução do tempo de desenvolvimento de aplicações - o Grafcet o 
desenvolvimento de um método para a implementação de código para autómatos 
programáveis. Actualmente, o GRAFCET é a linguagem mais produtiva e flexível 
desenvolvida para automação de processos. 
 
3.2 ESPECIFICAÇÃO FUNCIONAL E TECNOLÓGICA 
A especificação de automatismos industriais requer a consideração dos seguintes 
pontos: funcional e tecnológico [Novais, 94]. 
 
3.2.1 Especificação Funcional 
A especificação funcional engloba as seguintes características: 
• Descreve as interacções entre as partes de Comando e Operativa. 
• Define as funções, informações e comandos implicados no automatismo. 
• É independente das opções tecnológicas. 
3.2.2 Especificação Tecnológica 
A especificação tecnológica engloba as seguintes características: 
• Descreve fisicamente as trocas de informação entre as partes operativas e de 
comando. 
• Define os meios de comunicação entre o operador e o automatismo. 
 
3.3 CONCEITOS BÁSICOS DO GRAFCET 
3.3.1 Etapas 
O princípio fundamental do Grafcet é a redução do processo de controlo a etapas 
simples. 
Uma etapa corresponde a uma situação do sistema, ou de parte dele, em que o 
comportamento permanece invariante. A etapa é representada por um quadrado com 
 
Automação e Robótica 49
um número no interior. A entrada é efectuada na parte superior do quadrado e a saída 
na parte inferior. 
 
LIGA_BROCA;
BAIXA_BROCA SE T/X2/3s/2
 
Figura 6.2 - Etapa e Acção 
Uma etapa está activa ou inactiva. Uma etapa activa é assinalada com um ponto (.) 
na parte inferior do seu símbolo. 
LIGA_BROCA; SOBE_BROCA2
•
 
Figura 6.3 - Etapa activa ou validada 
O estado actual do sistema é caracterizado pelo conjunto das etapas activas. 
A cada etapa estão associadas acções. As acções são executadas enquanto a etapa 
está activa, e controlam as saídas que tem por objectivo a execução de diversas 
funções. 
Quando uma etapa está activa, são executadas as acções associadas à etapa. As 
várias acções estão separadas pelo símbolo “;” ou então por um traço horizontal. 
 
3.3.2 Transições 
As etapas do gráfico são separadas por transições. As transições representam a 
possibilidade de evolução entre etapas. 
 
1 
1 INICIO.BROCA_UP
 
Figura 6.4 - Transição e Receptividade 
A cada transição está associada uma condição lógica denominada por 
receptividade. 
A evolução no GRAFCET requer que a etapa esteja activa e a receptividade 
associada à transição seja 1. 
A utilização de operadores lógicos AND e OR representa-se na receptividade pelo 
uso dos símbolos “•“ e “+”. Assim, a condição lógica é verdadeira se INICIO e 
BROCA_UP são condições verdadeiras. 
 
3.4 PRINCÍPIO DE FUNCIONAMENTO 
Na definição do Grafcet existem várias regras que governam o seu comportamento, 
e que serão descritas de seguida. 
 
Automação e Robótica 50
3.4.1 Inicialização 
As etapas activas após a inicialização são assinaladas duplicando o contorno dos 
respectivos símbolos. 
 
SOBE_BROCA SE /BROCA_UP1
 
Figura 6.5 - Etapa Inicial 
Neste caso, a acção da etapa 1 contém apenas um elemento de controlo: furação. 
 
3.4.2 Validação 
Uma transição está validada ou não validada. Está validada se todas as etapas de 
entrada estiverem activas. 
 
3.4.3 Disparo de uma transição 
Uma transição é disparada se estiver validada (a etapa anterior está activada) e a

Continue navegando