IEC Instruction List

Documentos relacionados
CONTROLADORES LÓGICOS PROGRAMÁVEIS

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

CLP Controlador Lógico Programável

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Treinamento. ACE Schmersal Boituva - SP. Duvidas (15) suporte.linhalogica@schmersal.com.br

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

ESTUDO E APLICAÇÃO DE LINGUAGENS DE PROGRAMAÇÃO UTILIZANDO O SOFTWARE CODESYS. Lucas Carvalho Souza 1 André Luiz Silva Pereira 2

Linguagens de Programação - Ladder Automação Semestre 02/2015

Programação Ladder. Douglas Wildgrube Bertol DEE - Engenharia Elétrica CCT

IEC Ladder SUPORTE DE CURSO. Livro Texto: Programming industrial control systems using IEC R.W. Lewis

Organização e Arquitetura de Computadores I

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

Controladores Lógicos Programáveis (CLP) Disciplina: TAIE4

ção de Computadores II

Arquitetura e Organização de Computadores

Prof. Adilson Gonzaga

Arquitetura e Organização de Computadores

Prof. Gustavo Oliveira Cavalcanti

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

Interrupção. Prof. Adilson Gonzaga

Instruções. Maicon A. Sartin

Sistemas Digitais. Linguagem Verilog. Monitoria SD Daniel Alexandro/Reniê Delgado/Vanessa Ogg. Editado por (DARA)

Guia Rápido MIPS. Tipos de Dados e Formatações

Revisão de Circuitos Digitais

Neander - características

Automação Industrial Parte 6

Aula #18. CLP s SOFTWARE. Juazeiro Set 19,2011. PLCs : LINGUAGENS DE PROGRAMAÇÃO. A IEC 1131 padroniza as linguagens em 02 grandes grupos:

Prof. Adilson Gonzaga

TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS

Computador Cleópatra

Organização de Computadores

TÉCNICO DE INFORMÁTICA - SISTEMAS

BLOCOS DE FUNÇÃO. Figura 1 - Tela de programação com ambiente selecionado para Bloco de Funções

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

CIRCUITOS SEQUENCIAIS. Adão de Melo Neto

LINGUAGEM C: COMANDOS DE REPETIÇÃO

ção de Computadores I

Eletrônica Digital. Prof. Gilson Yukio Sato sato[at]utfpr[dot]edu[dot]br

CAP. VII GERAÇÃO DE CÓDIGO

Compiladores e Computabilidade

Aula 14 Funcionamento de Processadores (Visão específica)

Computador Cleópatra

Solução Lista de Exercícios Processadores

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação CLPs: Norma IEC 61131

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Organização de Computadores 1

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Noções de algoritmos - Aula 1

CAP. VII GERAÇÃO DE CÓDIGO

Noções de algoritmos - Aula 1

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Câmpus Medianeira PLANO DE ENSINO. CURSO Engenharia Elétrica MATRIZ 548

CONJUNTO DE INSTRUÇÕES

Exercícios de Laboratório 3

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Universidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação. Arquitetura de Computadores I. Organização Básica do Computador

Programação Introdução

Introdução à Computação: Arquitetura von Neumann

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

SSC510 Arquitetura de Computadores 1ª AULA

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

SSC0112 Organização de Computadores Digitais I

Capítulo 3 Circuitos lógicos seqüenciais: flip-flops, latches, contadores e registradores

Informática I. Aula 9. Aula 9-17/05/2006 1

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Arquitetura de Computadores. Ciclo de Busca e Execução

Programação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

SSC0114 Arquitetura de Computadores

CLP. Curso de Formação Profissional Técnico em Eletroeletrônica Módulo III Senai Arcos-MG

Prof. Leonardo Augusto Casillo

INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA

Transcrição:

SUPORTE DE CURSO IEC 1131-3 Instruction List Livro Texto: Programming industrial control systems using IEC 1131-3 R.W. Lewis UFMG Informática Industrial Prof. Constantino Seixas Filho IEC1131-3 - Instruction List 1

IEC 1131-3 Instruction List Structured Text (ST) Instruction List (IL) Function Block Diagram (FBD) Ladder Diagram (LD) Sequential Function Charts (SFC) Textuais Gráficas SFC ST IL LD FBD TEXTUAIS GRÁFICAS É uma linguagem textual, de baixo nível, usada para descrever o comportamento de : Funções Blocos de funções Programas Em SFC para expressar o comportamento, ações e transições. Princípios básicos Linguagem textual de baixo nível semelhante ao assembly. Ideal para resolver problemas simples e pequenos onde existem poucas quebras no fluxo de execução do programa. A linguagem é mais fácil de implementar que o texto estruturado e é a linguagem preferida por pequenos implementadores de CLPs. É considerada por muito implementadores como a linguagem para a qual todas as demais linguagens devem ser traduzidas. Este não é entretanto um requerimento do standard. Outros a encaram como a linguagem preferencial de pequenos CLPs e enxergam o Texto Estruturado como a linguagem base. IEC1131-3 - Instruction List 2

Na verdade é apenas uma linguagem adicional, menos amigável e flexível e que deve ser usada para produzir código otimizado para trechos de performance crítica em um programa. Estrutura da linguagem Cada instrução ocupa uma linha Instrução = Operador + Operandos Cada instrução usa ou muda o valor de um único registrador denominado registro de resultado ou acumulador. Sempre no final da linha Label Operador Operando Comentário Linha de espaçamento LD Velocidade (* Carregue Velocidade e *) GT 1000 (* Teste se é maior que 1000 *) JMPCN VOLTS_OK (* Jump se não é *) LD Volts (* Carregue Volts *) SUB 10 (* Retirar 10 *) ST Volts (* Armazenar em Volts *) VOLTS_OK: LD 1 (* Carregue 1 e armazene *) ST %Q75 (* na saída 75 *) O programa acima é equivalente ao seguinte trecho em Texto Estruturado: IF Velocidade > 1000 THEN Volts := Volts - 10; END_IF; %Q75 = 1; IEC1131-3 - Instruction List 3

Semântica das Instruções: Instruções Gerais: Operador Operando eqüivale a : Acumulador := Acumulador Operador Operando SUB 10 Acumulador := Acumulador SUB 10 A instrução Load: LD Acumulador := Operando LD Velocidade Acumulador := Velocidade A instrução Store: ST Operando := Acumulador ST VOLTS VOLTS := Acumulador IEC1131-3 - Instruction List 4

Execução adiada Algumas instruções permitem o uso do modificador parêntesis : ( Este modificador permite que resultados intermediários sejam obtidos sem alteração do acumulador. O efeito é o mesmo de se usar parêntesis em expressões aritméticas normais e em expressões booleanas. execução adiada Operador Operando Comentário LD A (* Adicione A e B *) ADD B (* Mantenha o resultado no acumulador *) MUL( A (* Adie até (A-B) ser calculado *) SUB B ) (* agora multiplique por (A-B) *) Quando o primeiro parêntesis, depois de MUL é alcançado, o resultado de A + B é mantido no acumulador principal e A é carregado num acumulador temporário. A operação de MUL será adiada até que o fecha parêntesis seja alcançado. SUB B produz A - B que é mantido no acumulador temporário. ')' é alcançado e o valor do acumulador temporário é multiplicado pelo valor do acumulador principal. Este programa é equivalente a : resultado := (A + B) * (A - B) Não existe precedência operadora com os operadores IL O exemplo abaixo realiza a operação: X + (B * ( C + D)) Operador Operando Comentário LD X (* Carregue X *) ADD( B (* Adie ADD, carregue B *) MUL( C (* Adie MUL, carregue C *) ADD D (* Some D *) ) (* multiplique acumulador *) ) (* some *) IEC1131-3 - Instruction List 5

Este conjunto de operações é equivalente às seguintes operações em uma pilha : PUSH X PUSH B PUSH C PUSH D ADD MUL ADD Operações: PUSH X PUSH B PUSH C PUSH D ADD MUL ADD Situação da Pilha: TOS X B C D D+C B*(D+C) X + B*(D+C) X B C B X X B X X Não use jumps dentro de uma seção entre parêntesis. Modificadores: N - Nega um valor booleano. C - Denota jump condicional. Só pode ser utilizado com a instrução JMP. LD %IX10 (* Carrega Entrada 10 *) ANDN Switch1 (* AND NOT Switch1 *) JMPNC Label1 (* Jump se não é verdadeiro *) IEC1131-3 - Instruction List 6

Operadores Operador Modificador Operando Comentários LD N Qualquer 1 Carrega operando no acumulador ST N Qualquer 1 Armazena acumulador no operando S BOOL Seta operando para TRUE R BOOL Reseta operando para False AND N,( BOOL AND booleano & N,( BOOL equivalente a AND OR N,( BOOL OR booleano XOR N,( BOOL OU exclusivo ADD ( Qualquer 1 Adição SUB ( Qualquer 1 Subtração MUL ( Qualquer 1 Multiplicação DIV ( Qualquer 1 Divisão 1 Pode representar qualquer tipo simples: SINTY, INT, DATE_AND_TIME, REAL, etc. Operadores comparativos e de desvio (jump): Operador Modificador Operando Comentários GT ( Qualquer Comparação maior que GE ( Qualquer Comparação maior ou igual EQ ( Qualquer Comparação igual NE ( Qualquer Comparação diferente LE ( Qualquer Comparação menor ou igual LT ( Qualquer Comparação menor JMP C,N Label Salta para label CAL C,N Nome Chamada de bloco de função RET C,N Retorno de função ou bloco de função ) Execute o último operador adiado IEC1131-3 - Instruction List 7

Os operadores que possuem dois modificadores podem ser usados com ambos: Operador AND AND( ANDN( ANDN Semântica AND booleano AND adiado Adia a execução e inverte o resultado (NAND adiado) Função NAND Chamada de funções e blocos de funções: Existem três diferentes formatos de chamada: Usando lista de entrada: CAL LOOP1(SP:= 300.0, PV := %IW20) Carregando as entradas antes da chamada LD 300.0 ST LOOP1.SP LD %IW20 ST LOOP1.PV CAL LOOP1 Usando operadores de entrada Apenas alguns blocos de funções permitem chamada direta através de instruções especiais em IL. Biestável ST (Set/reset) e bloco de contagem up/down (CTU). S1 Latch1 (* Seta instância do bloco de função SR *) LD 10 (* Acumulador = 10 *) PV CTU1 (* Copia 10 no parâmetro PV do contador CTU1 *) CU CTU1 (* Chama contador up/down habilitado para contar *) IEC1131-3 - Instruction List 8

Operadores de blocos de função: Operador Tipo de bloco de Comentários função S1, R Biestável SR Seta e Reseta o biestável SR S, R1 Biestável RS Seta e Reseta o biestável RS CLK R_Trig, detector de borda de subida Entrada de clock do bloco lógico detector de borda de subida. CLK F_Trig, detector de borda de descida Entrada de clock do bloco lógico detector de borda de descida. CU, R, PV CTU, contador incremental Parâmetros de controle para o bloco de controle CTU contador incremental: CU incrementa, R CD, LD, PV CTU, contador decremental CU, CD, R, LD, PV IN, PT IN, PT IN, PT CTUD, contador universal TP, temporizador de pulso TON, temporizador de atraso de subida. TOF, temporizador de atraso de descida. Reset e PV Carrega contador. Parâmetros de controle para o bloco de controle CTD contador decremental: CD incrementa, LD Carrega e PV Carrega contagem mínima. Parâmetros de controle para o bloco de controle CTUD contador universal. Parâmetros de controle para o timer de pulso: IN inicia temporização, PT seta o tempo de pulso. Parâmetros de controle para o timer de atraso de subida: IN inicia temporização, PT seta o tempo de pulso. Parâmetros de controle para o timer de atraso de descida: IN inicia temporização, PT seta o tempo de pulso. Deficiências do padrão IL: Não descreve o comportamento da máquina virtual que executará a linguagem. Não explica como o acumulador armazenará dados de tipos diferentes. Não explica como o acumulador armazenará dados estruturados: matrizes ou vetores. IEC1131-3 - Instruction List 9

Não descreve como erros de run-time são tratados. Padrão deverá ser revisto. Portabilidade entre IL e outras linguagens IEC Tradução de outras linguagens para IL é mais fácil que de IL para outras linguagens. SW1 %IX3 Test1 OR AND SR S1 Q1 Start Test2 R Reset Programa em IL: Operador Operando Comentário LD Test1 (* Acumulador = Test1 *) OR Test2 (* Acc = Test1 OR Test2 *) AND SW1 (* AND SW1 *) AND %IX3 (* AND input 3 *) ST StartSR.S1 (* Seta entrada de StartSR *) LD Reset (* Carrega valor de Reset *) ST StartSR.R (* Armazena na entrada Reset *) CAL StartSR (* Chama bloco de função StartSR *) LD StartSR.Q1 (* Carrega saída Q1 *) ST Start (* e armazena em Start *) IEC1131-3 - Instruction List 10

Definindo funções e blocos de funções IL pode ser usado para definir funções e bloco de funções. Quando usada para definir uma função, o valor retornado é último valor no acumulador. Distância de deslocamento entre dois furos em uma superfície plana. x1, y1 TRAVEL REAL X1 ENO BOOL y1 - y2 REAL REAL X2 Y1 REAL x1 - x2 x2,y2 REAL REAL Y2 TMax Distância = SQRT((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2)); A saída EN0 deve indicar se o valor de distância é menor que Tmax, o alcance máximo da máquina. FUNCTION TRAVEL: REAL VAR_INPUT X1, X2, Y1, Y2: REAL; (* coordenadas dos pontos extremos *) Tmax: REAL; END_VAR VAR temp: REAL; (* Valor temporário *) END_VAR LD Y1 SUB Y2 (* Acumulador = Y1 - Y2 *) ST Temp (* Salva resultado intermediário em Temp *) MUL Temp (* Acumulador = Temp ^2*) ADD( X1 (* Acc2 = X1, empilha soma *) IEC1131-3 - Instruction List 11

SUB X2 (* Acc2 = X1 - X2 *) ST Temp (* Salva em Temp *) MUL Temp (* Acc2 = Temp^2 *) ) (* Executa soma suspensa *) ST Temp (* Salva em Temp *) CAL SQRT(Temp)(* Função raiz quadrada *) ST TRAVEL (* Estabelece saída da função *) GT Tmax (* Testa se maior que Tmax *) JMPC ERR (* Sim, vá para erro *) S ENO (* Set ENO *) RET (* Retorno normal *) ERR: RET (* Retorno sem setar ENO *) END_FUNCTION Agora desenhe o equivalente em Block Language. IEC1131-3 - Instruction List 12

Leitura Complementar: Bonfatti, Monari, Sampieri, IEC1131-3 Prograrmming Methodology, CJ International, 1997. Exercícios: 1. Escreva um bloco de função em IL para calcular a seguinte função de variáveis complexas: 2 zn + = z n + p 1, onde p = x + jy 2. Dê três exemplos de situações onde você acha vantajoso utilizar a linguagem IL: a) b) c) 3. Comente a seguinte frase: "Não é vantagem se utilizar linguagens de muito baixo nível na programação de aplicações, porque o baixo nível de abstração resulta em programas ilegíveis e de alta complexidade". 4. Leia na Internet sobre a linguagem Step 5 da Siemens e a compare com a linguagem IL. 5. Escreva um programa que converta expressões na forma infixada para expressões na forma posfixada. Inorder: (a + b / c) * d Postorder: a b c / + d * 6. Escreva um programa em IL para calcular a expressão: Exp = X + A * (B+C) (A * (B-C)); IEC1131-3 - Instruction List 13