59
Padrão IEC 61131 09 de março de 2010

Aula 2 - Padrão Iec61131

Embed Size (px)

DESCRIPTION

AULA 2 - Padrão IEC61131

Citation preview

Page 1: Aula 2 - Padrão Iec61131

PadrãoIEC 61131

09 de março de 2010

Page 2: Aula 2 - Padrão Iec61131

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.

Page 3: Aula 2 - Padrão Iec61131

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;

Page 4: Aula 2 - Padrão Iec61131

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.

Page 5: Aula 2 - Padrão Iec61131

PARTES

Page 6: Aula 2 - Padrão Iec61131

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).

Page 7: Aula 2 - Padrão Iec61131

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

Page 8: Aula 2 - Padrão Iec61131

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 *)

(***********************************)

Page 9: Aula 2 - Padrão Iec61131

TIPOS DE DADOS

• Inteiro;

• Real (ponto flutuante);

• Data e hora;

• String;

• Booleana, Byte e Word.

Page 10: Aula 2 - Padrão Iec61131

INTEIROS

• Um CLP não precisa suportar todos estes tipos de dados.

Page 11: Aula 2 - Padrão Iec61131

PONTO FLUTUANTE

Page 12: Aula 2 - Padrão Iec61131

DURAÇÃO (TEMPO)

• Medição de intervalos de tempo ou definição de timeouts;

Page 13: Aula 2 - Padrão Iec61131

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;

Page 14: Aula 2 - Padrão Iec61131

DATAS

Page 15: Aula 2 - Padrão Iec61131

DATAS

Page 16: Aula 2 - Padrão Iec61131

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;

Page 17: Aula 2 - Padrão Iec61131

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

Page 18: Aula 2 - Padrão Iec61131

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

Page 19: Aula 2 - Padrão Iec61131

VALORES INICIAIS

Page 20: Aula 2 - Padrão Iec61131

TIPOS DE DADOS DERIVADOS

• Devemos usar as palavras chaves para construtores de tipos:

TYPE

PRESSURE: REAL;

END_TYPE;

Page 21: Aula 2 - Padrão Iec61131

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.

Page 22: Aula 2 - Padrão Iec61131

ESTRUTURA

TYPE PRESSURE_SENSOR:

STRUCT

INPUT: PRESSURE;

STATUS: BOOL;

CALIBRATION: DATE;

HIGH_LIMIT: REAL;

ALARM_COUNT: INT;

END_STRUCT;

END_TYPE

Page 23: Aula 2 - Padrão Iec61131

ENUMERAÇÕES

• Serve para nomear os diferentes status de um valor:

TYPE MODO_DO_DISPOSITIVO:

(INICIALIZANDO, EXECUTANDO, STANDBY, FALHA);

END_TYPE

Page 24: Aula 2 - Padrão Iec61131

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.

Page 25: Aula 2 - Padrão Iec61131

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

Page 26: Aula 2 - Padrão Iec61131

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

Page 27: Aula 2 - Padrão Iec61131

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

Page 28: Aula 2 - Padrão Iec61131

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.

Page 29: Aula 2 - Padrão Iec61131

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

Page 30: Aula 2 - Padrão Iec61131

VARIÁVEIS INTERNAS OU LOCAIS

• São declaradas dentro de uma POU;

VAR

VELOCIDADE_MEDIA: REAL;

INIBE: BOOL;

END_VAR

Page 31: Aula 2 - Padrão Iec61131

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

Page 32: Aula 2 - Padrão Iec61131

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

Page 33: Aula 2 - Padrão Iec61131

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

Page 34: Aula 2 - Padrão Iec61131

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

Page 35: Aula 2 - Padrão Iec61131

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

Page 36: Aula 2 - Padrão Iec61131

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:

Page 37: Aula 2 - Padrão Iec61131

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 *)

Page 38: Aula 2 - Padrão Iec61131

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

Page 39: Aula 2 - Padrão Iec61131

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

Page 40: Aula 2 - Padrão Iec61131

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

Page 41: Aula 2 - Padrão Iec61131

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

Page 42: Aula 2 - Padrão Iec61131

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

Page 43: Aula 2 - Padrão Iec61131

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

Page 44: Aula 2 - Padrão Iec61131

LINGUAGENS DE PROGRAMAÇÃO

Page 45: Aula 2 - Padrão Iec61131

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.

Page 46: Aula 2 - Padrão Iec61131

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;

Page 47: Aula 2 - Padrão Iec61131

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

Page 48: Aula 2 - Padrão Iec61131

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

Page 49: Aula 2 - Padrão Iec61131

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.

Page 50: Aula 2 - Padrão Iec61131

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..

Page 51: Aula 2 - Padrão Iec61131

LD - Ladder

Page 52: Aula 2 - Padrão Iec61131

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.

Page 53: Aula 2 - Padrão Iec61131

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.

Page 54: Aula 2 - Padrão Iec61131

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.

Page 55: Aula 2 - Padrão Iec61131

SFC – Grafcet

Page 56: Aula 2 - Padrão Iec61131

SFC – Grafcet

Page 57: Aula 2 - Padrão Iec61131

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.

Page 58: Aula 2 - Padrão Iec61131

SFC – Transições e Receptividade

Page 59: Aula 2 - Padrão Iec61131

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.