iec1131instructionlist

Upload: hugomagno

Post on 10-Apr-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 IEC1131InstructionList

    1/13

    IEC1131-3 - Instruction List 1

    SUPORTE DE CURSO

    IEC 1131-3Instruction

    List

    Livro Texto: Programming industrial control systems using IEC 1131-3 R.W. Lewis

    UFMG Informtica IndustrialProf. Constantino Seixas Filho

  • 8/8/2019 IEC1131InstructionList

    2/13

    IEC1131-3 - Instruction List 2

    IEC 1131-3 Instruction List

    Structured Text (ST)Instruction List (IL)

    Textuais

    Function Block Diagram (FBD)Ladder Diagram (LD)Sequential Function Charts (SFC)

    Grficas

    uma l inguagem textual , de baixo nve l , usada

    para descrever o com por tam ento de :

    Funes Blocos de funes Programas

    Em SFC para expressar o comportamento, aes e transies.

    Pr incp ios bs ic os

    Linguagem textual de baixo nvel semelhante ao assembly. Ideal para resolver

    problemas simples e pequenos onde existem poucas quebras no fluxo deexecuo do programa.

    A linguagem mais fcil de implementar que o texto estruturado e alinguagem preferida por pequenos implementadores de CLPs.

    considerada por muito implementadores como a linguagem para a qual todasas demais linguagens devem ser traduzidas. Este no entretanto umrequerimento do standard.

    Outros a encaram como a linguagem preferencial de pequenos CLPs eenxergam o Texto Estruturado como a linguagem base.

    TEXTUAIS GRFICAS

    ST IL LD FBD

    SFC

  • 8/8/2019 IEC1131InstructionList

    3/13

    IEC1131-3 - Instruction List 3

    Na verdade apenas uma linguagem adicional, menos amigvel e flexvel e

    que deve ser usada para produzir cdigo otimizado para trechos deperformance crtica em um programa.

    Est rut ura da l inguagem

    Cada instruo ocupa uma linha

    Instruo = Operador + Operandos

    Cada instruo usa ou muda o valor de um nico registrador denominado registrode resultado ou acumulador.

    E x e m p l o :

    Label Operador Operando Comentrio

    LD Velocidade (* Carregue Velocidade e *)

    GT 1000 (* Teste se maior que 1000 *)

    JMPCN VOLTS_OK (* Jump se no *)

    LD Volts (* Carregue Volts *)

    SUB 10 (* Retirar 10 *)

    ST Volts (* Armazenar em Volts *)

    VOLTS_OK: LD 1 (* Carregue 1 e armazene *)

    ST %Q75 (* na sada 75 *)

    O programa acima equivalente ao seguinte trecho em Texto Estruturado:

    IF Velocidade > 1000 THENVolts := Volts - 10;

    END_IF;%Q75 = 1;

    Linha de

    es a amento

    Sempre nofinal da linha

  • 8/8/2019 IEC1131InstructionList

    4/13

    IEC1131-3 - Instruction List 4

    Semnt i ca das Ins t rues:

    Instrues Gerais:

    Operador Operando eqivale a :

    Acumulador := Acumulador Operador Operando

    E x e m p l o :

    SUB 10 Acumulador := Acumulador SUB 10

    A instruo Load:

    LD Acumulador := Operando

    E x e m p l o :

    LD Velocidade Acumulador := Velocidade

    A instruo Store:

    ST Operando := Acumulador

    E x e m p l o :

    ST VOLTS VOLTS := Acumulador

  • 8/8/2019 IEC1131InstructionList

    5/13

    IEC1131-3 - Instruction List 5

    Exec uo ad iada

    Algumas instrues permitem o uso do modificador parntesis : (

    Este modificador permite que resultados intermedirios sejam obtidos semalterao do acumulador. O efeito o mesmo de se usar parntesis em expressesaritmticas normais e em expresses booleanas.

    E x e m p l o : e x e c u o a d i a d a

    Operador Operando Comentrio

    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 parntesis, depois de MUL alcanado, o resultado de A + B mantido no acumulador principal e A carregado num acumulador temporrio.A operao de MUL ser adiada at que o fecha parntesis seja alcanado. SUB Bproduz A - B que mantido no acumulador temporrio. ')' alcanado e o valordo acumulador temporrio multiplicado pelo valor do acumulador principal.

    Este programa equivalente a :

    resultado := (A + B) * (A - B)

    No existe precedncia operadora com os operadores IL

    O exemplo abaixo realiza a operao:

    X + (B * ( C + D))

    Operador Operando Comentrio

    LD X (* Carregue X *)

    ADD( B (* Adie ADD, carregue B *)

    MUL( C (* Adie MUL, carregue C *)

    ADD D (* Some D *)

    ) (* multiplique acumulador *)

    ) (* some *)

  • 8/8/2019 IEC1131InstructionList

    6/13

    IEC1131-3 - Instruction List 6

    Este conjunto de operaes equivalente s seguintes operaes em uma pilha :

    PUSH X

    PUSH B

    PUSH C

    PUSH D

    ADD

    MUL

    ADD

    Operaes:

    PUSH X PUSH B PUSH C PUSH D ADD MUL ADD

    Situao da Pilha:

    X B C D D+C B*(D+C) X + B*(D+C)X B C B X

    X B XX

    No usejumps dentro de uma seo entre parntesis.

    Modi f icadores:

    N - Nega um valor booleano.C - Denota jump condicional.S pode ser utilizado com a instruo JMP.

    E x e m p l o :

    LD %IX10 (* Carrega Entrada 10 *)

    ANDN Switch1 (* AND NOT Switch1 *)

    JMPNC Label1 (* Jump se no verdadeiro *)

    TOS

  • 8/8/2019 IEC1131InstructionList

    7/13

    IEC1131-3 - Instruction List 7

    Operadores

    Operador Modificador Operando Comentrios

    LD N Qualquer1 Carrega operando no acumuladorST N Qualquer1 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 exclusivoADD ( Qualquer1 Adio

    SUB ( Qualquer1 Subtrao

    MUL ( Qualquer1 Multiplicao

    DIV ( Qualquer1 Diviso

    1 Pode representar qualquer tipo simples: SINTY, INT, DATE_AND_TIME,REAL, etc.

    Operadores comparativos e de desvio (jump):

    Operador Modificador Operando Comentrios

    GT ( Qualquer Comparao maior que

    GE ( Qualquer Comparao maior ou igual

    EQ ( Qualquer Comparao igual

    NE ( Qualquer Comparao diferente

    LE ( Qualquer Comparao menor ou igualLT ( Qualquer Comparao menor

    JMP C,N Label Salta para label

    CAL C,N Nome Chamada de bloco de funo

    RET C,N Retorno de funo ou bloco de funo

    ) Execute o ltimo operador adiado

  • 8/8/2019 IEC1131InstructionList

    8/13

    IEC1131-3 - Instruction List 8

    Os operadores que possuem dois modificadores podem ser usados com ambos:

    Operador Semntica

    AND AND booleano

    AND( AND adiado

    ANDN( Adia a execuo e inverte o resultado (NAND adiado)

    ANDN Funo NAND

    Cham ada de funes e b locos de funes:

    Existem trs diferentes formatos de chamada:

    U s a n d o l i s t a d e e n t r a d a :

    CAL LOOP1(SP:= 300.0, PV := %IW20)

    C a r r e g a n d o a s e n t r a d a s a n t e s d a c h a m a d a

    LD 300.0

    ST LOOP1.SP

    LD %IW20

    ST LOOP1.PV

    CAL LOOP1

    U s a n d o o p e r a d o r e s d e e n t r a d a

    Apenas alguns blocos de funes permitem chamada direta atravs de instrues

    especiais em IL.

    Exemplo:

    Biestvel ST (Set/reset) e bloco de contagem up/down (CTU).

    S1 Latch1 (* Seta instncia do bloco de funo SR *)

    LD 10 (* Acumulador = 10 *)

    PV CTU1 (* Copia 10 no parmetro PV do contador CTU1 *)

    CU CTU1 (* Chama contador up/down habilitado para contar *)

  • 8/8/2019 IEC1131InstructionList

    9/13

    IEC1131-3 - Instruction List 9

    Operadores de blocos de funo:

    Operador Tipo de bloco defuno

    Comentrios

    S1, R Biestvel SR Seta e Reseta o biestvel SRS, R1 Biestvel RS Seta e Reseta o biestvel RSCLK R_Trig, detector de

    borda de subidaEntrada de clock do bloco lgicodetector de borda de subida.

    CLK F_Trig, detector deborda de descida

    Entrada de clock do bloco lgicodetector de borda de descida.

    CU, R, PV CTU, contadorincremental

    Parmetros de controle para obloco de controle CTU contadorincremental: CU incrementa, RReset e PV Carrega contador.

    CD, LD, PV CTU, contadordecremental Parmetros de controle para obloco de controle CTD contadordecremental: CD incrementa, LDCarrega e PV Carrega contagemmnima.

    CU, CD, R,LD, PV

    CTUD, contadoruniversal

    Parmetros de controle para obloco de controle CTUD contadoruniversal.

    IN, PT TP, temporizador depulso

    Parmetros de controle para otimer de pulso: IN inicia

    temporizao, PT seta o tempo depulso.IN, PT TON, temporizador de

    atraso de subida.Parmetros de controle para otimer de atraso de subida: INinicia temporizao, PT seta otempo de pulso.

    IN, PT TOF, temporizador deatraso de descida.

    Parmetros de controle para otimer de atraso de descida: INinicia temporizao, PT seta otempo de pulso.

    Def ic inc ias do padro IL:

    No descreve o comportamento da mquina virtual que executar alinguagem.

    No explica como o acumulador armazenar dados de tipos diferentes.

    No explica como o acumulador armazenar dados estruturados:matrizes ou vetores.

  • 8/8/2019 IEC1131InstructionList

    10/13

    IEC1131-3 - Instruction List 10

    No descreve como erros de run-time so tratados.

    Padro dever ser revisto.

    Por tabi l idade ent re IL e out ras l inguagens IEC

    Traduo de outras linguagens para IL mais fcil que de IL para outraslinguagens.

    E x e m p l o :

    Programa em IL:

    Operador Operando Comentrio

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

    LD StartSR.Q1 (* Carrega sada Q1 *)

    ST Start (* e armazena em Start *)

    AND

    SR

    S1 Q1

    R

    StartOR

    Test1

    Test2

    SW1

    %IX3

    Reset

  • 8/8/2019 IEC1131InstructionList

    11/13

    IEC1131-3 - Instruction List 11

    Def in indo funes e b locos de fun es

    IL pode ser usado para definir funes e bloco de funes. Quando usada para definir uma funo, o valor retornado ltimo valor

    no acumulador.

    E x e m p l o : D i s t n c i a d e d e s l o c a m e n t o e n t r e d o i s f u r o s e mu m a s u p e r f c i e p l a n a .

    Distncia = SQRT((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2));

    A sada EN0 deve indicar se o valor de distncia menor que Tmax, oalcance mximo da mquina.

    FUNCTION TRAVEL: REALVAR_INPUT

    X1, X2, Y1, Y2: REAL; (* coordenadas dos pontos extremos *)Tmax: REAL;

    END_VARVAR

    temp: REAL; (* Valor temporrio *)END_VAR

    LD Y1SUB Y2 (* Acumulador = Y1 - Y2 *)ST Temp (* Salva resultado intermedirio em Temp *)MUL Temp (* Acumulador = Temp ^2*)ADD( X1 (* Acc2 = X1, empilha soma *)

    TRAVEL

    X1 ENO

    X2

    Y1

    Y2

    TMax

    BOOL

    REAL

    REAL

    REAL

    REAL

    REAL

    REAL

    x2,y2

    x1 - x2

    y1 - y2

    x1, y1

  • 8/8/2019 IEC1131InstructionList

    12/13

    IEC1131-3 - Instruction List 12

    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)(* Funo raiz quadrada *)ST TRAVEL (* Estabelece sada da funo *)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 emBlock Language.

  • 8/8/2019 IEC1131InstructionList

    13/13

    IEC1131-3 - Instruction List 13

    Le i tu ra Complement ar :

    qBonfatti, Monari, Sampieri, IEC1131-3 Prograrmming Methodology, CJInternational, 1997.

    Exerc c ios :

    1. Escreva um bloco de funo em IL para calcular a seguinte funo devariveis complexas:

    pzz nn +=+ 21 , onde jyxp +=

    2. D trs exemplos de situaes onde voc acha vantajoso utilizar a linguagemIL:

    a) ____________________________________________________________

    b) ____________________________________________________________

    c) ____________________________________________________________

    3. Comente a seguinte frase: "No vantagem se utilizar linguagens de muitobaixo nvel na programao de aplicaes, porque o baixo nvel de abstraoresulta em programas ilegveis e de alta complexidade".

    4. Leia na Internet sobre a linguagem Step 5 da Siemens e a compare com alinguagem IL.

    5. Escreva um programa que converta expresses na forma infixada paraexpresses na forma posfixada.

    Exemplo:

    Inorder: (a + b / c) * d

    Postorder: a b c / + d *

    6. Escreva um programa em IL para calcular a expresso:

    Exp = X + A * (B+C) (A * (B-C));