Escolar Documentos
Profissional Documentos
Cultura Documentos
Linguagem Programação
Linguagem Programação
LINGUAGENS DE PROGRAMAO
CONCEITO Um programa formado por uma srie de instrues que o usurio desenvolve para fazer com que o CLP comande as aes de sada em funo das variveis de entrada A NORMA IEC 61131-3 padroniza diversos aspectos relativos programao de CLPs, como os tipos de dados e as linguagens de programao.
6. LINGUAGENS DE PROGRAMAO
TIPOS DE DADOS
Tipo IEC SINT INT DINT LINT USINT UINT UDINT ULINT INTEIROS Descrio Short integer Integer Double integer Long Integer Unsigned short Integer Unsigned integer Unsigned double integer Unsigned long integer Bits 8 16 32 64 8 16 32 64 Faixa -127 a +127 -32768 a 32767 31 31 -2 a 2 -1 63 63 -2 a 2 -1 0 a 256 0 a 65535 32 0 a 2 1 64 0 a 2 1
Faixa 38 10 308 10
6. LINGUAGENS DE PROGRAMAO
TIPOS DE DADOS
Tipo IEC DATE TIME_OF_DAY DATE_AND_TIME DATA E HORA Descrio Bits Depende de Data Absoluta implementao Depende de Time of Day implementao Depende de Data e time of day implementao Uso Armazenar datas de calendrio Armazenar relgio de tempo real Armazenar datas e time of day
CADEIA DE BITS Descrio Bits Bit string de 1 bit 1 Bit string de 8 bit 8 Bit string de 16 bit 16 Bit string de 32 bit 32 Bit string de 64 bit 64
Uso Estados lgicos Informao biria Informao biria Informao biria Informao biria
Operao Booleana LD AND ST %I0.0 %I0.1 (*acumulador = estado da entrada 0*) (*acumulador = entrada 0 AND entrada1*)
Exemplo Prtico
X1, X2, Y1, Y2, temp : REAL; resultado = SQRT((X2-X1)* (X2-X1)+ (Y2-Y1)* (Y2-Y1)) : REAL; End_Var LD SUB ST MUL ADD( SUB ST MUL Y2 Y1 temp temp X2 X1 temp temp temp SQRT(temp) resultado 10 DESLOCA alarme (*acumul=Y2*) (*acumul=Y2-Y1*) (*temp=acumul*) (*acumul= temp^2*) (*adia a soma, acumul=X2*) (*acumul=X2-X1*) (*temp=acumul*) (*acumul= temp^2*) (*executa a soma adiada dos quadrados*) (*temp=acumul*) (*chama funo raiz quadrada*) (*resultado=acumul*) (*testa se resultado>10*) (*chama subrotina se verdadeiro*) (*alarme = TRUE*) (*retorna ao programa sem alarme*) RET (*retorna sem alarme*)
Y2
P2
Y1
P1 X1 X2
PARMETROS DE ENTRADA
PARMETROS DE SADA
S E Lgico
MAPA DE SINAIS
OR S
S OU Lgico
MAPA DE SINAIS
OU Lgico
MAPA DE SINAIS
0 A XOR S B B 0 A
S OU EXCLUSIVO Lgico
MAPA DE SINAIS
D C A OR AND
AND S
TIME
PT
ET
TIME
ET
BOOL
CU: ENTRADA PULSOS R : RESET PV: VALOR REFERNCIA Q : SADA CV : VALOR DA CONTAGEM
INT
PV
CV
INT
BOOL
LD
CD: ENTRADA PULSOS LD : LOAD (CV:=PV) PV: VALOR REFERNCIA Q : SADA CV : VALOR DA CONTAGEM
INT
PV
CV
INT
DATE_AND_TIME
PDT
CDT
DATE_AND_TIME
PTIO
CORREIA 1 CORREIA 2
SIST_ALIM_SILOS PROCESS_START PROCESS_STOP Motor 1 STD_BY Motor 2 STD_BY Motor 3 STD_BY EMERG_STOP SILO_CHEIO SILO_VAZIO Motor_1 START Motor_2 START Motor_2 START Motor_1 STOP Motor_2 STOP Motor_2 STOP
varredura
bobinas
barramento energizado
barramento de terra
lgica AND
lgica OR
BD = Botoeira desliga (contato NF) Entrada (input) BL = Botoeira liga (contato NA) Elemento de entrada (input) K1 = Bobina do contator - Sada (output) K1.x = Contato de Selo Auxiliar (varivel interna)
ETAPA 0
Aes na etapa 0
1 Transio 1
Ligao orientada
ETAPA 1
Aes na etapa 1
2 Transio
ETAPA 2
Aes na etapa 2
3 Transio
ETAPA 1 - Ativa
ETAPA inicial
0
Transio
2
(Nvel_baixo*Motor_parado)
2
M1 I0.0
M2 I0.0 C0.V=20 M3
Q0.2
Q0.3
I0.0+(C0.V=30)
N M1 M1 a
E7
N M2 E7 M2
S M1 E6 a E7 b
b
E7
E8 E8 R M1 M1
E6
E6
a
L M1 (T=3s)
M1
E7
E7
E6
a
D M1 (T=3s)
E7
E7
E6
a
C M1 (se k=1)
M1
E7
a E7
E6
a
P M1
M1 a
E7
E7
E6
a
SD M1 (T=3s)
En
En
R M1
E6 T M1 a En
E6
a
DS M1 (T=3s)
a En
En
R M1
E6 T M1 a En
E6
a
SL M1 (T=3s)
M1 a En E6 T M1 a En
En
R M1
a=0 ou a=1
a=0
a=1
a=1
a=0
a=0
b=0
b=1
b=0
Depois Antes
1 1
a=0
b=1
Antes Depois
3 7
a=0 b=1
a=1
a=1
/a
/c
3
c
a linguagem de mais alto nvel que tem sua sintaxe mais semelhante s linguagens de microprogramao como Pascal, C++, etc, preferida pelos desenvolvedores de softwares em geral.
Por ser estruturada de fcil legibilidade a mais indicada para aplicaes que envolvem clculos aritmticos complexos.
CASE <expresso_inteiro> OF < valor 1> : <comandos> < valor 2> : <comandos> < valor 3> : <comandos> ELSE <comandos> END_CASE;
FOR <inicia a varivel> TO <valor final da varivel> BY <valor incremental> (opcional. Se omitido o valor incremental ser = 1) DO <comandos>
Estes laos se utilizam quando queremos repetir um nmero indefinido de vezes a execuo de uns comandos, sempre que se cumpra uma condio. A condio da expresso booleana testada antes da entrada no lao, de modo que se a condio falsa os comandos no so executados.