Você está na página 1de 18

Apêndice: Acesso Indireto a Parâmetros dos FCs e FBs

OB 1 FB1 FB5

Motor 1 Regler
Motor 1 Regler
. . .

FB1 FC10
Meas_Value ARRAY[1..20]
REAL
Sum REAL
Motor 2
Motor 2 Mean_value REAL . . .

L P##Meas_Value
LAR1
L W [AR1,P#0.0]
FB2 T #DB_Num
OPN DB[DB_Num]
L D [AR1,P#2.0]
LAR1
Ventilinsel .
Ventilinsel . . . .
.
.

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.1
Chamada de Funções com Tipos de Dados Complexos
Exemplo: Passando um ARRAY para uma Função
FC21

DB5 "Temperatura"

A atribuição de parâmetros somente é possível simbolicamente

Network 1: Meas_Val é declarado como um array na FC21

CALL FC 21
Meas_Val:="Temperature".sequence

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.2
Passando Parâmetros para Tipos de Dados Complexos
L-Stack (OB1)
Parâm. Atuais Complexos em: 1 configura
"POINTER"
L-Stack DB5: “values” no L-Stack
No. DB: 5 LB 21
Bloco de Dados Field ARRAY[1..10] ponteiro de
INT área cruzada

...

OB1 Função FC10


OB1 in On ARRAY[1..10]
Execução do BLD 1
INT
Programa out Off BOOL
= L 20.0 ...
L 5
T LW 21
CALL FC10 L P#DBX0.0
On := “Value”.Field T LD23 ...
Off := A8.0 L #On[8]
UC FC 10 2 ...
P#L 21 = #Off
P#A 8.0 ...
BLD 2

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.3
Acesso Indireto para Tipos de Dados Complexos
Address Declaration Name Type Start value Comment
0.0 in Meas_Val ARRAY[1..8]
*4.0 REAL
32.0 out Sum REAL
36.0 out Mean_Val REAL
in_out
0.0 temp DB_Num WORD
Network 1: Determining the DB-No. and the start address

L P## Meas_Val // Carrega endereço do POINTER no ACCU1


LAR1 // e de lá carrega no AR1;
L W [AR1,P#0.0] // Determina o número do DB
T #DB_Num // e carrega na variável temporária;
OPN DB[DB_Num] // Abre DB
L D [AR1,P#2.0] // Determina área pointer
LAR1 // e carrega no AR1;

Network 2: Cálculo da soma (sum)

L 0.000000e+000 // 0 no ACCU1 (sum =0.0)


L 8 // Contador para ACCU1; Sum=0 p/ ACCU2
BEGN: TAK // Sum p/ ACCU1, contador p/ ACCU2
ENT // Contador p/ ACCU3
L D[AR1,P#0.0] // Componentes do campo no ACCU1
+R // Sum no ACCU1, contador p/ ACCU2
+AR1 P#4.0; // Incrementa AR1 de 4 bytes
TAK // Loop de contagem no ACCU1, sum no ACCU2
LOOP BEGN; // Decrementa loop contagem, salta se necessário
T #Sum // Transfere sum para #Sum

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.4
Passando Parâmetros para Ponteiros

Parâmetros "POINTER" L Stack (OB1)


e "ANY" ... LB 21
10H Tipo dado: 05
Ajuste do Fator repetição: 10
1 ponteiro "ANY" No. DB: 0
na L Stack Ponteiro de
(pilha Local) área cruzada: P#I0.0
OB1 ...
BLD 1
= L 20.0 Função FC10
OB1
L W#16#1005
T LW 21 in On ANY
Execução do L 10 out Off BOOL
Programa ...
T LW 23
L 0
T LW25
CALL FC10 L P#I0.0
On := P#I0.0 10 INT T LD27 ...
Off := Q8.0 L P#DBX0.0 2 L P##On
...
T LD23
= #Off
AC FC 10 ...
P#L 21
P#Q 8.0
BLD 2

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.5
Passando Parâmetros para Tipos de Parâmetros

Parâmetros de Bloco:
TIMER, COUNTER
OB1
BLOCK_x

OB1 Função FC10


in On BLOCK_DB
Execução do out Off BOOL
Programa ...
BLD 1
= L 20.0
CALL FC10 AC FC 10
On := DB35 P#4.3 ...
Off := A8.0 P#A 8.0 OPN #ON
BLD 2 ...
= #Off
...

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.6
Construção Especial para Parâmetros Atuais Elementares em DBs
e Constantes
Parâm. elementares atuais em: L Stack (OB1)
Constantes 1 ...
Blocos de dados
DBB2 0 0 0 1 0 1 0 0 .. .. .. .. .. 0 1 .. LB 20
3 ...
DB5

OB1 Função FC10


OB1
in On_1 BOOL
Execução do BLD 1 in On_2 BOOL
Programa = L 20.0 out Off BOOl
...
OPN DB 5
A DBX 2.2
CALL FC10 = L 20.1
On_1 := I0.1 AC FC 10 ...
On_2 := DB5.DBX2.2 A #On_1
P#I 0.1 2
Off := DB6.DBX2.6 A #On_2
P#L 20.1 = #Off
P#L 20.2 ...
A L 20.2
OPN DB 5
= DBX 2.6
BLD 2

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.7
Exercício A.1: Avaliação do Parâmetro Data e Horário em uma FC

FC51
EN ENO

OB1_DATE_TIME IN_DT Sec QB13

Min QB12

Hour QB8

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.8
Chamada de FB Call com Tipos de Dados Complexos
Exemplo: Passando ARRAYs para um Bloco de Funções
FB17

DB2 "Temperature"

Atribuíndo parâmetros complexos


somente é possível simbolicamente
Network 1:

CALL FB 17, DB 30
Meas_1 :="Temperature".Cylinder
Sum_1 :=MD20
Sum_2 :=MD30
Meas_2 :="Temperature".Shaft

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.9
Acesso Indireto a Parâmetros de Entrada/Saída
Address Declaration Name Type Start value Comment
0.0 in Meas_1 ARRAY[1..10]
*4.0 REAL
40.0 out Sum_1 REAL 0.000000e+000
44.0 out Sum_2 REAL 0.000000e+000
48.0 in_out Meas_2 ARRAY[1..15]
*4.0 in_out REAL
54.0 stat DB_Num INT 0
Network 1: Determinando o endereço de início do Meas_1

LAR1 P##Meas_1 // Carrega ponteiro de área cruzada p/parâmetro sem


// offset de endereço (multi-instances) no AR1
TAR2 // Carrega offset de endereço no ACCU1
+AR1 // Soma offset de endereço no AR1;
// AR1 agora aponta p/parâmetros no DB instance
// DB instance já está aberto

Network 2: Acesso para Meas_1

L 0.000000e+000 // 0 no ACCU1 (Soma =0.0)


L 10 // Contador para ACCU1; Sum=0 p/ ACCU2
BEGN: TAK // Sum no ACCU1, contador no ACCU2
ENT // Contador p/ ACCU3
L D[AR1,P#0.0] // Campo de componente no ACCU1
+R // Soma no ACCU1, contador p/ ACCU2
+AR1 P#4.0; // Incrementa AR1 em 4 bytes
TAK // Loop de contagem no ACCU1, soma no ACCU2
LOOP BEGN; // Decrementa loop de contagem e salta se necessário
T #Sum_1 // Transfere soma para #Sum_1

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.10
Acesso Indireto a Parâmetros de Entrada/Saída
Address Declaration Name Type Start value Comment
0.0 in Meas_1 ARRAY[1..10]
*4.0 REAL
40.0 out Sum_1 REAL 0.000000e+000
44.0 out Sum_2 REAL 0.000000e+000
48.0 in_out Meas_2 ARRAY[1..15]
*4.0 in_out REAL
54.0 stat DB_Num INT 0

Network 3: Determinando o endereço inicial do Meas_2

LAR1 P##Messung_2 // Carrega ponteiro de área cruzada p/POINTER sem


TAR2 // Carrega offset de endereço no ACCU1, soma ao AR1;
+AR1 // AR1 agora aponta p/POINTER no DB instance
L W [AR1,P#0.0] // Carrega número do DB do POINTER no ACCU1
T #DB_Num // Transfere número do DB(ou 0) na variável estática
OPN DB [#DB_Num] // Abre DB
L D [AR1,P#2.0] // Carrega ponteiro de área cruzada p/ parâmetro
LAR1 // Carrega ponteiro no AR1, AR1 aponta p/parâmetro

Network 4: Access to Meas_2

L 0.000000e+000 // 0 p/ ACCU1 (Soma =0.0)


L 15 // Contador p/ ACCU1; Soma=0 p/ ACCU2
BEGN: TAK // Soma no ACCU1, contador no ACCU2
ENT // Contador p/ ACCU3
L D[AR1,P#0.0] // Campo de componentes no ACCU1
+R // Soma no ACCU1, contador p/ ACCU2
... // ...

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.11
"Passando" Parâmetros
Tamanho do aninhamento:
S7-300: máx. 8 S7-400: máx. 16

OB FBs ... FBs FCs

A passagem depende do tipo de bloco, dado e parâmetro:

Chamada FC chama FC FB chama FC FC chama FB FB chama FB


Tipo de dado P EC P E C P E C P E C
Input -> Input x - - x x - x - x x x x
Output -> Output x - - x x - x - - x x -
in/out -> Input x - - x - - x - - x - -
in/out -> Output x - - x - - x - - x - -
in/out -> in/out x - - x - - x - - x - -

E: Tipo de dado elementar


C: Tipo de dado complexo
P: Tipo parâmetro (Timer, Counter, Block_x)

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.12
Exercício A.2: Avaliação de Parâmetro Data e Horário em um FB

FB83

0.0 in IN_DT DATE_AND_TIME DT#90-1-1-0:0:0.0


out
in_out
8.0 stat DUMMY ARRAY[1..100]
*2.0 stat INT
208.0 stat FB63_DT FB63

OB1_DATE_TIME IN_DT FB63


EN ENO

IN_DT Sec QB13

Min QB12

Hour QB8

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.13
Exercício A.3: Avaliação de Parâmetros de Entrada/Saída em um
FB
FB84

0.0 in IN_DT DATE_AND_TIME DT#90-1-1-0:0:0.0


out
in_out
8.0 stat DUMMY ARRAY[1..100]
*2.0 stat INT
208.0 stat FB64_DT FB64
...

OB1_DATE_TIME IN_DT FB64


EN ENO

IO_DT Sec QB13

Min QB12

Hour QB8

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.14
Solução do Exercício A.1: Acesso a Parâmetros DT em uma FC

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.15
Solução do Exercício A.2: Acesso a Parâmetros DT em um FB

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.16
Solução do Exercício A.3: Acesso a Parâmetros Entrada/Saída em
um FB (Parte 1)

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.17
Solução do Exercício A.3: Acesso a Parâmetros Entrada/Saída em
um FB (Parte 2)

SIMATIC S7 Datum: 09.03.14 Conhecimento em Automação


Trainings Center
Siemens AG 1999. All rights reserved. Datei: PRO2_15P.18

Você também pode gostar