Você está na página 1de 22

Chamada de Blocos e Transferência de Parâmetros

OB 1 FB FB FC

FB FB FB

FB FC FC

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Blocos para Programação Estruturada
OB 1 FB1 FB10
Modularização da
Tarefa Inserida: Motor 1 Controller
. . .
 Tarefas parciais são
resolvidas em seus FB2 FC 5 SFC
próprios blocos Limit
Valves Copying
 Atribuição de parâmetros value
atribui flexibilidade de uso
 Exemplo: Ciclo de DB 2
perfuração com tamanho OB 1 FB 1
de parâmetro atribuível Address
0.0
Decl.
in
nome
Start
tipo
BOOL
0.1 in Stop BOOL
Re-usabilidade dos Blocos: .
2.0 out Motor_on BOOL
. 4.0 out Speed INT
 Blocos podem ser 6.0 stat Speed_old INT
chamados tão chamada FB1, DB2 0.0 temp Calc_1 INT
freqüentemente quanto seja Start :=I 0.0
Stop :=I 0.1 .
requerido Motor_on :=Q12.0
.
.
Speed :=QW14 A #Start
 Restrições:
. AN #Stop
= #Motor_on
 sem acesso a endereços . .
globais
 comunicação somente
via lista de parâmetros

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Visão Geral dos Blocos no STEP 7

Tipos de Blocos Propriedades


- interface do usuário
Bloco de
- graduação de prioridades (0..27)
Organização (OB)
- informações específicas de partida na pilha de dados local

Bloco de - parâmetros atribuíveis


Função (FB) - com memória

- parâmetros atribuíveis (parâm. devem ser atribuídos na chamada)


Função (FC) - retorno de valor pode ser retornado
- basicamente sem memória

Bloco de - armazenagem de dados locais estruturados (DB Instance)


Dados (DB) - armazenagem dados globais estruturados (validados no programa)

Bloco de Função - FB (com memória) armazenado no sistema operacional da CPU


do Sistema (SFB) e que pode ser chamado pelo usuário

Função do - FC (com memória) armazenado no sistema operacional da CPU


Sistema (SFC) e que pode ser chamado pelo usuário

Bloco de Dados do
- bloco de dados para configuração de dados e parâmetros
Sistema (SDB)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Declaração de Parâmetros em FCs e FBs
O parâmetro é o modo de
transferência de informações:
End. Decl. Nome Tipo Valor inicial ...
 Parâmetros de entrada: 0.0 in Start BOOL FALSO
Bloco que fez a chamada -> Bloco
0.1 in Stop BOOL VERDADEIRO
 Parâmetros de saída: 2.0 in Speed INT 0
Bloco -> Bloco que fez a chamada
2.0 out Motor_on BOOL FALSO
 Parâmetros In/Out:
Bloco que fez a chamada <-> Bloco 8.0 out Setpoint INT 0
10.0 inout EMER_OFF BOOL FALSO
... stat ... ... ...
Os parâmetros formam a interface ... temp .. ... ...
de um bloco:
 Parâmetros existem na área de código
como variáveis locais
 Parâmetros podem possuir qualquer "Motor" ENO
EN
tipo de dado
 Verificação do tipo de dado no
Start Motor_on
momento da chamada
Parâmetros Setpoint
 Exceções: POINTER, ANY de entrada Stop
 A interface de chamada é Speed Parâmetros
independente de linguagem de Parâmetros de saída
programação EMER_OFF
In/Out
 Linguagens de PLC podem
ser mescladas

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
"Passando" Parâmetros
Tamanho do encadeamento:
 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 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Propriedades das Funções

Parâmetros atribuíveis de blocos:


 muitos parâmetros input, saída e
in/out conforme necessidade
 sem memória, isto é somente Função FC10
variáveis temporárias in On_1 BOOL
Execução do in On_2 BOOL
Conforme IEC 61131-3:
Programa out Off BOOL
 muitos parâmetros input ...
conforme necessidade
 somente um parâmetro saída call FC 10
RET_VAL On_1 := I 0.1 ...
On_2 := I 0.2 A #On_1
 sem acesso a variáveis globais Off := Q8.0 A #On_2
e endeços absolutos = #Off
...
 com os mesmos parâmetros
input eles entregam resultados
idênticos
Expande o conjunto de
instruções do processador

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Características para chamada de Funções
Instrução CALL
 Instrução é Macro
 Sobrescrever conteúdo dos registradores são possíveis, mesmo
registradores DB
 Atenção com o conteúdo da Pilha B (B Stack)
 Após a chamada outro DB é aberto
 Tempo de processamento para chamada depende no número e
localização de memória dos parâmetros atuais
 Instrução chamada assegura que os parâmetros de bloco são
corretamente alimentadas com os dados correntes
 Exemplo:
 chamada FC10
On_1 := I 0.1
On_2 := I 0.2
Off := Q8.0
Instrução chamada UC e CC
 Chamada de bloco independente do RLO (UC) ou dependente (CC)
 Exemplos: UC FC20 ou CC FC20
 utilizável somente, quando o FC não tem parâmetros

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Mecanismo de Passagem para Tipos de Dados Elementares

Parâmetros Elementares
atuais na:
 área de endereço de memória M
IB0 1 0 0 1 0 0 1 0
 imagem de processo
 pilha L p/o chamador ...

OB1 OB1 Função FC10


in On_1 BOOL
Execução do in On_2 BOOL
programa out Off BOOL
...
BLD 1
chamada FC10 = L 20.0
On_1 := I 0.1 UC FC 10 ...
On_2 := I 0.2 P#I 0.1 A #On_1
Off := Q8.0 P#I 0.2 A #On_2
P#Q 8.0 = #Off
BLD 2 ...

Parâmetro Parâmetro Parâmetro


do bloco atual Formal

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
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 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Parâmetros de Blocos do tipo POINTER e ANY
FC... Passagem da informação de um endereço
Address Decl. Name Type (como no STEP 5):
0.0 in DB_Num WORD
2.0 in Area_Pointer DWORD • Número do DB
6.0
.. .
in Length WORD • Endereço inicial
• Comprimento de área, etc.
L #DB_Num
T #I_DB_Num Desvantagens:
OPN DB[I_DB_Num]
. • o programador deve fazer a divisão
L #Area_Pointer
LAR1 • o nome simbólico do endereço não pode ser
L #Length utilizado durante a chamada
...
• vários parâmetros são necessários para uma
área de endereço
FC... • não existe verificação de consistência
Address Decl. Name Type
0.0 in Measure_1 POINTER Passagem da informação de um endereço
...
8.0 in Measure_2 ANY
com parâmetros POINTER ou ANY (STEP 7):
... • o programador pode utilizar o nome simbólico
L P##Measure_1 do endereço na chamada
LAR1 • a divisão de informações é feita pelo Editor
L W[AR1,P#0.0]
T #I_DB_Num LAD/FBD/STL
OPN DB[I_DB_Num] • basta um parâmetro para especificar um endereço
L D[AR1,P#2.0]
LAR1 • existe verificação de consistência
....

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Estrutura e Atributos de um Dado Tipo “POINTER”
 Estrutura do tipo de dado: "POINTER“ (PONTEIRO)

Byte n DB Número (INT) Byte n+1

Byte n+2 1OOO_ORRR_OOOO_OBBB


Byte n+3
(ponteiro 32-bit de

Byte n+4 BBBB_BBBB_BBBB_BXXX


Byte n+5
Área cruzada)

 Atributos de um parâmetro tipo "POINTER"


 Ponteiro mostrado
P#DBn .DBX x.y com: n= DB número, x= byte-número, y= bit-número
P#DIn .DIX x.y (p.ex.: P#DB5.DBX3.4, P#DI2.DIX10.0, etc.)
P#Zx.y com:Z= área, p.ex.: P, I, Q, M e L
(p.ex.: P#I5.3, P#M10.0, etc.)
 Declaração de Endereço:
MD30 (Neste caso, identificador do número do DB e
#Motor_on endereço do bit são automaticamente fornecidos
"Motor_1".speed ao "POINTER")

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Configuração de um dado tipo “ANY”

 Ponteiro "ANY" para Tipos de Dados Tipo de Dado Identificador


VOID 00
Byte n 16#10 Tipo de Dado BOOL 01
Fator de repetição BYTE 02
Byte n+2 CHAR 03
Byte n+4 DB Número WORD 04
1OOO_ORRR_OOOO_OBBB INT 05
Byte n+6 DWORD 06
Byte n+8 BBBB_BBBB_BBBB_BXXX DINT 07
REAL 08
DATE 09
TOD 0A
TIME 0B
S5TIME 0C
 Ponteiro "ANY" para Tipos de Parâmetros DT 0E
STRING 13
Byte n 16#10 Tipo de Parâmetro Tipo Parâmetro Identificador
Byte n+2 16#0001 BLOCK_FB 17
BLOCK_FC 18
Byte n+4 16#0000
BLOCK_DB 19
Byte n+6 16#0000 BLOCK_SDB 1A
COUNTER 1C
Número do Temporizador, Contador ou Bloco
Byte n+8 TIMER 1D

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Atributos dos Parâmetros de Dados Tipo "ANY"
 Apresentação do Pointer:
 P#[Data block.]Bit address Type Number
P#DB10.DBX12.0 REAL 20 Pointer na área do DB10, iniciando com Byte
12, constituído de 20 endereços do dado tipo
REAL (ARRAY[1..20] OF REAL)
P#I 10.0 BOOL 8 Pointer de um campo de 8 bits no IB10
 Declaração de Endereços:
 absoluto:
DB5.DBD10 Data type: DWORD, Repetition factor: 1
DB number: 5, Pointer: P#DB5.DBX10.0
IW32 Type: WORD, RF: 1, DB-No: 0, Pointer: P#I32.0
T35 Type: TIMER, No.: 35
 simbólico:
#Motor_1.speed com dado tipo elementar, o compilador
"Pump:Start" estabelece o correto tipo de dado, fator de
repetição 1 e pointer
 Nota
com atributo simbólico (ARRAY, STRUCT, STRING, UDT), o identificador de
tipo de dado 02 (BYTE) e a dimensão da área em bytes é somente
estabelecida pelo compilador e introduzida no ponteiro ANY.

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Atributos Indiretos de Parâmetros do Tipo “ANY”
 Atributos através dos parâmetros atuais temporários dos tipos de dados
ANY
 declare variável temporária do tipo de dado ANY na chamada do bloco
p.ex.: temp aux_pointer ANY
 carregue a variável temporária ANY com a informação do ponteiro
p.ex.:
LAR1 P##aux_pointer // Carrega endereço ponteiro aux.
L B#16#01 // Carrega identificador B#16#01
T LB [AR1,P#0.0] // e transfere para Offset 0
L ...
...
 Defina o parâmetro de bloco tipo ANY (Targetfield) com a variável
ponteiro auxiliar (aux_pointer)
p.ex.:
CALL FC 111
Targetfield:=#aux_pointer

 Vantagem
 redefinição do parâmetro do pointer ANY durante execução do programa.

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
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 SITRAIN Training for


Automation and Drives
Siemens Ltda.
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 ponteiro de
Field ARRAY[1..10]
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 SITRAIN Training for


Automation and Drives
Siemens Ltda.
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: Determação do número do DB e do endereço inicial

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 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Descrição: Expandindo a Função "FC_Read" (FC 50, Versão 2)

"FC_Read" Data record da peça, de


Valores da IHM: acordo com a UDT 111:
"MD_Code" Parts_Data.Code = DW#16#22222222
Code Parts_Data
Parts_Data.Sequence = W#16#132
(por ex. DW#16#22222222) Parts_Data.Stat_1_time = T#1s
Parts_Data.Stat_2_time = T#3s
Parts_Data.Stat_3_time = T#2s
"DB_Database".Database Database Code_available ´1´
para o "FB_Line"

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Parâmetros e Variáveis Temp do "FC_Read" (FC 50, Versão 2)

"FC_Read"

Code Parts_Data

Database Code_available

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exercício: Programando o Bloco "FC_Read" (FC 50, Versão 2)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Diagrama Estrutural (1) para o bloco "FC_Read" (FC 50, Versão 2)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Diagrama Estrutural (2) para o bloco "FC_Read" (FC 50, Versão 2)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.

Você também pode gostar