2.2 Controlador Lógico Programável
2.2.2 Programação de CLPs
Controladores lógicos programáveis são projetados para executar os seus programas dentro de um ciclo contínuo chamado de varredura. No ciclo de varredura, o controlador lê a porta de entrada e grava a informação na imagem de entrada, logo após, o controlador processa as instruções e, finalmente, escreve a imagem de saída na porta de saída. O ciclo de varredura é processado em um ciclo fechado, como representa a Figura 8
Atua
lização das Entra
das Atu ali za çã o da s S aí d as Proc es sa m en to do Pro gra ma Scan das Entradas Scan das Saídas Scan do Programa
Figura 8 – Ciclo de varredura de um programa para um CLP (Adaptado de [2]).
Existem várias linguagens de programação utilizadas em CLPs. A padronização dessas linguagens é feita de acordo com a norma IEC 61131-3. É possível separar as linguagens em três grandes categorias, como visto na Tabela 2. Uma breve descrição de cada um das principais linguagens de programação é apresentada na sequência.
Tabela 2 – Classificação de linguagens de programação de CLPs Classes Linguagens
Tabulares Tabelas de decisão Textuais IL (Instruction List)
ST (Structured Text) Gráficas
LD (Ladder Diagram)
FBD (Function Block Diagram) SFC (Sequential Flow Chart)
Linguagem de programação Tabulares/Tabela de decisão: consiste em uma Ta-
bela verdade em que para cada linha há um conjunto de colunas que definem em lógica binária uma condição do sistema físico; outras colunas da mesma linha definem as con- sequências lógicas da condição. Esse tipo de linguagem é atualmente pouco utilizado devido ao aparecimento de linguagens mais avançadas
Linguagem de programação textual: essa categoria de programação é um pouco
mais complexa e provém do setor eletrônico e informático, deste modo, constitui uma verdadeira linguagem de programação [14]. Fazem parte dessa categoria as linguagens: Lista de Instruções (IL – Instruction List) e Texto Estruturado (ST – Structured Text).
• Lista de instruções (IL): é uma linguagem de máquina muito parecida com a linguagem Assembler. É uma linguagem pouco prática e pouco intuitiva, não possui representação gráfica e requer muito tempo para a pesquisa de falhas no programa. • Texto estruturado (ST): essa linguagem é de alto nível, assim como as linguagens Pascal, Basic e C++, e pode ser indispensável em algumas aplicações ou nas redes de comunicação. É a linguagem de programação mais potente para CLP, pois oferece possibilidades inexequíveis em outras linguagens.
Linguagem de programação gráfica: a linguagem de programação gráfica é apresen-
tada como um esquema elétrico ou um esquema de blocos [14]. Nessa categoria estão as linguagens: Diagrama Ladder (LD – Ladder Diagram), Diagrama de Blocos Funcionais (FBD – Function Block Diagram) e Sequenciamento Gráfico de Funções (SFC – Sequential
Function Chart).
• Linguagem Ladder (LD): é a linguagem de programação mais utilizada para a programação do CLP. É composta de uma série de sinais gráficos e provém da lógica de relés e contatos. O esquema do Ladder é composto de uma linha vertical esquerda, denominada de barra de alimentação, uma linha vertical direita, nomeada de retorno comum ou massa, que conecta as variáveis de saída (output) e uma zona de ação, ou output, que representa as variáveis de saída.
• Diagrama de Blocos Funcionais (FBD): é uma linguagem composta por sím- bolos gráficos de lógica booleana, com comandos padronizados. É muito utilizada nos sistemas de controle de grandes instalações de processos.
• Sequenciamento Gráfico de Funções (SFC): nesta linguagem são represen- tadas sequencialmente as etapas do programa. Dessa forma, é possível ter uma visualização objetiva por passos de um processo automático. Cada bloco (P) repre- senta um estado do processo e cada transição (T) é uma condição para mudar o estado.
2.2.2.1 Programação linear e estruturada
Duas abordagens clássicas na programação de CLPs são a a programação linear e a programação estruturada. Na programação linear o programa é gravado em um bloco e é executado da primeira até a última instrução. Na programação estruturada o programa pode ser divido em vários blocos e ligados de forma hierárquica. Assim, cada bloco compõe uma parte do processo. Na programação estruturada deve haver pelo menos um bloco principal na estrutura e esse bloco pode ser dividido em outros blocos secundários, que executam certas funções e são chamados e retornam através do bloco principal.
A programação estruturada tem algumas vantagens sobre a programação linear, como por exemplo: os programas maiores podem ser programados de forma mais clara; Pode-se padronizar as partes mais utilizadas no programa; A organização do programa é Sim- plificada; O programa pode ser testado em partes e; Existe uma grande facilidade na modificação do programa. Um exemplo da programação linear e estruturada é mostrado na Figura 9 Programa Linear Todas as instruções se encontram em um único bloco (normalmente no bloco de organização OB 1) Programa Estruturado
Funções reutilizáveis são carregadas dentro de blocos individuais. O bloco OB 1 (ou outros blocos) chamam
estes blocos e transferem parâmetros
Bomba
Exaustor
OB 1 OB 1
Figura 9 – Programação linear e estruturada em um CLP.
Na célula de encaixotamento robotizada descrita neste documento, foram usados CLPs da família SIMATIC S7-1200 da SIEMENS GA. As CPUs S7-1200 permitem programação linear e estruturada. A programação estruturada na linguagem SIMATIC se chama pro- gramação de blocos. Existem alguns tipos de blocos fundamentais que podem ser usados pela linguagem SIMATIC na programação dos CLPs, como mostrado a seguir:
• Organization Block (OB): os blocos OB executam a estrutura do programa. Eles são a interface entre o sistema operacional da CPU e o programa aplicativo.
• Function Block (FB): os blocos FB são blocos com memória programável do usuário.
• Data Block (DB): os blocos DB são utilizados para armazenar dados do usuário em qualquer ponto do programa.
• Instance Data Block (DB): as Instance Data Block fornece um bloco de memória associado aos blocos FB. São gerados de forma automática depois da criação do bloco FB para armazenar os dados.
Cada CPU da família SIMATIC S7-1200 da SIEMENS GA permite um número má- ximo de cada tipo de bloco. O bloco mais importante e indispensável é o bloco OB, que contém a lógica principal do programa.