aula 2 - padrão iec61131
DESCRIPTION
AULA 2 - Padrão IEC61131TRANSCRIPT
PadrãoIEC 61131
09 de março de 2010
OBJETIVOS
• Desenvolvimento de habilidades básicas para programaçãono padrão IEC 61131-3;
• Capacitar o entendimento de uma programação IEC;
• Conhecer as características das linguagens da norma.
BENEFÍCIOS
• Redução nos gastos com recursos humanos (em treinamento,depuração, manutenção e consultoria);
• Técnicas de Programação usadas em mais ambientes(Controle Industrial Geral);
• Combinar harmoniosamente diferentes componentes dediferentes locações, empresas, paises ou projetos.
• Modularizar o problema de controle;
• Estruturar a programação do controlador;
• Reutilizar software e conhecimento;
IEC 61131
• Trata-se de um padrão IEC (Internacional ElectrotechnicalCommission) para CLPs;
• Único padrão global para programação de controle industrial;
• Primeiras partes publicadas em 1992;
• Uma interface de programação padrão permite as pessoascom diferentes habilidades e formações, criar elementosdiferentes de um programa durante estágios diferentes dociclo de vida de um software: especificação, projeto,implementação, teste, instalação e manutenção.
PARTES
IEC 61131 - Linguagens
• O padrão inclui a definição da linguagem Sequential FunctionChart (SFC), usada para estruturar a organização interna doprograma, e de quatro linguagens:
– Lista de Instrução (IL);
– Diagrama Ladder (LD);
– Diagrama de blocos de funções (FBD);
– Texto Estruturado (ST).
CERTIFICAÇÃO DE PRODUTOS
• PLCOpen é uma associação independente que promove umapadronização na implementação da norma IEC 61131-3.
– Atuação:
• Divulgação da norma;
• Definição de interfaces comuns;
• Certificação de produtos;
– Recomendações sobre utilização da norma.
– WWW.PLCOPEN.ORG
IDENTIFICADORES
• O primeiro caracter não pode ser um dígito.
• Caracter underline múltiplos não são permitidos.
• Identificador não pode incluir espaço.
• Embora os identificadores possam ter qualquer tamanho, apenas os 6 primeiros caracteres são considerados para unicidade.
• Palavras chaves: Não usar identificadores que coincidam com as palavras chaves da linguagem.
(***********************************)
(* Comentários devem ser envolvidos por *)
(***********************************)
TIPOS DE DADOS
• Inteiro;
• Real (ponto flutuante);
• Data e hora;
• String;
• Booleana, Byte e Word.
INTEIROS
• Um CLP não precisa suportar todos estes tipos de dados.
PONTO FLUTUANTE
DURAÇÃO (TEMPO)
• Medição de intervalos de tempo ou definição de timeouts;
DATAS
• Armazenar a data e tempo de eventos e alarmes.
• Escalonar eventos de controle baseado em data e hora. Porexemplo aquecer automaticamente um reator emdeterminada hora.
• Armazenar quando um sistema foi desenergizado e recuperoupara calcular tempo de down time. Medição de intervalos detempo ou definição de timeouts;
DATAS
DATAS
STRING
• Armazenar nome de bateladas: 'JOB_X32A3‘;
• Armazenar texto de mensagens para operador;
• Armazenar mensagens para outros sistemas;
• Caracteres não printáveis devem ser inseridos na notação:
$Código_hexadecimal_do_caracter;
$0D$0A Alimenta linha e retorna carro;
STRING
• Exemplos:
'Fim da batelada AX45_65'
'Fim do relatório $N'
'$01$02$10 - 3 caracteres com código decimal 1, 2 e 16
- string nulo
BIT STRING
• Uma variável do tipo BOOL tem dois estados: TRUE e FALSE.
• Bit strings são definidos da mesma forma que uma variável inteira:
146
2#1101
etc
VALORES INICIAIS
TIPOS DE DADOS DERIVADOS
• Devemos usar as palavras chaves para construtores de tipos:
TYPE
PRESSURE: REAL;
END_TYPE;
ESTRUTURA
• Uma estrutura é construída através de um construtor de estruturas:
STRUCT
END_STRUCT;
• Vamos definir um novo tipo para designar um sensor de pressão que deverá conter:
1. O valor corrente da pressão como uma variável analógica.
2. O status do dispositivo: operante ou faltoso
3. A data da calibração
4. O máximo valor seguro de operação
5. O número de alarmes no período de operação corrente.
ESTRUTURA
TYPE PRESSURE_SENSOR:
STRUCT
INPUT: PRESSURE;
STATUS: BOOL;
CALIBRATION: DATE;
HIGH_LIMIT: REAL;
ALARM_COUNT: INT;
END_STRUCT;
END_TYPE
ENUMERAÇÕES
• Serve para nomear os diferentes status de um valor:
TYPE MODO_DO_DISPOSITIVO:
(INICIALIZANDO, EXECUTANDO, STANDBY, FALHA);
END_TYPE
FAIXAS
• Pode-se definir faixa de valores de segurança para variáveis:
TYPE
MOTOR_VOLTS: INT(-6..+12);
END_TYPE
• O compilador deve assegurar que apenas valores dentro da faixa designada sejam atribuídos ás variáveis.
ARRAYS
• Pode ser constituído de múltiplos valores dos tipos de dados elementares ou derivados.
TYPE TANQUE_PRESSURE:
ARRAY [1..20] OF PRESSURE;
END_TYPE
TYPE PÁTIO_DE_TANQUES:
ARRAY [1..3, 1..4] OF TANQUE_PRESSURE;
END_TYPE
INICIALIZAÇÃO DE VARIÁVEIS
TYPE PRESSURE:
REAL:=1.0; (* Default 1 bar *)
END_TYPE
TYPE MODO_DO_DISPOSITIVO:
(INICIALIZANDO, EXECUTANDO, STANDBY, FALHA):= STANDBY;
END_TYPE
TYPE VESSEL_PRESS_DATA:
ARRAY[1..20] OF PRESSURE:= 10(1.1), 5(1.3), 5(1.7);
END_TYPE
INICIALIZAÇÃO DE VARIÁVEIS
TYPE PRESSURE_SENSOR:
STRUCT
INPUT: PRESSURE:= 2.0; (* substitui default *)
STATUS: BOOL := 0; (* Default 0 *)
CALIBRATION: DATE:= DT#1994-01-10; (* Data de instalação *)
HIGH_LIMIT: REAL := 30.0; (* Limite default *);
ALARM_COUNT: INT :=0; (* Sem alarmes *)
END_STRUCT;
END_TYPE
INICIALIZAÇÃO DE VARIÁVEIS
• Redefinindo valores defaults de membros de estruturas:
TYPE GAS_PRESSURE_SENSOR:
PRESSURE_SENSOR(PRESSURE:=4.0, HIGH_LIMIT:=40.0);
END_TYPE
• Todos os tipos derivados de GAS_PRESSURE_SENSORherdarão os novos valores default.
DEFINIÇÃO DE VARIÁVEIS
• Devem ser definidas no início das Program Organisation Units(POUs):
• Programas• Blocos de Funções• Funções
• Uma lista de variáveis é declarada dentro da especificação do tipode variável:
ESPECIFICAÇÃO_DE_TIPOA, B, C: REAL;IN1, IN2: INT;
END_ESPECIFICAÇÃO_DE_TIPO
VARIÁVEIS INTERNAS OU LOCAIS
• São declaradas dentro de uma POU;
VAR
VELOCIDADE_MEDIA: REAL;
INIBE: BOOL;
END_VAR
VARIÁVEIS DE ENTRADA
• São as variáveis de entrada para uma POU e são supridas poruma fonte externa.
VAR_INPUT
SetPoint: REAL;
Max_Count: SINT;
END_VAR
VARIÁVEIS DE SAÍDA
• São as variáveis de saída de uma POU e fornecem valores queserão escritos em um dispositivo externo. São requeridas porprogramas e blocos de função, mas não por funções.
VAR_OUTPUT
Message: STRING(10);
Status: BOOL;
END_VAR
VARIÁVEIS DE ENTRADA/SAÍDA
• São as variáveis que agem tanto como entrada como saídapodendo ser modificadas em uma POU. O valor de umavariável de entrada e saída é armazenado numa variável que éexterna à POU.
TYPE MODO_DO_DISPOSITIVO:
(INICIALIZANDO, EXECUTANDO, STANDBY, FALHA):= STANDBY;
END_TYPE
VAR_IN_OUT
AUTO: MODO_DO_DISPOSITIVO;
END_VAR
VARIÁVEIS GLOBAIS
• Podem ser configuradas no nível de configuração, resource ouprograma e acessadas por POUs por meio de uma declaraçãode variável externa.
VAR_GLOBAL
Velocidade_Linha: REAL;
Numero_Job: INT;
END_VAR
VARIÁVEIS EXTERNAS
• São declaradas dentro de POUs e propiciam acesso a variáveisglobais definidas no nível de configuração, resource ouprograma.
VAR_EXTERNAL
Velocidade_Linha: REAL;
Numero_Job: INT;
END_VAR
VARIÁVEIS DE REPRESENTAÇÃO DIRETA
• São variáveis que permitem acessar diretamente as posiçõesde memória dos CLPs. Todas começam com o caracter %seguido de duas letras;
• A memória de um CLP pode ser dividida em três regiõeslógicas:
VARIÁVEIS DE REPRESENTAÇÃO DIRETA
%I100 (* Memória de entrada bit 100 *)
%IX100 (* Memória de entrada bit 100 *)
%IW122 (* Memória de entrada palavra 122 *)
%IW10.1.21 (* Poderia representar: Rack 10, Módulo 1, canal 21 *)
%QL100 (* Memória de saída long word 100 *)
%MW132 (* Poisção de memória 132 *)
RETENÇÃO
• Indica que as variáveis seguintes serão colocadas em memóriaretentiva, isto é que mantêm o seu valor em caso de perda dealimentação do CLP.
VAR_OUT RETAIN
PRODUCAO_ACUMULADA: REAL;
END_VAR
CONSTANTE
• Indica que os valores de uma lista de variáveis não podem sermodificados.
• Não pode ser utilizado com variáveis de saída.
(* Define velocidade inicial e relação entre engrenagens comoconstantes *)
VAR CONSTANT
StartUp_Speed: REAL := 12.3; (* m/s *)
GearRatio: SINT := 12;
END_VAR
AT
• É usado para fixar a posição de memória do CLP para algumavariável particular que possui um identificador.
• Todas as variáveis que não tiverem o atributo AT serãoendereçadas automaticamente pelo compilador.
(* Define que o array de varredura de dados irá começar na posição *)
(* de memória word 10, e que as saídas digitais no bit 120 *)
VAR
SCAN_DATA AT %IW10: ARRAY[1..8] OF SINT;
DIG_OUTPUTS AT%QX120: ARRAY[0..15] OF BOOL;
END_VAR
AT
• Também é possível usar o atributo AT para declarar quedeterminados tipos de dados existem em certas posições dememória.
(* Declara que a posição de memória 100 é ocupada por um inteiro e quea posição 210 é ocupada por um real *)
VAR
AT %IW100: INT;
AT %QD210: REAL;
END_VAR
INICIALIZAÇÃO DE VARIÁVEIS
• Durante a declaração de uma variável podemos atribuir um valor de inicialização que sobrescreve o valor default definido pelo tipo de dados.
VAR
Process_Runs: INT := 10;
Max_tem: REAL := 350.0;
END_VAR
VAR
(* Define palavra na posição de entrada 100 para valor binário 1001 *)
AT %I100: WORD:= 2#0000_1001;
END_VAR
INICIALIZAÇÃO DE VARIÁVEIS
VAR_OUTPUT
(* Mensagem inicial para operador *)
Message: STRING(21) := ‘Operacional’;
(* Estabelece perfil de velocidade *)
Speeds: ARRAY[1..4] OF REAL := 10.1, 2(20.5), 33.1;
END_VAR
VAR_GLOBAL
SENSOR1: PRESSSURE_SENSOR( PRESSURE := 4.0,
HIGH_LIMIT:= 50.0);
END_VAR
LINGUAGENS DE PROGRAMAÇÃO
IL – Lista de Instruções
• Linguagem textual de baixo nível (linguagem de máquina);
• Baseada em comandos “load”, “store”, “move”, “add”;
• Apresentam alta eficiência em pequenas aplicações (comosensores/atuadores inteligentes) ou na otimização de partesde uma aplicação;
• Utiliza o registrador IL do processador.
ST – Texto Estruturado
• Linguagem textual de ‘alto’ nível (similar ao Pascal, C, etc.) =>incorporando uma série de conceitos intuitivos;
• Utilização na implementação de procedimentos complexos,que são difíceis de expressar com linguagens gráficas taiscomo linguagem de algoritmos de otimização de processo einteligência artificial;
ST – Texto Estruturado
• Expressões de atribuição de valor:
Var1:= Var2;
• Expressões de seleção (if, then, else, case, etc.):
IF Var1= 0.0 THEN
Var2 := Var3/(2.0*Var4)
ELSE
Var2 := Var3/Var5;
• Expressões relacionadas a elaboração de loops (for, while, repeat, etc.):
FOR I:=1 TO 1000 BY 2 DO
Var2 := Var2 – 1;
END_FOR
ST – Texto Estruturado
• Expressões de controle do fluxo do programas (return, exit, etc.) :
• Expressões relacionadas a funções e blocos funcionais:
Monitor (In:=IX5) Chamada de bloco funcional
Var1 := Monitor.Q Uso da saída de um bloco de funções
LD - Ladder
• Trata-se de uma linguagem gráfica baseada em símbolos eesquemas elétricos, tais como relés, contatos e bobinas,proporcionando um entendimento intuitivo das funções deinter-travamento, sendo muito bem aceita pelos profissionaisda área de automação e controle de processos.
LD - Ladder
– Bobinas:
• Bobinas inversas.
• Bobinas sensíveis a borda de subida ou descida.
• Bobinas de memorização .
• Bobinas de set/reset.
– Temporizadores
• ‘On delay’.
• ‘Off delay’.
• Do tipo pulso.
– Comandos para manipulação do fluxo
• Return, jump..
LD - Ladder
FDB – Diagrama de Blocos Funcionais
• Linguagem gráfica que permite ao usuário construirprocedimentos combinacionais complexos utilizando-se deblocos lógicos padrões como, AND, OR, NOT, etc. pararepresentação de equações booleanas.
• Muito utilizado no desenvolvimento de dispositivosautomatizados de baixo custo.
SFC – Grafcet
• Também conhecido pelo nome de GRAFCET => divide o processoem um número definido de passos separados por transições.
• Núcleo do IEC 61131-3 => as outras linguagens são utilizadasapenas para descrever as ações realizadas a cada passo, bem comoas lógicas combinatórias envolvidas.
• Oferece muitas vantagens aos usuários e programadores =>modelagem de problemas complexos de automação.
• Problema pode ser sub-dividido em várias partes => programaçãomais simples.
• Fácil visualização das seqüências de operações, alteração deespecificação e a detecção de falhas conceituais no programa.
SFC – Grafcet
• O diagrama funcional GRAFCET deverá atender as seguintesexigências:
• Aplicabilidade a todo sistema lógico de controle para descrição deum automatismo industrial, não importando sua complexidade outecnologia utilizada (elétrica, mecânica, pneumática, eletrônicaatravés de software ou hardware dedicado, etc.);
• Possibilidade de uma descrição completa do sistema, onde asevoluções poderão ser expressas seqüencialmente, ou seja, apossibilidade de uma decomposição das etapas;
• Possibilidade de ser utilizada na descrição de processoscombinatórios, fornecendo assim ao automatismo uma descriçãoseqüencial mais fácil de ser analisada e compreendida.
SFC – Grafcet
SFC – Grafcet
SFC – Tipos de ações
• Condicionais: A execução de uma ação pode ser submissa auma condição lógica entre variável de entrada ou de outraetapa, isto é, mesmo o estado de uma etapa sendo ativo podehaver ações condicionais que não sejam executadas pois suacondição é momentaneamente falsa.
• Impulsionais: A ativação da ação ocorrerá durante um tempodeterminado, quando a etapa torna-se ativa;
• Contínuas: A ação permanece sendo executada enquanto aetapa estiver ativa.
SFC – Transições e Receptividade
SFC – Principais funções
• Funções Lógicas: As receptividades podem ser compostas pormais de uma variável, ligada através de uma das funçõeslógicas AND, OR ou NOT. As variáveis podem serrepresentadas por etapa, transição, entrada ou saída.
• Temporizador: Uma receptividade pode se tornar verdadeira,após um determinado tempo de ativação de umadeterminada etapa.
• Mudança de Estado: Uma receptividade pode avaliar oumudar o estado de uma variável. As variáveis podem ser umadeterminada etapa, transição, entrada ou saída.