Escolar Documentos
Profissional Documentos
Cultura Documentos
I Ec 1131 Instruction List
I Ec 1131 Instruction List
IEC 1131-3
Instruction
List
Livro Texto:
Textuais
Grficas
SFC
ST
IL
TEXTUAIS
LD
FBD
GRFICAS
Funes
Blocos de funes
Programas
Em SFC para expressar o comportamento, aes e transies.
Princpios bsicos
Linguagem textual de baixo nvel semelhante ao assembly. Ideal para resolver
problemas simples e pequenos onde existem poucas quebras no fluxo de
execuo do programa.
Estrutura da linguagem
Cada instruo ocupa uma linha
Instruo = Operador + Operandos
Cada instruo usa ou muda o valor de um nico registrador denominado registro
de resultado ou acumulador.
Sempre no
final da linha
Exemplo:
Label
Linha de
espaamento
Operador
Operando
Comentrio
LD
Velocidade
(* Carregue Velocidade e *)
GT
1000
JMPCN
VOLTS_OK
(* Jump se no *)
LD
Volts
(* Carregue Volts *)
SUB
10
(* Retirar 10 *)
ST
Volts
(* Armazenar em Volts *)
(* Carregue 1 e armazene *)
%Q75
(* na sada 75 *)
VOLTS_OK: LD
ST
Operando eqivale a :
SUB
10
A instruo Load:
LD
Acumulador := Operando
Exemplo:
LD
Velocidade
Acumulador := Velocidade
A instruo Store:
ST
Operando := Acumulador
Exemplo:
ST
VOLTS
VOLTS := Acumulador
Execuo adiada
Algumas instrues permitem o uso do modificador parntesis : (
Este modificador permite que resultados intermedirios sejam obtidos sem
alterao do acumulador. O efeito o mesmo de se usar parntesis em expresses
aritmticas normais e em expresses booleanas.
Exemplo: execuo adiada
Operador
Operando
Comentrio
LD
(* Adicione A e B *)
ADD
MUL(
SUB
Operando
Comentrio
LD
(* Carregue X *)
ADD(
MUL(
ADD
(* Some D *)
(* multiplique acumulador *)
(* some *)
PUSH B
PUSH C
PUSH D
ADD
D+C
B
X
B*(D+C)
X
MUL
ADD
Situao da Pilha:
TOS
B
X
C
B
X
D
C
B
X
X + B*(D+C)
Modificadores:
N - Nega um valor booleano.
C - Denota jump condicional.
S pode ser utilizado com a instruo JMP.
Exemplo:
LD
%IX10
(* Carrega Entrada 10 *)
ANDN
Switch1
JMPNC
Label1
(* Jump se no verdadeiro *)
Operadores
Operador Modificador
Operando Comentrios
LD
Qualquer1
ST
Qualquer
BOOL
BOOL
AND
N,(
BOOL
AND booleano
&
N,(
BOOL
equivalente a AND
OR
N,(
BOOL
OR booleano
XOR
N,(
BOOL
OU exclusivo
ADD
Qualquer1
Adio
SUB
Qualquer1
Subtrao
MUL
Qualquer1
Multiplicao
DIV
Qualquer1
Diviso
Operando Comentrios
GT
Qualquer
GE
Qualquer
EQ
Qualquer
Comparao igual
NE
Qualquer
Comparao diferente
LE
Qualquer
LT
Qualquer
Comparao menor
JMP
C,N
Label
CAL
C,N
Nome
RET
C,N
Os operadores que possuem dois modificadores podem ser usados com ambos:
Operador
Semntica
AND
AND booleano
AND(
AND adiado
ANDN(
ANDN
Funo NAND
LD
300.0
ST
LOOP1.SP
LD
%IW20
ST
LOOP1.PV
CAL
LOOP1
Latch1
LD
10
(* Acumulador = 10 *)
PV
CTU1
CU
CTU1
Tipo de bloco de
funo
Biestvel SR
Biestvel RS
R_Trig, detector de
borda de subida
F_Trig, detector de
borda de descida
CTU, contador
incremental
TP, temporizador de
pulso
IN, PT
TON, temporizador de
atraso de subida.
IN, PT
TOF, temporizador de
atraso de descida.
Comentrios
Seta e Reseta o biestvel SR
Seta e Reseta o biestvel RS
Entrada de clock do bloco lgico
detector de borda de subida.
Entrada de clock do bloco lgico
detector de borda de descida.
Parmetros de controle para o
bloco de controle CTU contador
incremental: CU incrementa, R
Reset e PV Carrega contador.
Parmetros de controle para o
bloco de controle CTD contador
decremental: CD incrementa, LD
Carrega e PV Carrega contagem
mnima.
Parmetros de controle para o
bloco de controle CTUD contador
universal.
Parmetros de controle para o
timer de pulso: IN inicia
temporizao, PT seta o tempo de
pulso.
Parmetros de controle para o
timer de atraso de subida: IN
inicia temporizao, PT seta o
tempo de pulso.
Parmetros de controle para o
timer de atraso de descida: IN
inicia temporizao, PT seta o
tempo de pulso.
AND
SW1
SR
%IX3
S1
OR
Test1
Test2
Q1
Start
Reset
Programa em IL:
Operador
Operando
Comentrio
LD
Test1
(* Acumulador = Test1 *)
OR
Test2
AND
SW1
(* AND SW1 *)
AND
%IX3
(* AND input 3 *)
ST
StartSR.S1
LD
Reset
ST
StartSR.R
CAL
StartSR
LD
StartSR.Q1
(* Carrega sada Q1 *)
ST
Start
(* e armazena em Start *)
10
Distncia de deslocamento
uma superfcie plana.
entre
x1, y1
dois
furos
em
TRAVEL
y1 - y2
REAL
X1
REAL
X2
REAL
Y1
REAL
Y2
REAL
TMax
x2,y2
x1 - x2
ENO
BOOL
REAL
(* Acumulador = Y1 - Y2 *)
(* Salva resultado intermedirio em Temp *)
(* Acumulador = Temp ^2*)
(* Acc2 = X1, empilha soma *)
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)(* 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
END_FUNCTION
12
Leitura Complementar:
q Bonfatti, Monari, Sampieri, IEC1131-3 Prograrmming Methodology, CJ
International, 1997.
Exerccios:
1. Escreva um bloco de funo em IL para calcular a seguinte funo de
variveis complexas:
zn +1 = z 2 n + p , onde p = x + jy
2. D trs exemplos de situaes onde voc acha vantajoso utilizar a linguagem
IL:
a) ____________________________________________________________
b) ____________________________________________________________
c) ____________________________________________________________
3. Comente a seguinte frase: "No vantagem se utilizar linguagens de muito
baixo nvel na programao de aplicaes, porque o baixo nvel de abstrao
resulta em programas ilegveis 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 expresses na forma infixada para
expresses na forma posfixada.
Exemplo:
Inorder:
(a + b / c) * d
Postorder:
abc/+d*
13