The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

BECKHOFF-TC3_PLC-002-TwinCAT 3 PLC_IEC Nivel1 (2017)

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Vidal Jovan, 2020-12-07 13:14:14

BECKHOFF-TC3_PLC-002-TwinCAT 3 PLC_IEC Nivel1 (2017)

BECKHOFF-TC3_PLC-002-TwinCAT 3 PLC_IEC Nivel1 (2017)

Keywords: beckhoff,twincat,bresimar,asatek,andril

TwinCAT 3 PLC

Capitulo 2 – 1ª Parte

Introdução à programação “TwinCAT 3”
IEC 61131-3

asaTek / J. Andril

[email protected]

2017

1

IDENTIFICADORES (“Identifiers”)

Um IDENTIFICADOR é um nome que designa uma variável , função ou outro
tipo de dados …

• Começar por uma letra ou “underscore” (ex: _inout ; Ligth1 ; n1Input )
• Seguido por números , letras e “underscore” (ex: P12 ; Input10_fc1 )
• Não existe diferenças entre letras maiúsculas e minúsculas (ex: Out1 = out1)

NÃO É PERMITIDO
• Caracteres especiais (!,“,§,$,*,@,#..) (ex: In#1 ; @out1 )
• Caracteres em branco (ex: Input 21 )
• “Underscore” seguidos (ex: Ana__21 )
• Usar palavras-chave [“keyword”] (ex: bool ; false ; and ; dint ; int )

2

PREFIXOS (“Prefix”)

Os PREFIXOS não são obrigatórios , mas é de boa prática colocar um no
inicio de cada nome . Algumas sugestões :

A primeira letra , em minúscula , deverá ser o prefixo seguido do nome da
variável iniciada por uma letra maiúscula .

b - BOOL bAlarme_pressao
w - WORD wEntradas
r - REAL rTemperatura
d - DATE dData
t - TIME tTempo1
s - STRING sRxDados

ST_ - Declaração de uma STRUCT ST_ParaMotor (declaração)
st - Instancia de uma STRUCT stM1Parametro (instancia)
FB_ - Declaração de uma função bloco FB_Calculo (declaração)
fb - Instancia de uma função bloco fbM1Calculo (instancia)

3

PALAVRAS CHAVE (“Keyword”) E COMENTÁRIOS

Palavras chave (“keyword”) pré- Os comentários são delimitados com
definidas pela norma IEC61131-3. os caracteres de (* no principio
da frase e *) no fim ou // .
Esta syntax não poderá ser usada
como nomes de variáveis ou outros Os comentários poderão ser
fins na programação colocados em qualquer espaço em
branco .
TRUE, FALSE, AND, FUNCTION, … Exceção: dentro de caracteres
STRING.
TYPE, STRUCT, PROGRAM ...
(*Entradas digitais*)
Usando a opção “ Auto format ” as bIniciar AT%IX0.0:BOOL; // Iniciar posto
palavras chave são escritas em letras
maiúsculas . (*Entradas analogicas*)
TemK1 AT%IW10 (*Byte 10-11*) :WORD;

4

TIPO DE DADOS I (1)

O tipo de dados dita o espaço que será reservado e alocado na RAM da CPU .

Tipo (WORD)

Tamanho (2 Byte)

Valor inicial (0)

Gama (0..65535)

TIPO VALOR

STRING µ

SINT -75
USINT 181

BYTE 1 0 1 1 0 1 0 1

5

TIPO DE DADOS I (2)

Tipo (Prefixo) ANY-Tipo Palavra Tamanho Inicial Gama
(Bit)
Booleano (x ou b) ANY_Bit BOOL 1 FALSE TRUE/FALSE
BYTE 8 0 FF ( 0..255)
Bit string (by) WORD 16 0 FFFF (0..65535)
DWORD 32 0 FFFF_FFFF (0..4294967295)
Bit string (w) LWORD 64 0 FFFF_.._.._FFFF
SINT 8 0 -27...27-1 (-127..127)
Bit string (dw) INT 16 0 -215...215-1 (-32768..32767)
DINT 32 0 -231...231-1(-2147483648..2147483647)
Bit string (lw) LINT 64 0 -263...263-1
USINT 8 0 0...28-1 (0..255)
“Short integer” (si) ANY_Num UINT 16 0 0...216-1 (0..65535)
UDINT 32 0 0...232-1 (0..4294967295)
Inteiro (i) ULINT 64 0 0...264-1

“Double integer” (di)

“Long integer” (li)

“Unsi. S. integer” (usi)

“Unsigned integer” (ui)

“Unsi. L. integer” (uli)

“Unsi. D. integer” (udi)

6

TIPO DE DADOS I (3) 1 0000 0000 0000 0000

Tipo de dados com Overflow 0000h

1111 1111 1111 1111 Valor Minimo

FFFFh INT 0

Valor Maximo

INT -1

-+

8000h 7FFFh

Valor Minimo Valor Máximo

INT -32768 INT 32767

1000 0000 0000 0000 0111 1111 1111 1111
7

TIPO DE DADOS I (4)

Tipo de dados em carta de Entradas analógicas EL3102 (-10Vdc..+10Vdc)

Sinal de entrada Grandeza De acordo com a grandeza representada devemos
EL310x Decimal
+10V 32767 .declarar uma variável com o tipo de dado INT

+5V 16383 Hexadecimal
0x7FFF
0 0 0x3FFF
-5V -16383 0x0000
-10V -32768 0xC001
0x8000

8

TIPO DE DADOS I (5) Tamanho Inicial Gama
(Bit)
Tipo (Prefixo) ANY-Tipo Palavra 32
64
Virgula flutuante ANY_Real REAL 32 0.0 -1.18*10-38..
(r) LREAL 32 0.0 3.4*1038
DATE (D)
“Long real” (lr) 32 D#1970-01-01 -2.22*10-308..
1.798*10308
Data (date) ANY_Date 32
TOD#1070-01-01
(80+1)*8 TOD#2106-02-07

Hora real (tod) TIME_OF_DAY (80+1)*8 TOD#00:00 TOD#00:00:00
(TOD) TOD#23:59:59

Data e hora real DATE_AND_TIME DT#1970-01- ………………….
(dt) (DT) 01-00:00 DT#2106-02-07-
23:59:59
Tempo (tim) ANY_Time TIME T#0ms
d -day ; h -hour ;
Caracteres ANY_String STRING ‘‘ m -minute ; s –sec ;
sequenciais (s) WSTRING Ms -msec
(Código ASCII, ‘‘
C. Sequenciais – 80 caracteres Ex:
Unicode (ws) standard com o sVar: STRING(1)
máximo de 255, sVar:=‘A’
termina em zero)
Ex:
sVar: STRING(20)
sVar:=‘Обучение’

9

TIPO DE DADOS I (6)

Exemplo de tipo de dados

BOOL TRUE 2#1 16#1 1
0
FALSE 2#0 16#0 45054

WORD 2#1010111111111110 16#AFFE -32768
DWORD t#3600000ms

INT 2#1000000000000001 16#8001 t#43200000ms

TIME t#1h t#60m t#1818090ms

d day

h hours t#0.5d t#12h

m min

s sec t#30m18s90ms t#0.505025h

ms ms

REAL 0.3333 3.333e-1

10

TIPO DE DADOS I (7)

O modo de endereçamento, na norma IEC, é orientado em word

11

SEQUÊNCIA DE CARACTERES (“String”) (1)

+ Uma variável STRING VAR + Cada caracter dentro de um
pode conter qualquer strVar :STRING(3); STRING precisa de 1 “byte” .
sequência de caracteres . lenVar: INT;
sizeVar: INT; + O tamanho total de um STRING é
+ O tamanho definido na sempre “nºcaracteres+1” byte
declaração da variável END_VAR
determina a quantidade + O máximo é de 255 caracteres
de memoria reservada .
+ Para o formato Unicode utiliza-se
+ É definido o numero de o tipo de dados WSTRING
caracteres do STRING
entre ( x ) . 12

+ Se não for definido o nº
de caracteres , por defeito
será reservado espaço
para 80 caracteres .

+ Um STRING termina
sempre com um caracter
“zero” .

SEQUÊNCIA DE CARACTERES (“String”) (2)

Se desejarmos acrescentar um caracter especial dentro de uma variável STRING ,
deve inicia-lo com :

$<dois valores em Hex=8bits>

Ex: ‘ABcD$R$L’ ; ‘asaTek$0D$0A’

Caracteres especiais

Caracter Descrição

(65d) ‘A’ $$ Sinal dólar
(11d) [VT] $‘ Sinal plica
(49d) ‘1’ $L or $l “Line feed-LF“ (0AH)
(48d) ‘0’ $N or $n “New line-VT” (0BH)
(00d) [NULL] $P or $p “Page feed-FF” (0CH)
(00d) [NULL] $R or $r “Line break-CR” (0DH)
$T or $t “Tab“(09H)

13

SEQUÊNCIA DE CARACTERES (“String”) (3) 1)

ASCII <-> CHR 2)

Se desejarmos converter um 14
caracter para ASCII podemos
faze-lo da seguinte maneira :

1. Indiretamente , interpretando
cada posição de memoria (Ex:
%MB20) .

2. Diretamente utilizando as
funções ASC ou CHR incluída
na livraria „Tc2_SerialCom.lib“.

DECLARAÇÃO DE VARIÁVEIS (1)

Uma variável corresponde a um nome , por trás do qual se esconde um
valor (numérico , “string” , data , etc) . O nome da variável pode servir de
descrição da função da variável.
O nome (identificador) da variável é o meio de declarar o tipo de dado e o
valor inicial . Os seus dados podem ser alteradas em runtime.

Identificador Tipo dados Valor inicial Comentários

bIniciarProcesso1:BOOL:=TRUE; (* Podemos colocar comentários *)

A localização física-logica de
memoria, da variável, não é
conhecida pelo programador

(não endereçada)

15

DECLARAÇÃO DE VARIÁVEIS (2)

Na declaração de uma variável é possível endereça-la a um endereço físico
absoluto ( entradas , saídas digitais ou analógicas , memoria interna
absoluta , etc) . Para as Entradas e Saídas de hardware usamos %I* e %Q*.

Identificador AT Ent./Sai./Me. Tamanho Endereço :Tipo dados ;

Identifier AT %I X Byte Bit Data type

%Q B Byte

%M W Estas variáveis tem um único

D endereço fixo em memoria.
(endereçada)

bEstadoMaquina1 AT%MX0.0:BOOL:=TRUE; 16

NOTA: Podemos substituir uma variável %M por um UNION …. END_UNION

bSaidaDigital10 AT%Q*:BOOL:=TRUE;
bEntradaDigital1 AT%I*:BOOL;

DECLARAÇÃO DE VARIÁVEIS (3)

Divisão, dos endereços absolutos, nos diversos tipos de dados BIT, BYTE,
WORD e DWORD

IX10.7 IX10.6 IX10.5 IX10.4 IX10.3 IX10.2 IX10.1 IX10.0

IB10 Din0 AT %IX10.0: BOOL;

IB1 IB0 Ain AT %IB0: INT;
IW0
equivalente

Ain AT %IW0: INT;

IX22.7 IX22.6 IX22.5 IX22.4 IX22.3 IX22.2 IX22.1 IX22.0 BitVar AT %IX22.1: BOOL;

IB23 IB22 IB21 IB20 Pos AT %IB20: UDINT;
IW22 IW20
ID20 equivalente

Pos AT %ID20: UDINT;

DECLARAÇÃO DE VARIÁVEIS (4)

As VARIÁVEIS LOCAIS estão As VARIÁVEIS GLOBAIS são
limitadas ao bloco em que elas reconhecidas em todos os
são declaradas . blocos do projeto .

(* VARIÁVEIS LOCAIS *) (* VARIÁVEIS GLOBAIS *)
VAR_GLOBAL ..
VAR .. END_VAR
VAR_CONFIG ..
END_VAR END_VAR
VAR_INPUT .. (*Va. de Entrada*)
18
END_VAR
VAR_IN_OUT .. (*Va. Ent./Saida*)

END_VAR
VAR_OUTPUT .. (*Va. Saida*)

END_VAR

DECLARAÇÃO DE VARIÁVEIS (5)

No Programa A existe um acesso á variável local “locVar”, do Programa B ,
através do acesso direto ao endereço %MB2 .

Programa de uma maquina PROGRAM B

PROGRAM A VAR
VAR locVar AT%MB2:WORD;
END_VAR END_VAR

LD %MB2

19

DECLARAÇÃO DE VARIÁVEIS (6)

Programa maquina Nome do espaço Neste programa existe uma
(namespace): sobreposição de declarações
VAR_GLOBAL Gvl1 da variável “Var1” . Como
Var1:WORD; é mostrado no programa
apresentado .
END_VAR
Neste caso, a declaração local
PROGRAM A da variável “Var1” é carregada
no acumulador .
VAR
Var1 :WORD; As variáveis globais (Ex. Var1)
poderão ser acedidas através
END_VAR do Namespace (Ex. Gvl1.Var1)

LD Var1

LD Gvl1.Var1

20

DECLARAÇÃO DE VARIÁVEIS (7)

Atributos (“attributes”) poderão ser usados para definir aspectos especiais a uma
variável .

Exemplos:

As variáveis serão “armazenadas” quando desligamos (“shutdown”) o PLC , para
poderem serem de novo “carregadas” num novo iniciar do PLC .

(* Memoria retentiva , “On-line/reset”*) (*Memoria persistente, “Rebuild all*)

VAR RETAIN VAR PERSISTENT

Contador: UINT; Contador: UINT;

END_VAR END_VAR

O valor inicial será carregado com o valor pré-definido na declaração da variável no
Iniciar ou Reset do PLC .

VAR

TempoArranque : TIME := T#3s200ms;

END_VAR

21

DECLARAÇÃO DE VARIÁVEIS (8)

Programa máquina Se desejarmos usar constantes
(matemáticas, parâmetros máquina ,
VAR_GLOBAL CONSTANT etc ) poderemos usar nas palavras
chave VAR_GLOBAL .. END_VAR o
END_VAR atributo CONSTANT .

PROGRAM A Este atributo pode também ser usado
VAR CONSTANT em variáveis locais .

END_VAR Exemplo (só de leitura) :

VAR_GLOBAL CONSTANT
pi:REAL:=3.141592654;

END_VAR

VAR CONSTANT
pi:REAL:=3.141592654;

END_VAR

22

POU “program organisation units“ (1)

Na norma IEC61131-3 existem 3 tipos de POU´s
(“Program Organization Unit”) :

“Programas” (PRG)
“Funções bloco” (FB)
“Funções” (FUN)

Os programas são inicializados por
tarefas (“Task”) pré-configuradas .

23

POU “program organisation units“ (2)

Cada POU consiste de uma tabela de declaração das variáveis locais e de
uma zona em que será escrito o programa .

A tabela de declaração é sempre do mesmo formato (com 2 opções de
apresentação) independentemente do tipo de linguagem IEC que optamos
para programar .

Quadro de programação para programar em qualquer tipo de
linguagem IEC ( „IL“ , „ST“ , „SFC“ , „FBD“ , „LD“ ou „CFC“ ) .

24

POU “program organisation units“ (3)

“PROGRAMAS (PRG)” („Main“)

• Chamado por uma tarefa (“task”)
• Pode chamar : FB‘s, “Funções”, “Programas”
• Variáveis locais: estáticas (os dados locais estão

disponíveis no próximo ciclo)
• Entradas: geralmente 0, mas são possíveis

VAR_INPUT
• Saídas: geralmente 0, mas são possíveis

VAR_OUTPUT
• Transferência de variáveis: São possíveis

VAR_IN_OUT
• „Debug“: Os dados locais são visíveis em modo on-line
• Utilização: Programa principal , Manual, Automático ....

25

POU “program organisation units“ (4)

“FUNÇÕES BLOCO (FB)”

• Chamado por “Programas” ou FB´s
• Pode chamar : FB‘s, “Funções”
• Variáveis locais : estáticas ( os dados locais estão disponíveis no

próximo ciclo ). Em múltiplas chamadas (instancias) cada FB guarda as suas
próprias variáveis locais, em áreas de memoria RAM diferentes.
• Entradas: 0,1,2,3

VAR_INPUT
• Saídas: 0,1,2,3

VAR_OUTPUT
• Transferências de variáveis: 0,1,2,3

VAR_IN_OUT
• „Debug“: Em modo on-line no “PLC Control” as instancias tem de serem

declaradas . Depois disso, os dados locais são visíveis em cada chamada.
• Utilização: “Funções” com cálculos iguais mas com dados diferentes …

26

POU “program organisation units“ (5)

Criação de instancias PROGRAM MAIN PRG Instancia_1
VAR Var_In :WORD;
FB Var_Out :BYTE;
Instancia_1 :A; Var_1:WORD;
FUNCTION_BLOCK A Instancia_2 :A; Instancia_1
VAR _INPUT Instancia_3 :B; X :REAL;
END_VAR Y :REAL;
Var_IN :WORD;
END_VAR CAL Instancia_1
VAR _OUTPUT CAL Instancia_3

Var_Out :BYTE; FUNCTION_BLOCK B FB Instancia_2
END_VAR VAR_INPUT Var_In :WORD;
VAR Var_Out :BYTE;
X :REAL; Var_1:WORD;
Var1 :WORD; END_VAR Instancia_1
Instancia_1: B; VAR _OUTPUT X :REAL;
END_VAR Y :REAL;
Y :REAL;
LD Var1 END_VAR Instancia_3
CAL Instancia_1 X :REAL;
Y :REAL;

27

POU “program organisation units“ (6)

“FUNÇÕES (FUN)”

• Chamado por “Programas”, “Funções bloco” e outras “Funções”

• Pode chamar: “Funções”

• Variáveis locais : temporárias, (os dados locais estão só disponíveis dentro do
tempo de operação da função) .

• Entradas: 1,2,3........

VAR_INPUT

• Saídas: exactamente 1 ! . O nome da saída é ao mesmo tempo o nome da Função
.

• Transferência de variáveis: Não são possíveis

VAR_IN_OUT

• „Debug“: As variáveis locais em on-line apresentam os seguintes caracteres
“???” (valor indefinido) . Isto deve-se a que as variáveis são multiplamente
usadas pelas funções num mesmo ciclo. Para depurar o programa deverá usar
“breakpoints” .

• Utilização: Algoritmos em que o resultado deverá ser apresentado . Resultado de
comparação , cálculos de escala , conversões , etc …

28

POU “program organisation units“ (7) VALOR DE
RETORNO
NOME DA FUNÇÃO
(FUN) “Scale”
“Scale”
O nome da
Variáveis de entrada variável de saída
Variáveis locais só são
validas dentro do tempo (resultado) é
de operação da FUNÇÃO “Scale” .

A variável
“Scale” pode ser

usada como
variável local

dentro da
FUNÇÃO
(Ler / Escrever)

29


Click to View FlipBook Version