Automação Industrial Parte 6 Prof. Ms. Getúlio Teruo Tateoki http://www.getulio.eng.br/meusalunos/autind.html
Definições básicas -É um meio de transmissão de informações entre dois ou mais elementos com capacidade de se comunicarem. Estes elementos não ficam restritos aos seres humanos, nem mesmo é exclusividade dos seres vivos, já que máquinas podem ser construídas com tal capacidade. -Na área da computação, define-se instrução como um comando que permite a um sistema com capacidade computacional realizar determinada operação. -Linguagem de programação é um conjunto padronizado de instruções que o sistema computacional é capaz de reconhecer.
Definições básicas -Programar significa fornecer uma série de instruções a um sistema com capacidade computacional, de maneira que este seja capaz de comportar-se deterministicamente, executando de forma automática as decisões de controle em função do estado atual, das entradas e das saídas do sistema num dado instante. -O programador é responsável por prever as situações possíveis do sistema, planejar uma estratégia de controle e codificar as instruções em uma linguagem de programação padronizada para posteriormente serem passadas ao sistema computacional.
Comentários É recomendado comentar as linhas do programa sempre que sua interpretação não for óbvia ou trivial. A norma IEC 61131-3 define que um comentário é iniciado pela sequência de caracteres (* e terminado pela sequência *). Exemplo: (* isto é um comentário *) Um comentário pode ser colocado em uma linha sem instruções
Unidades organizacionais de programas -O programa de um CLP é dividido em unidades individuais, chamada de Unidades Organizacionais de Programas (POU Program Organization Units) que podem ser dos seguintes tipos: Programas Blocos de funções (ou blocos funcionais) Funções
Entradas, saídas e memória -Os elementos mais importantes de um CLP são entradas, as saídas e a memória interna. Somente através de suas entradas o CLP recebe informações do mundo externo. De forma similar, o CLP só pode controlar algum dispositivo se estiver conectado em uma de suas saídas. -São as variáveis que permitem acessar diretamente a posições de memória dos CLPs Uma posição de memória de um CLP é identificada por três regiões lógicas. A primeira letra identifica se a variável está mapeando uma estrada, saída ou posição interna de memória.
Entradas, saídas e memória -Mapeamento das posições de memória de um CLP
Entradas, saídas e memória -A segunda letra identifica o tipo de dado:
Entradas, saídas e memória -Em se tratando de variável booleana, a letra X é opcional, ou seja, é possível representar a entrada discreta 1 om IX1 ou I1. -Os demais dígitos representam a posição de memória e estabelecem uma hierarquia que depende do CLP utilizado e também da filosofia do fabricante. O número de níveis hierárquicos não é definido pela norma. Alguns fabricantes utilizam números separados por pontos para definição de um endereço. Por exemplo, a variável IW2.1.33 poderia representar Rack2, Módulo 1, canal 33.
Entradas, saídas e memória -Exemplos:
Entradas, saídas e memória -A norma IEC 61131-3 não especifica a faixa de valores, que pode começar com 0 ou 1, dependendo do fabricante. Também não faz nenhuma referência a como devem ser atribuídos os bits individualmente dentro de um byte ou word. É comum utilizar por exemplo, M5.3 para designar o bit 3 da word 5, mas não é obrigatório que seja assim. -Outra questão é que a numeração da posição dos bits pode começar da direita para a esquerda ou inverso, sendo a primeira forma a mais comum. Uma das primeiras tarefas do programador é consultar o manual do CLP a ser utilizados para descobrir como são organizados esses itens.
Acesso direto a variáveis -De acordo com a norma IEC 61131-3, somente entradas, saídas e a memória interna do controlador podem ser acessadas diretamente pelo programa de controle. -Endereçar diretamente significa escrever ou ler diretamente na entrada, saída ou memória sem utilizar um identificador simbólico. A localização das suas posições físicas ou lógicas no sistema de controle é definida pelo respectivo fabricante do controlador.
Acesso direto a variáveis -O endereçamento direto é reconhecido pela utilização do símbolo % precedendo sua designação. Exemplos:
Acesso direto a variáveis -O uso de endereçamento direto de variáveis é permitido somente em programas, configurações e recursos. As Unidades Organizacionais do tipo função de bloco e bloco de funções devem operar exclusivamente com variáveis simbólicas visando mantê-los o mais independentes possível do controlador utilizado, possibilitando que esses blocos possam ser portados para outros controladores.
Tipo de dado -Em um programa de controle deve ser possível especificar valores para temporizadores, controladores, variáveis discretas, variáveis analógicas, etc.
Tipo de dado -Exemplos:
Strings -Normalmente são utilizadas para a troca de mensagens de texto com o operador ou outros sistemas, para relatar alarmes e informar a necessidade de intervenção do operador de forma geral. -É uma sequência de caracteres entre aspas simples.
Tempos e datas -Estes dados são utilizados para especificar tempo e podem conter valores como por exemplo, 2 minutos e 15 segundos. -A especificação deum tempo de duração consiste em uma parte introdutória, a palavra-chave T# ou t#, acompanhada de uma sequência que pode indicar dias, horas, minutos, segundos e milissegundos. As abreviações utilizadas são: d: dia h: hora m: minuto s: segundo ms: milessegundos
Tempos e datas -Exemplos de strings de tempos e de datas:
Outros tipos -Além desses tipos predefinidos, o usuário pode definir seus próprios tipos de dados. Os tipos derivados devem ser declarados entre as palavras-chave TYPE e de EnD_TYPE.
Outros tipos
Outros tipos
Endereçamento simbólico -Um identificador simbólico consiste nos itens descritos a seguir: Letras maiúsculas ou minúsculas, dígitos de 0 a 9 e o símbolo sublinhado _. O identificador deve começar com uma letra ou sublinhado. Não é possível utilizar dois ou mais caracteres sublinhados consecutivos. Não são permitidos espaços em branco. As letras maiúsculas ou minúsculas têm o mesmo significado, ou seja, os identificadores MOTOR_LIGADO, Motor_Ligado e motor-ligado representam o mesmo objeto.
Endereçamento simbólico -Exemplos: SENSOR: o identificador não começa com letra nem sublinhado. Botão_1: as letras não podem conter nenhum tipo de acento. Ent 2: espaços em branco não são permitidos Além do mais, os identificadores não podem ter os mesmos nomes das palavras-chaves prevista na norma.
Declaração de variáveis -Todas as variáveis a serem utilizadas pelas Unidades Organizacionais devem ser definidas no início destas. No caso das linguagens de programação textuais (Lista de Instruções ou Texto Estruturado), a declaração de variáveis é feita de forma semelhante à feita na linguagem Pascal. -Todas as variáveis devem ser declaradas entre a palavrachave VAR, que indica o início da declaração de variáveis e a palavra-chave END_VAR, que indica o final do bloco de declaração de variáveis.
Declaração de variáveis -Exemplo: -A declaração inicia-se com o nome simbólico da variável seguido do símbolo dois-pontos ( : ) e o seu tipo de dado e o símbolo ponto e vírgula ( ; ) para indicar o fim da declaração.
Variáveis internas -Frequentemente é necessário armazenar resultados intermediários que não necessitam ser conhecidos externamente. São utilizadas as variáveis locais, as quais são declaradas entre palavras-chave VAR e END_VAR.
Variáveis de entrada -São alimentadas externamente por uma unidade organizacional, por exemplo, um bloco funcional. Devem ser declaradas entre as palavras chave VAR_INPUT e END_VAR.
Variáveis de saída -São as variáveis de saída de uma Unidade Organizacional e fornecem valores que serão transferidos para um dispositivo externo. São utilizadas por programas e blocos de funções.
Variáveis de entrada e de saída -O valor de uma variável de entrada e de saída pode tanto receber quanto enviar um valor a outras Unidades Organizacionais.
Variáveis de entrada e de saída -As variáveis anteriormente são locais e só podem ser utilizadas dentro da unidade em que foram declaradas. Elas são desconhecidas por todas as outras unidades organizacionais, portanto também são inacessíveis a partir destas. -No caso dessas variáveis, elas podem existir repetidamente em diferentes unidades organizacionais. Assim, a variável temp pode ser declarada em diversos blocos funcionais distintos. Essas variáveis locais são totalmente descorrelacionadas e diferentes uma das outras.
Variáveis de entrada e de saída -Uma variável também pode ser declarada para ser visível globalmente. A declaração e feita de maneira semelhante, agora utilizando agora utilizando as palavras-chave VAR_GLOBAL e VAR_EXTERNAL.
Variáveis de entrada e de saída -As variáveis externas são declaradas dentro das Unidades Organizacionais e permitem acesso a variáveis globais declaradas em outras Unidades.
Inicialização -Frequentemente é necessário que uma variável contenha um valor inicial. Cada variável é inicializada com um valor correspondente ao seu tipo, conforme mostra a tabela abaixo, exceto quando especificado de outra maneira no programa.
Inicialização -Durante a declaração da variável é possível fazer com que ela inicialize com um valor diferente do padrão. Por exemplo, deseja-se declarar uma variável global do tipo inteira, com o nome de dezena.
Inicialização -Conforme o exemplo, o valor de inicialização é sempre inserido entre o tipo de dado, neste caso INT, e o símbolo de ponto e vírgula, indicador de término de sentença. O valor a ser inicializado deve ser precedido pelos símbolos :=. -Embora o valor da variável tenha sido definido no início do programa, ele pode ser alterado durante a execução.
Atributos de variáveis AT: serve para alocar uma variável em um determinado endereço. -Declarações como esta são a melhor maneira de definir as entradas e saídas do CLP. Se a conexão BTN_DESL, por exemplo precisar ser colocada em outra posição, basta alterar o endereço na declaração da variável e nenhuma alteração é necessária no corpo do programa.
Atributos de variáveis RETRAIN: o valor dessa variável será mantido em caso de falta de energia. CONSTANT: a variável não pode ser modificada.
Linguagens de programação -Visando atender aos diversos segmentos da indústria, incluindo seus usuários e uniformizar as várias metodologias de programação dos controladores industriais, a norma IEC 61131-3 definiu sintática e semanticamente cinco linguagens de programação: o Diagrama de Blocos de Funções (FBD Function Block Diagram) o Linguagem Ladder (LD Ladder Diagram) o Sequenciamento Gráfico de Funções (SFC System Function Chart)
Linguagens de programação o Lista de Instruções (IL - Instruction List) o Texto Estruturado (ST Structured Text) -Três destas são gráficas e duas são textuais
Linguagem Ladder Ladder Diagram (LD) -É uma linguagem gráfica baseada na lógica de relés e contatos elétricos para a realização de circuitos de comandos de acionamentos. Por ser a primeira linguagem utilizada pelos fabricantes, é a mais difundida e encontrada em quase todos os CLPs da atual geração. Lista de Instruções Instruction List (IL) -Inspirada na linguagem assembly e puramente sequencial, é caracterizada por instruções que possuem operador e, dependendo do tipo de operação, podem incluir um ou mais operandos, separados por vírgulas. É indicada para pequenos CLPs ou para controle de processos simples.
Texto Estruturado Structured Text (ST) -É uma linguagem textual de alto nível e muito poderosa, inspirada na linguagem Pascal, que contém todos os elementos essenciais de uma linguagem de programação moderna, incluindo as instruções condicionais ( IF-THEN- ELSE e CASE OF) e instruções de iterações (FOR, WHILE e REPEAT). -Como o seu nome sugere, encoraja o desenvolvimento de programação estruturada, sendo excelente para a definição de blocos funcionais complexos, os quais podem ser utilizados em qualquer outra linguagem IEC.
Diagrama de Blocos de Funções - Function Block Diagram (FBD) -É uma das linguagens gráficas de programação, muito popular na Europa, cujos elementos são expressos por blocos interligados, semelhantes aos utilizados em eletrônica digital. Essa linguagem permite um desenvolvimento hierárquico e modular de software, uma vez que podem ser construídos blocos de funções mais complexos a partir de outros menores e mais simples. -Normalmente os blocos são construídos utilizando a linguagem de texto estruturado.
Diagrama de Blocos de Funções - Function Block Diagram (FBD) -Por ser poderosa e versátil, tem recebido uma atenção especial por parte dos fabricantes. Seu uso é indicado para processos químicos em geral e em processamento descentralizado ou distribuído. -Devido à sua importância, foi criada uma norma para atender especificamente a esses elementos (IEC 61499), visando incluir instruções mais poderosas e tornar mais clara sua programação.
Sequenciamento Gráfico de Funções Sequential Function Chart (SFC) -É uma linguagem gráfica que permite a descrição de ações sequenciais, paralelas e alternativas existentes numa aplicação de controle. -Como é descendente direto do Grafcet, o SFC fornece os meios para estruturar uma unidade de organização de um programa num conjunto de etapas separadas por transições. A cada transição está associada uma receptividade que terá de ser satisfeita para que a transposição da transição ocorra e assim evolua para a etapa seguinte.
Sequenciamento Gráfico de Funções Sequential Function Chart (SFC) -Atualmente o SFC vem recebendo várias implementações nos CLPs de grande porte, afirmando-se como linguagem ideal para processos sequenciais.
Aplicação de linguagens de programação aos CLPs -Um item fundamental para utilização de um CLP é a seleção da linguagem a ser utilizada, a qual depende de diversos fatores, entre eles: Disponibilidade da linguagem no CLP; Grau de conhecimento do programador; Solução a ser implementada; Nível da descrição do problema; Estrutura do sistema de controle.
Aplicação de linguagens de programação aos CLPs -Por exemplo, a mesma lógica de controle pode ser representada pelas quatro linguagens ( IL, ST, FBD e Ladder).