Escolar Documentos
Profissional Documentos
Cultura Documentos
I Ec 1131 Basic Elements
I Ec 1131 Basic Elements
IEC 1131-3
Elementos
Comuns
Livro Texto:
Textuais
Grficas
SFC
ST
IL
TEXTUAIS
LD
FBD
GRFICAS
As linguagens ST, IL, FBD e SFC podem ser usadas dentro de blocos de
ao e em transies para construir Sequential Function Charts.
Conjunto de caracteres:
q utilizado o padro ISO 646 "Basic code table".
q Apenas letras maisculas so consideradas. Letras minsculas so
q
Identificadores:
q O primeiro caracter no pode ser um dgito.
q Caracter underline mltiplos no so permitidos.
q Identificador no pode incluir espao.
q Embora os identificadores possam ter qualquer tamanho, apenas os 6
primeiros caracteres so considerados para unicidade.
IEC1131-3
Palavras chaves:
No usar identificadores que coincidam com as palavras chaves da
linguagem.
Comentrios:
(***********************************)
(* Comentrios devem ser envolvidos por *)
(***********************************)
Tipos de dados:
Inteiros:
Tipo IEC
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
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
Range
-127 a +127
-32768 a 32767
-231 a 231-1
263 a 263-1
0 a 256
0 a 65535
0 a 232-1
0 a 264-1
Floating Point:
Tipo IEC
REAL
LREAL
IEC1131-3
Descrio
Real
Long Real
Bits
32
64
Range
1038
10308
Preciso
1/223
1/252
Representao de float:
10.123
+12_123.21 -0.001298
-1.65E-10
Durao (tempo)
Tipo IEC
TIME
Descrio
Durao do tempo
Bits
Dependente de
implementao
Uso
Armazenar a durao
do tempo aps evento.
(com overflow):
T#61m5s
equivalente a T#1h1m5s
Descrio
Data
absoluta
Time of day
Data e time
of day
Bits
Dependente de
implementao
Dependente de
implementao
Dependente de
implementao
Uso
Armazenar datas
de calendrio.
Armazenar real
time clock.
Armazenar datas e
time of day.
Funes:
q Armazenar a data e tempo de eventos e alarmes.
q Escalonar eventos de controle baseado em data e hora. Por exemplo
aquecer automaticamente um reator em determinada hora.
q Armazenar quando um sistema foi desenergizado e recuperou para
calcular tempo de down time.
IEC1131-3
Representao:
Tipo de dado
Forma compacta
D#
DATE
TIME_OF_DAY ou TOD
TOD#
DATE_AND_TIME ou DT DT#
Forma extendida
DATE#
TIME_OF_DAY#
DATE_AND_TIME
#
Exemplos:
D#1994-06-10
d#1995-01-13
DATE#1993-10-15
TOD#10:10:30
TOD#23:59:59
TIME_OF_DAY#05:00:00:56
10 de Junho de 1994
13 de Janeiro de 1995
15 de Outubro de 1993
DT#1993-06-12-15:36:55.40
Strings
Tipo IEC
STRING
Descrio
String de caracteres
Bits
Dependente de
implementao
Uso
Armazenar texto
Utilizao:
q
q
q
IEC1131-3
ser
inseridos
na
notao:
Interpretao
Caracter $
Caracter '
Alimenta linha
New line
Nova pgina
Retorno de carro
Tabulao
Exemplos:
'Fim da batelada AX45_65'
'Fim do relatrio $N'
'$01$02$10
- 3 caracteres com cdigo decimal 1, 2 e 16
''
- string nulo
Bit strings
Tipo IEC
BOOL
BYTE
WORD
DWORD
LWORD
Descrio
Bit string de 1 bit
Bit string de 8 bits
Bit string de 16 bits
Bit string de 32 bits
Bit string de 64 bits
Bits
1
8
16
32
64
Uso
Digital, estados lgicos
Informao binria
Informao binria
Informao binria
Informao binria
Representao:
q
q
IEC1131-3
Valor
0
''
D#0001-01-01
REAL
ANY_INT
SINT
INT
DINT
LINT
ANY_BIT
BOOL
BYTE
WORD
DWORD
USINT
UINT
ULINT
UDINT
LWORD
STRING
ANY_DATE
DATE_AND_TIME
DATE
TIME_OF_DAY
Estruturas:
Uma estrutura construda atravs de um construtor de estruturas:
STRUCT
END_STRUCT;
Vamos definir um novo tipo para designar um sensor de presso que dever
conter:
1.
2.
3.
4.
5.
TYPE PRESSURE_SENSOR:
STRUCT
INPUT:
STATUS:
CALIBRATION:
IEC1131-3
PRESSURE;
BOOL;
DATE;
7
HIGH_LIMIT:
ALARM_COUNT:
END_STRUCT;
END_TYPE
REAL;
INT;
Enumeraes:
Serve para nomear os diferentes status de um valor:
TYPE MODO_DO_DISPOSITIVO:
(INICIALIZANDO, EXECUTANDO, STANDBY, FALHA);
END_TYPE
Faixas:
Pode-se definir faixa de valores de segurana para variveis:
TYPE
MOTOR_VOLTS: INT(-6..+12);
END_TYPE
O compilador deve assegurar que apenas valores dentro da faixa designada sejam
atribudos s variveis.
Arrays:
Pode ser constitudo de mltiplos valores dos tipos de dados elementares ou
derivados.
TYPE TANQUE_PRESSURE:
ARRAY [1..20] OF PRESSURE;
END_TYPE
TYPE PTIO_DE_TANQUES:
ARRAY [1..3, 1..4] OF TANQUE_PRESSURE;
END_TYPE
Inicializao de Variveis:
Definio de valor default para um tipo de dados criado:
TYPE PRESSURE:REAL:=1.0;
IEC1131-3
(* Default 1 bar *)
8
END_TYPE
Variveis:
Devem ser definidas no incio das Program Organisation Units (POUs):
q Programas
q Blocos de Funes
q Funes
IEC1131-3
Variveis de entrada:
So as variveis de entrada para uma POU e so supridas por uma fonte
externa.
VAR_INPUT
SetPoint:
REAL;
Max_Count: SINT;
END_VAR
Variveis de sada:
So as variveis de sada de uma POU e fornecem valores que sero
escritos em um dispositivo externo. So requeridas por programas e blocos
de funo, mas no por funes.
VAR_OUTPUT
Message:
Status:
END_VAR
STRING(10);
BOOL;
Variveis de Entrada/Sada:
So as variveis que agem tanto como entrada como sada podendo ser
modificadas em uma POU. O valor de uma varivel de entrada e sada
armazenado numa varivel que externa POU. Funcionam como uma
IEC1131-3
10
Inst_A
Varivel de E/S
modificada dentro
do bloco de funes
Fun_Blk_a
MODO_PRINCIPAL
AUTO
AUTO
TYPE MODO_DO_DISPOSITIVO:
(INICIALIZANDO, EXECUTANDO,
STANDBY;
END_TYPE
STANDBY,
FALHA):=
VAR_IN_OUT
AUTO: MODO_DO_DISPOSITIVO;
END_VAR
Variveis Globais:
Podem ser configuradas no nvel de configurao, resource ou programa e
acessadas por POUs por meio de uma declarao de varivel externa.
VAR_GLOBAL
Velocidade_Linha: REAL;
Numero_Job:
INT;
END_VAR
Varivel Externa:
So declaradas dentro de POUs e propiciam acesso a variveis globais
definidas no nvel de configurao, resource ou programa.
VAR_EXTERNAL
Velocidade_Linha: REAL;
Numero_Job:
INT;
END_VAR
IEC1131-3
11
Interpretao
Input: Recebe os valores das variveis analgicas e
discretas dos mdulos de entrada.
Output: Para armazenar os valores a serem escritos nos
dispositivos externos.
Memria interna: armazena valores intermedirios.
Segunda Letra
X
B
W
D
L
Interpretao
Bit
Byte (8 bits)
Word (16 bits)
Double word (32 bits)
Long word (64 bits)
Atributos de variveis
RETAIN
Indica que as variveis seguintes sero colocadas em memria retentiva,
isto que mantm o seu valor em caso de perda de alimentao do CLP.
VAR_OUT RETAIN
PRODUCAO_ACUMULADA: REAL;
IEC1131-3
12
END_VAR
CONSTANT
Indica que os valores de uma lista de variveis no podem ser modificados.
No pode ser utilizado com variveis de sada.
(* Define velocidade inicial e relao entre engrenagens como constantes *)
VAR CONSTANT
StartUp_Speed: REAL := 12.3; (* m/s *)
GearRatio: SINT := 12;
END_VAR
AT
usado para fixar a posio de memria do CLP para alguma varivel
particular que possui um identificador.
Todas as variveis que no tiverem o atributo AT sero endereadas
automaticamente pelo compilador.
(* Define que o array de varredura de dados ir comear na posio *)
(* de memria word 10, e que as sadas digitais no bit 120
*)
VAR
SCAN_DATA AT %IW10:
DIG_OUTPUTS AT%QX120:
END_VAR
ARRAY[1..8] OF SINT;
ARRAY[0..15] OF BOOL;
Variveis de acesso
Podemos definir uma lista de variveis que proporcionam referncias
atravs das quais dispositivos remotos ou outros programas IEC1131-3
remotos podem acessar certas variveis. Estas variveis proporcionam um
caminho de acesso para variveis nomeadas. Podem ser referenciadas:
q Variveis de entrada ou sada de um programa
IEC1131-3
13
q
q
Variveis Globais
Variveis de representao direta
VAR_ACCESS
LINE_START_UP: LINE1.START_UP: BOOL READ_WRITE;
LINE_SPEED:
SPEED:
REAL READ_WRITE;
GOOD_CABLE: LENGTH:
INT READ_ONLY;
END_VAR
LINE_START_UP, LINE_SPEED e GOOD_CABLE so variveis de
acesso que proporcionam caminhos de acesso remoto para
LINE1.START_UP, um parmetro de entrada de um programa chamado
LINE1, e as variveis globais SPEED e LENGTH.
Incializao de variveis
Durante a declarao de uma varivel podemos atribuir um valor de
inicializao que sobrescreve o valor default definido pelo tipo de dados.
VAR
Process_Runs: INT := 10;
Max_tem: REAL := 350.0;
END_VAR
VAR
(* Define palavra na posio de entrada 100 para valor binrio 1001 *)
AT %I100: WORD:= 2#0000_1001;
END_VAR
VAR_OUTPUT
(* Mensagem inicial para operador *)
Message: STRING(21) := Operacional;
(* Estabelece perfil de velocidade *)
Speeds: ARRAY[1..4] OF REAL := 10.1, 2(20.5), 33.1;
END_VAR
IEC1131-3
14
VAR_GLOBAL
SENSOR1: PRESSSURE_SENSOR(
HIGH_LIMIT:= 50.0);
END_VAR
PRESSURE
:=
4.0,
FUNES
Funes so elementos reutilizveis de software, que quando executados
com um certo conjunto de valores de entrada, sempre produzem um nico
valor como resultado.
Funo em ST:
Max_Diff_Press
Press2B));
:=
MAX(ABS
(Press1A-Press1B),
ABS(Press2A-
Funo em FBD:
Press1A
SUB
ABS
Press1B
MAX
Max_Diff_Press
Press2A
SUB
ABS
Press2B
q
q
q
Declarao de funo:
FUNCTION AVE_REAL:REAL
VAR_INPUT
INPUT1, INPUT2: REAL;
END_VAR
AVE_REAL:= (INPUT1 + INPUT2) / 2;
END_FUNCTION
IEC1131-3
15
16
REPORT: STRING(15);
END_VAR
REPORT:= CONCAT('ALARM', ALARM_MESSAGE);
VAR
COUNT: INT;
RAMP_RATE: REAL;
STATUS: WORD;
DISPLAY_VAL: STRING(16);
END_VAR
(* Converte Inteiro para Real *)
RAMP_RATE := INT_TO_REAL(COUNT);
(* Converte de inteiro para palavra *)
STATUS := INT_TO_WORD(COUNT);
(* Converte REAL ponto flutuante para string usando representao *)
(*numrica normal *)
DISPLAY_VAL := REAL_TO_STRING(RAMP_RATE);
Nmeros em ponto flutuante so convertidos para inteiro arredondando-se a
parte decimal para o inteiro mais prximo (IEC559).
2.6
3
-1.5
-2
Na converso para string, o valor ser convertido para sua representao
normal:
12
'12'
154.001 '154.001'
IEC1131-3
17
VAR
VALUE: INT;
BCD_VALUE: WORD := 2#0001_0100_0010; (* BCD 142 *)
END_VAR
(* Convert BCD value to integer *)
VALUE := BCD_TO_INT(BCD_VALUE);
(* value = 142 *)
Deteco de erros
Quando convertendo valores, pode acontecer do tipo destino no suportar o
tipo fonte, como por exemplo na converso de um valor REAL muito
grande para SINT. Neste caso, o PLC deve detectar o problema e fornecer
uma mensagem de erro.
Funes Numricas
Nome da funo
ABS
SQRT
LN
LOG
EXP
SIN
COS
TAN
ASIN
ACOS
ATAN
IEC1131-3
Tipo de dado
ANY_NUM
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
ANY_REAL
Descrio
Valor absoluto
Raiz quadrada
Logaritmo neperiano
Logaritmo base 10
Exponencial
Seno
Coseno
Tangente
Arco de seno
Arco coseno
Arco tangente
18
Nome da
Funo
ADD
MUL
Funes Extensveis
Tipo de Dado
operador
ST
+
ANY_NUM
*
ANY_NUM
Descrio
Adio
Multiplicao
Exemplo:
Nome Funo
SUB
DIV
MOD
EXPT
MOVE
Funes No Extensveis
Tipo de Dado
operador ST
ANY_NUM
/
ANY_NUM
ANY_INT
MOD
**
ANY_REAL
:=
ANY
Descrio
Subtrao
Diviso
Mdulo
Exponencial
Assignment
Exemplos:
A := DIV(12, 3); (* A = 4 *)
A := DIV(14, 5); (* A = 2 *)
A := DIV(-4, 3); (* A = -1 *)
A operao de mdulo s vlida com operandos inteiros.
A := MOD(12, 3); (* A = 0 *)
A := MOD(14, 5); (* A = 2 *)
A := MOD(-4, 3); (* A = -1 *)
19
SHL
ANY_BIT
IN
ANY_INT
ANY
Nome da funo
SHL
SHR
ROR
ROL
Tipo de dado
ANY_BIT
ANY_BIT
ANY_BIT
ANY_BIT
Descrio
Shift Left
Shift Right
Rotate Right
RotateLeft
Exemplo:
VAR
t_8 : BYTE;
G_8 : BYTE;
END_VAR
t_8 := 2#0011_0101;
G_8 := SHL (t_8, 4);
(* G_8 = 2#0101_0000 *)
IEC1131-3
Tipo de dado
ANY_BIT
ANY_BIT
ANY_BIT
BOOL
Smbolo
Descrio
&
>=1
=2k+1
20
Exemplos de funes
equivalente em ST
booleanas
expresso
Funes booleanas:
Confirm:= AND (SW1, SW2, AB_1, AB_2, AX_2);
Trip_1 := OR(OverTemp1, OverTemp2, UnderPress);
Expresses em ST:
Confirm:= SW1 & SW2 & AB_1 & AB_2 & AX_2;
Trip_1 := OverTemp1 OR OverTemp2 OR UnderPress;
VAR
Mask: WORD := 16#FF01;
Status: WORD := 16#0A02;
X_54: WORD;
END_VAR
X_54 := Mask XOR Status; (* X_54 = 16#F503 *)
Funes de seleo:
Permite selecionar um valor de um conjunto de valores dados de acordo com
algum critrio.
(* Se flag TRUE A = 230.0 seno A= 120.0 *)
A:= SEL(G:= Flag, IN0 := 120.0, IN1 := 230.0);
(* Selecione a temperatura Mxima *)
TempMax := MAX(TemA, TempB, TempC, TempD);
(* O tempo de enxarque deve ser limitado entre 1 e 4 horas *)
SoakTime := LIMIT(MN:= T#2h, IN := JobTime, MX := T#4h);
(* Selecione valor do prximo canal de entrada *)
value := MUX(K:= ChanNo, IN0:= Chan0, IN1:=Chan1, IN2:=Chan3);
IEC1131-3
21
Nome da
Funo
SEL
MAX
Tipo de
dado
ANY
Forma Grfica
BOOL
SEL
G
ANY
IN0
ANY
IN1
Descrio
ANY
ANY
MAX
ANY
ANY
Seleo
Se G= TRUE
THEN
Result:= IN1
ELSE
Result:= IN0
Maximum
Result = mximo
de todos valores
de entrada
ANY
***
ANY
MIN
ANY
MIN
ANY
ANY
ANY
Minimum
Result = mnimo
de todos valores
de entrada
***
ANY
LIMIT
MUX
ANY
ANY
LIMIT
MN
ANY
IN
ANY
MX
ANY
ANY
ANY_INT
ANY
MUX
K
ANY
Limit
Resultado o
valor de IN
limitado pelos
valores MN e MX.
Multiplexer
Resultado o
valor da entrada
selecionada pelo
valor de K
ANY
IEC1131-3
22
Funes de comparao:
Funes de comparao:
q Comparam dados do mesmo tipo
q Sempre retornam BOOL
q Podem ser usadas com qualquer tipo de dados
IEC1131-3
23
Tipo
dado
ANY
Forma Grfica
Descrio
LEFT
STRING
STRING
ANY_INT
RIGHT
IN
L
ANY
RIGHT
STRING
STRING
ANY_INT
MID
IN
L
ANY
MID
STRING
CONCAT
STRING
IN
ANY_INT
ANY_INT
ANY
CONCAT
STRING
STRING
***
STRING
INSERT
ANY
INSERT
STRING
IEC1131-3
IN1
ANY_INT
IN2
ANY_INT
STRING
Extrai string
esquerda
Resultado o string
formado pelos L
caracteres mais
esquerda do string
IN.
Extrai string
direita
Resultado o string
formado pelos L
ltimos caracteres
mais a direita do
string IN.
Extrai string do
meio
Extrai L caracteres
do string In
comeando na
posio P.
Concatena strings
Resultado o string
formado pela
concatenao dos
strings de entrada.
A funo
extensvel.
Insert string
O resultado
formado pela
insero do string
IN2 a P caracteres
do inicio do string
IN1.
24
DELETE
ANY
DELETE
STRING
REPLACE
ANY_INT
ANY_INT
ANY
STRING
STRING
ANY_INT
ANY_INT
LEN
STRING
IN
Substitui string
O resultado
REPLACE
formado
IN1
substituindo L
caracteres do string
IN2
STRING
IN1, comeando na
posio P, com
L
caracteres do string
P
IN2.
ANY
LEN
STRING
FIND
INT
ANY
FIND
STRING
IN1
INT
STRING
Deleta string
O resultado
formado pela
deleo de L
caracteres do string
IN1 a P caracteres
do inicio.
IN2
Length
Calcula o
comprimento do
string de entrada.
Find string
Resultado a
posio onde o
string In2 foi
encontrado a partir
do inicio de IN1.
Se o string no foi
encontrado, retorna
0.
Observao:
Pelo padro IEC, o primeiro caracter do string est na posio 1.
Exemplos:
VAR
Recipe_Spec: STRING(12) := 'Recipe_X_141';
Recipe: STRING(14);
Job_Code: STRING(3);
Batch: STRING(20);
BatchId: INT := 7;
END_VAR
IEC1131-3
25
SOMA: ADD
IN1
TIME
TIME_OF_DAY
DATE_AND_TIME
IN2
TIME
TIME
TIME
Result
TIME
TIME_OF_DAY
DATE_AND_TIME
SOMA: SUB
IN1
TIME
DATE
TIME_OF_DAY
TIME_OF_DAY
DATE_AND_TIME
DATE_AND_TIME
q
q
IN2
TIME
DATE
TIME
TIME_OF_DAY
TIME
DATE_AND_TIME
Result
TIME
TIME
TIME_OF_DAY
TIME
DATE_AND_TIME
TIME
IEC1131-3
IN2
ANY_NUM
Result
TIME
26
Examplo:
VAR
ProcessTime: TIME := T#2h;
JobTime: TIME;
scale: REAL:= 1.5;
END_VAR
(* Define a hora do job para 3 horas *)
JobTime := MUL(processTime, scale);
(* Equivalente em TE *)
JobTime := processTime * scale;
CONCAT
IN1
DATE
IN2
TIME_OF_DAY
Result
DATE_AND_TIME
Exemplo:
VAR
startDate: DATE := DATE#1994-03-19;
alarmTime: TIME := TIME_OF_DAY#13:15:00;
timestamp: DATE_AND_TIME;
END_VAR
(* define time stamp como sendo 1994-03-19-12:15:00 *)
timeStamp := CONCAT(startDate, alarmTime);
Funes de converso:
DATE_AND_TIME_TO_TIME_OF_DAY
Extrai time_of_day de um valor composto: date e time_of_day.
DATE_AND_TIME_TO_DATE
Extrai date de um valor composto: date e time_of_day.
Exemplo:
VAR
event: DATE_AND_TIME:= DT#1995-03020-12-:15:00;
eventDate: DATE;
eventTime: TIME_OF_DAY;
END_VAR
IEC1131-3
27
Smbolo
ST
MUX
EQ
NE
<>
Descrio
Seleciona um de dois valores enumerados
dependendo do valor de uma varivel
booleana.
Seleciona um de vrios valores enumerados
dependendo do valor de uma varivel
inteira.
Testa a condio de igualdade de dois
valores enumerados do mesmo tipo.
Testa de dois valores enumerados so
diferentes.
28
CALC
ADD
SQRT
EN ENO
EN ENO
A1
DONE
X1
B1
Count
100 (* Se maior do que 100 ?
ENO (* Ento define ENO
*)
*)
IEC1131-3
29
Blocos de Funes
uma categoria de Unidade de Organizao de Programa (POU).. Permite
um algoritmo especfico ou conjunto de aes a serem aplicados em um
conjunto de dados para produzir um novo conjunto de dados de sada.
Conjunto
de dados
de
Entrada
Algoritmo
Conjunto
de dados
de sada
IEC1131-3
30
RESET
COUNT
Modo
MODE
OUT
INT
HOLD
IEC1131-3
31
FUNCTION_BLOCK COUNTER
(* Define referncia externa *)
VAR_INPUT
MODE: ModeType := RESET;
END_VAR
VAR_OUTPUT
OUT: INT := 0;
END_VAR
Definies:
Lista de entradas,
sada e declaraes
de var internas.
(* Define o Algoritmo *)
IF MODE = RESET THEN
OUT := 0;
ELSIF MODE = COUNT THEN
OUT := OUT + 1;
END_IF;
Corpo do bloco:
Algoritmo expresso
em: ST, FBD, LD,
SFC ou IL
.
END_FUNCTION_BLOCK
Encerra definio
de bloco de funo
Uma instncia da funo contador pode ser declarada dentro de outra POU
como por exemplo outro bloco de funes.
Exemplo: Texto Estruturado
PROGRAM COUNT1
VAR_INPUT
InputMode: ModeType;
END_VAR
VAR_OUTPUT
IEC1131-3
32
Max_Count: INT;
END_VAR
VAR
C1: COUNTER;
END_VAR
(* Chama bloco de funes C1 com o modo definido pelo valor *)
(* de InputMode, um parmetro de entrada para o programa *)
C1(MODE:= InputMode);
(* Atribui a sada para uma varivel *)
Max_count := C1.OUT;
END_PROGRAM
IEC1131-3
Parmetros de entrada/sada
de um bloco so acessados
como se pertencessem a
uma estrutura.
33
PROGRAMS
Um programa a maior forma de POU e pode ser declarada no nvel de
resource.
PROGRAM Fermentador
VAR_INPUT (* Entradas do programa *)
Codigo_Reagente: INT;
Esteriliza: BOOL;
Periodo_fermentacao: TIME;
END_VAR
VAR_OUTPUT (* Sadas do programa *)
Producao: REAL:
Status:WORD;
END_VAR
VAR (* variveis internas e blocos de funo *)
pG_Loop, Temp_Loop: PID;
Fase: INT := 1;
END_VAR
(* Corpo no mostrado no programa, mas
*pode ser ST, FBD, LD, SFC ou IL
*)
END_PROGRAM
IEC1131-3
34
35
RESOURCES
Resources so unidades de processamento capazes de executar programas
IEC.
RESOURCE ResourceName ON Processador
< Declaraes de variveis Globais >
< Caminhos de acesso >
< Declarao de variveis >
< Declarao de Programas >
< Definio de Tasks >
END_RESOURCE
TASKS
um mecanismo de escalonamento que executa periodicamente ou em
resposta a mudana de estado de alguma varivel booleana.
A cada task podemos atribuir um perodo de execuo e uma prioridade. 0
a maior prioridade possvel.
Na prtica, um programa de CLP deve poder ser executado a diferentes
velocidades, dependendo das necessidades temporais de cada processo
controlado. Um forno por exemplo, que possui uma capacidade trmica
muito grande, pode ser controlado por um algoritmo que executa uma vez a
cada minuto. J as funes de intertravamento de segurana de uma
mquina ferramenta devem ser executadas a cada 5 ms.
36
Task C atrapalha
execuo das demais
100
200
300
400
500
600
tempo (ms)
400
500
600
tempo (ms)
Escalonamento preemptivo
Task C interrompida
100
200
300
IEC1131-3
37
Declarao de tasks
TASK NomeDaTask < ( parmetro = valor, )>
Parmetro da
Tipo de
Task
dados
SINGLE
BOOL
INTERVAL
TIME
PRIORITY
UINT
Descrio
varivel booleana. A subida do pulso
desta varivel far com que a task seja
escalonada uma vez.
Perodo de tempo entre execuo da task.
Se este parmetro for definido e se
SINGLE no estiver definido, a task ser
peridica.
Prioridade da task. 0 o maior nvel de
prioridade.
Exemplos:
IEC1131-3
38
Bloco de funo
programas
Bloco de
funo B
regras
de
execuo
de
Bloco de
funo A
Task
I
N
P
U
T
Processa
mento
B
U
F
F
I
N
T
O
U
T
P
U
T
IEC1131-3
39
Configurations
Uma configuration define o software para um PLC completo e ir incluir no
mnimo um resource.
A configuration depende da configurao de hardware do CLP e do tipo de
CPU empregada.
A configuration inclui:
Recursos de processamento: CPUs.
Endereos de memria para entradas e sadas.
Capacidades do sistema (nmero mximo de tasks e velocidades de
execuo).
Observaes:
IEC1131-3
40
Exemplo de configurao;
CONFIGURATION unit_l_config
VAR_GLOBAL
G_speed_setpoint
G_runUp_Time
G_Log_Event AT %M100
G_Log_data
END_VAR
: REAL;
: TIME;
: BOOL;
:ARRAY[1..100] OF INT;
41
Leitura Complementar:
q
Exerccios:
1. Crie um tipo para enumerar os estados de um equipamento de controle.
2. Defina uma estrutura para conter todos os parmetros de um:
a) Equipamento
b) Controlador PID
3. Marque Verdadeiro ou Falso:
( )
( )
( )
4. Defina:
Funo
Bloco de Funo
Programa
Resource
Task
Configuration
5. Complete o programa abaixo para substituir os bits de 4 a 7 de X1 pelos bits
de 4 a7 de X2:
VAR
X1: INT := 2#1011_1100_1011_1101;
X2: INT := 2#1100_1010_1110_0010;
Mask: INT;
END_VAR
IEC1131-3
42
BOOL
SEL
BOOL
BOOL
BOOL
FUNCTION_BLOCK MUX
VAR_INPUT
SEL: BOOL;
A: INT;
B: INT;
END_VAR
VAR_OUTPUT
END_VAR
END_FUNCTION_BLOCK
A
B
C
D
E
F
G
H
I
Operao
Name:=LEFT(IN:=BatchName, L:=4);
Name:=RIGHT(IN:=BatchName, L:=5);
Name:=MID(IN:=BatchName, P:=2, L:=5);
Name:=CONCAT(Empresa, _, BatchName);
N:= LEN(Empresa);
Name:=REPLACE(IN1:=BatchName, IN2:=OPS,
L:=2, P:=3);
Name:=INSERT(IN1:=BatchName,
IN2:=DEF,
P:=3);
Name:=DELETE(IN:=BatchName, L:=4, P:=3);
N:=FIND(IN:=BatchName, IN2:=Nam );
IEC1131-3
Name
43