iec1131instructionlist
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));