Anda di halaman 1dari 20

Endereçamento Indireto

?
? ? 1

-
-
-
#Ini_Value -

9
10

#Counter

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Opções de Endereçamento com STEP 7

Procedimento de endereçamento

Endereçamento Direto Endereçamento Indireto

absoluto simbólico memória indireta registrador indireto

16-bit pointer 32-bit pointer 32-bit pointer 32-bit pointer


(DB, T, C) área interna área interna área cruzada

Exemplos:

A I4.0 A "Mot_on" OPN DB[MW10] A I[MD30] A I[AR1,P#0.0] A [AR1,P#0.0]


L IW10 L #num SP T["runtime"] L IW["Number"] L ID[AR1,P#5.0] T W[AR1,P#0.0]

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Endereçamento Direto de Variáveis em DBs

Carregar e
Abrir o DB
Transferir no DB

OPN DB 19 L DBB 1 Carrega o byte de dado 1 do DB


OPN "Values" L DBW 2 Carrega palavra de dado 2 (byte 2/3)
L5 Carrega o número 5
T DBW 4 Transfere para a palavra 4 do DB
OPN DI 20 L 'A' Carrega o caracter A em ASCII
L DIB28 Carrega o byte de dado 28 do DI
==I Compara

A DBX 0.0 Lê conteúdo do bit 0, byte 0


Instrução combinada L DB19.DBW4 Carrega palavra 4 do DB 19
(contém OPN DB..)
L "Values".Number_1 Acesso simbólico da
variável Number_1.
DB19 tem o nome
simbólico "Values"
A DB10.DBX4.7 Lê conteúdo do bit 7, byte 4
do DB 10

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Avaliação de Informação de DB no Programa

 Instruções com DB Registers:


 CDB: Troca de DB Registers

DB-Register 123 24

CDB
DI-Register 24 123

antes: depois:

 Carregar o DB Register no ACCU1


 L DBNO (Carregue o numero do DB aberto no ACCU1)
 L DINO (Carregue o numero do DI aberto no ACCU1)

 Carregar o comprimento dos DBs


 L DBLG (carregue o comprimento/bytes do DB aberto no ACCU1)
 L DILG (carregue o comprimento/bytes do DI aberto no ACCU1)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Memória de Endereçamento Indireto

 Ponteiro de 16-bit em formato Word


(Endereçamento de DBs, T, C)
L 11
T MW 60

OPN DB[MW 60] OPN DB 11

 Ponteiro de 32-bit em formato Double Word


(Endereçamento de I, Q, M, ...)
L P#24.0
T MD 50

L I W [MD50] L IW 24

Área Dimensão Endereço


do Acesso

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Estrutura de Ponteiros com Endereçamento Indireto de Memória

 Estrutura com um Ponteiro 16-bit:


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 146
215 27 20
Interpretação como inteiro sem sinal entre 0 ... 65 535

 Estrutura com um Ponteiro 32-bit (área-interna):


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X
215 20 22 20

Não avaliado Endereço do Byte ( inteiro sem sinal) Endereço


do Bit

 Carregamento de Constantes Ponteiro 32-bit (área-interna):


L P#25.3 (P = "Pointer", Endereço do Byte= 25, Endereço do Bit= 3)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Características do Endereçamento Indireto de Memória
 Áreas de endereço para guardar Ponteiros de 16-bit e 32-bit:
 Memórias M (endereçamento absoluto ou simbólico,
p.ex.:OPN DB[MW30], OPN DI["Motor_1"], etc.
A I[MD30], T QD["Speed_1], etc.)
 Pilha de Dado Local (endereçamento absoluto ou simbólico,
p.ex.. OPN DB[LW10], OPN DI[#DB_NO], etc.
A I[LD10], T QD[#Pointer], etc.)
 DBs globais (só endereçamento absoluto, DB deve ser aberto antes do uso,
p.ex.: OPN DB[DBW0] (sobrescreve registrador DB !!!), OPN DI[DBW22], etc.
A I[DBD10], T QD[DBD22], etc.)
 DBs Instance (só endereçamento absoluto, DI deve ser aberto antes do uso,
p.ex.: OPN DB[DIW20], OPN DI[DIW0] (sobrescreve registrador DI !!!), etc.
A I[DID10], T QD[DID22, etc.)

 Características na Passagem de Ponteiros para FBs e FCs


 Ponteiros passados por parâmetros não podem ser usados diretamente para
endereçamento indireto de memória
 Ponteiros passados para endereçamento indireto de memória devem ser
copiados em variáveis temporárias antes do acesso

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exemplo de Endereçamento Indireto
FC30: Exemplo de endereçamento indireto

Network 1: abrir DB com endereçamento indireto

L #dbnumber // Copia o número do DB no MW100


T MW 100 //
OPN DB[MW 100] // Abre o DB

Network 2: Loop de apagamento

L P#18.0 // Endereço final(DBW18)como Ponteiro


T MD 40 // no MD 40;
L 10 // Preseta contador do loop em 10
anf: T MB 50 // e transfere para MB 50;
L 0 // Carrega valor inical ‘0’
T DBW[MD 40] // e transfere para o DB;
L MD 40 // Carrega o ponteiro e
L P#2.0 // decrementa de 2 Bytes
-D // e então transfere de volta
T MD 40 // para MD 40;
L MB 50 // Carrega o contador do loop
LOOP anf // decrementa e se necessário salta;

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Endereçamento Indireto de Registrador de Área Interna

 Ponteiro de Área interna em AR 1 ou AR2:


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X
215 20 22 20

Não avaliado Endereço do Byte (inteiro sem sinal) Endereço


do Bit

 Sintaxe de Comando :
LAR1 P#10.0 // Presetando em AR1: 00000000 0000 0000 0000 0000 0101 0000

+ 200
L M W [AR1, P#200.0]

Área Dimensão Registr. Constante Instrução : L MW 210


do acesso de end. de offset Executada

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Endereçamento Indireto de Registrador de Área Cruzada

 Ponteiro de Área cruzada no AR 1 our AR2:


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 0 0 0 0 R R R 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X

Identificador de área Endereço do Byte (inteiro sem sinal) Endereço


do Bit
Bit 31=0: área interna
Bit 31=1: área cruzada

 Identificador de Área :
000 I/O 001 Entradas (inputs) (PII)
010 Saídas (outputs) (PIQ) 011 Memórias M
100 Dados no DB Register 101 Dados no DB Register 2 (DI)
110 Dados locais próprios 111 LD do bloco chamado
 Sintaxe do Comando :
LAR1 P#I10.0 // Presetado em AR1: 10000001 0000 0000 0000 0000 0101 0000

L W [AR1, P#200.0] + 200

Dimen- Regist. Offset Instrução L IW 210


são endereço Constante executada:

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Instruções para Carregamento dos Registradores de Endereço

 Carregando o Registrador de Endereços


 LARn (n =1 ou 2): Carregar conteúdo do ACCU1 no ARn
 LARn <Endereço> Carregar conteúdo do<Endereço> no ARn
 LARn P#<Endereço> Carregar endereço do<Endereço> no ARn

<Endereço>:
 Registro de processador: AR1, AR2 (p.ex. LAR1 AR2 e LAR2 AR1)
 Variáveis de 32-bit como: MDn, LDn, DBDn, DIDn (p.ex. L DBD5, etc.)
 variáveis simból. 32-bit : variável compartilhada 32-bit (p.ex. LAR1 "Index",
(compartilhada e local) etc.) e variáveis TEMP de OBs, FBs e FCs
(p.ex. LAR1 #Address, etc.)
P#<Endereço>
 Ponteiro para endereços In.m, Qn.m, Mn.m, Ln.m, DBDn.m, DIDn.m
booleanos absolutos: (p.ex. LAR1 P#M5.3, LAR2 P#I3.6, etc.)
 Ponteiro para local, OB: variáveis TEMP (p.ex.: LAR1 P##Pointer, etc.)
endereços simbólicos FB: variáveis IN, OUT, INOUT, STAT e TEMP
FC: variáveis TEMP (LAR1 P##Loop, etc.)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Outras Instruções com Registradores de Endereço

 Transferindo de um Registro de Endereço


 TARn (n =1 or 2): Transferindo o conteúdo do ARn para ACCU1
 TARn <Endereço> Transferindo o conteúdo do ARn para o <Endereço>
<Endereço>:
 Registro de processador: AR2 (p.ex. TAR1 AR2 )
 Variáveis abs. de 32-bit: MDn, LDn, DBDn, DIDn (p.ex. TAR2 MD5, etc.)
 variáveis simból. 32-bit : variável compartilhada 32-bit (p.ex. TAR1 "Index",
(compartilhada e local) etc.) e variáveis TEMP de OBs, FBs e FCs
(p.ex. TAR1 #Address, etc.)

 Troca dos Registros de Endereço


 CAR Troca dos conteúdos entre AR1 e AR2

 Adicionando ao Registro de Endereço


 +ARn Soma ACCU1-L ao ARn
 +ARn P#n.m Ad. ponteiro de área interna P#n.m no AR1 ou AR2

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Características do Registrador de Endereçamento Indireto
 Uso interno do AR1 pelo editor STL/LAD/FBD
 Acessando os parâmetros de FCs, o AR1 register e o DB register são
sobrescritos, se os parâmetros forem do tipo complexo
("ARRAY", "STRUCT", DATE_AND_TIME") .
 Acessando parâmetros INOUT de FBs, AR1 register e o DB register são
sobrescritos, se o parâmetro INOUT é do tipo complexo
("ARRAY", "STRUCT", DATE_AND_TIME")

Nenhum acesso a parâmetro local deve acontecer entre o


carregamento do registro de endereço e o registro de acesso
indireto da variável desejada.

 Uso interno do AR2 pelo editor STL/LAD/FBD


 O AR2 register e o DI register são usados como registrador básico de
endereços para endereçamento de todos parâmetros e variáveis STAT de FBs.

Se AR2 ou DI forem sobrescritos pelo usuário em um FB,


nenhum acesso aos parâmetros do FB ou variáveis STAT pode
acontecer depois disso, quer dizer, sem uma restauração de
ambos os registros.
 Nenhuma restrição com relação ao AR2 e DI register dentro de FCs

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exemplo de Endereçamento Indireto com Registrador

FC30: Exemplo de Endereçamento Indireto com Registrador

Network 1: Abre o DB com endereçamento indireto

L #dbnumber // Copia o número do DB localmente


T #db_no // variável
OPN DB[#db_no] // Abre o DB

Network 2: Loop para Apagar

LAR1 P#0.0 // Carrega endereço inicial


L 10 // Preset do contador de loop = 10
beg: T #loopcounter // transfere para variável local
L 0 // Carrega valor de inicialização
T DBW[AR1,P#0.0] // transfere para o DB;
+AR1 P#2.0 // decrementa o byte de endereço
L #loopcounter // Carrega contador de loop
LOOP beg // decrementa e salta se necessário

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Se você deseja saber mais

SIMATIC S7 SITRAIN Training for


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

"FC_Read" Data record da peça, de


Valores da IHM : acordo com a UDT 111:
"MD_Part_Code" Parts_Data.Code = DW#16#22222222
Code Parts_Data
Parts_Data.Sequence = W#16#132
(por ex. DW#16#22222222) Parts_Data.Sta_1_TIME= T#1s
Parts_Data.Sta_2_TIME = T#3s
Parts_Data.Sta_3_TIME = T#2s
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 1)

"FC_Read"

Code Parts_Data

Code_available

SIMATIC S7 SITRAIN Training for


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

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
SIMATIC S7 SITRAIN Training for
Automation and Drives
Siemens Ltda.
SIMATIC S7 SITRAIN Training for
Automation and Drives
Siemens Ltda.