Upload
romanholo
View
71
Download
4
Embed Size (px)
Citation preview
Date: 13/04/23File: PRO2_04P.1
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Endereçamento Indireto e Instruções com Registrador de Endereços
L W [AR1, P#200.0]
----
1
2
9
10
#Ini_Value
#Pointer
#Counter
??
?
Date: 13/04/23File: PRO2_04P.2
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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
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]
16-bit pointer(DB, T, C)
32-bit pointerárea interna
32-bit pointer área interna
32-bit pointerárea cruzada
Date: 13/04/23File: PRO2_04P.3
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Endereçamento Direto de Variáveis
Endereço do Operando (p. ex.)
I 37.4
Operando Dimensões de Accesso Adicionais
Byte, word,double word
Designação
Entradas (Inputs)
Q 27.7 Byte, word,double word Saídas (Outputs)
PIB 655 Byte, word,double word
Periferia de Entrada (Peripheral inputs)
PQB 653 Byte, word,double word
Periferia de Saída(Peripheral outputs)
M 55.0 Byte, word,double word
Bits de Memória(Bit memories)
T 114 -- Temporizadores (Timers)
C 13 -- Contadores (Counters)
DBX 2001.6 Byte (DBB), word (DBW),double word (DBD)
Dado endereçado viaRegistrador de DB
DIX 406.1 Byte (DIB), word (DIW),double word (DID)
L 88.5 Byte (LB), word (LW),double word (LD)
Pilha de Dados Local(Local data stack)
Dado endereçado viaRegistrador de DI
Date: 13/04/23File: PRO2_04P.4
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Endereçamento Direto de Variáveis em DBs
Abrir o DB Carregar e Transferir no DB
OPN DB 19OPN "Values"
OPN DI 20
Instrução combinada(contém OPN DB..)
L DBB 1 Carrega o byte de dado 1 do DBL DBW 2 Carrega palavra de dado 2 (byte 2/3)L 5 Carrega o número 5 T DBW 4 Transfere para a palavra 4 do DBL 'A' Carrega o caracter A em ASCIIL DIB28 Carrega o byte de dado 28 do DI==I Compara
A DBX 0.0 Lê conteúdo do bit 0, byte 0
L DB19.DBW4 Carrega palavra 4 do DB 19
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
Date: 13/04/23File: PRO2_04P.5
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Avaliação de Informação de DB no Programa
antes: depois:
CDB
123 24
24 123
DB-Register
DI-Register
Instruções com DB Registers: CDB: Troca de DB Registers
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)
Date: 13/04/23File: PRO2_04P.6
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Ponteiro de 16-bit em formato Word(Endereçamento de DBs, T, C)L 11T 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
Memória de Endereçamento Indireto
Date: 13/04/23File: PRO2_04P.7
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Estrutura de Ponteiros com Endereçamento Indireto de Memória
Estrutura com um Ponteiro 16-bit:
Interpretação como inteiro sem sinal entre 0 ... 65 535
146
Estrutura com um Ponteiro 32-bit (área-interna):
Endereçodo Bit
Endereço do Byte ( inteiro sem sinal)Não avaliado
Carregamento de Constantes Ponteiro 32-bit (área-interna):L P#25.3 (P = "Pointer", Endereço do Byte= 25, Endereço do Bit= 3)
0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
20215 27
B B B B B B B B B B B B B X X X
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
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
202220215
Date: 13/04/23File: PRO2_04P.8
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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
Date: 13/04/23File: PRO2_04P.9
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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 MW100T MW 100 // OPN DB[MW 100] // Abre o DB
Network 2: Loop de apagamento
L P#18.0 // Endereço final(DBW18)como PonteiroT 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 eL 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 loopLOOP anf // decrementa e se necessário salta;
Date: 13/04/23File: PRO2_04P.10
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Exercício 4.1: Programando Loop com Endereçamento Indireto
----
Meas_Value[1]
Meas_Value[2]
Meas_Value[9]
Meas_Value[10]
Meas_Value[11]
#Ini_Value
1.0
2.0
9.010.0
11.0 . . .
etc.
DB41
0
4
32
36
40
Ponteiro do endereço
na Pilha Local
#Par_Pointer
#Counter
Endereço do Byte
Date: 13/04/23File: PRO2_04P.11
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Endereçamento Indireto de Registrador de Área Interna
LAR1 P#10.0 // Presetando em AR1: 00000000 0000 0000 0000 0000 0101 0000
+ 200L M W [AR1, P#200.0]
Área Dimensão Registr. Constante Instrução : L MW 210 do acesso de end. de offset Executada
Ponteiro de Área interna em AR 1 ou AR2:
Endereçodo Bit
Endereço do Byte (inteiro sem sinal)Não avaliado
Sintaxe de Comando :
B B B B B B B B B B B B B X X X
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
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
202220215
Date: 13/04/23File: PRO2_04P.12
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Endereçamento Indireto de Registrador de Área Cruzada
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:
Ponteiro de Área cruzada no AR 1 our AR2:
Endereçodo Bit
Endereço do Byte (inteiro sem sinal)Identificador de área
Sintaxe do Comando :
Bit 31=0: área internaBit 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
B B B B B B B B B B B B B X X X
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
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Date: 13/04/23File: PRO2_04P.13
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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.)
Date: 13/04/23File: PRO2_04P.14
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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
Date: 13/04/23File: PRO2_04P.15
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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
Date: 13/04/23File: PRO2_04P.16
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Exercício 4.2: Loop com Registrador de Endereçamento Indireto
#ACCU1 Ponteiro do endereço
no DB
#AR1
#ACCU2
----
Number[1]
Number[2]
Number[9]
Number[10]
Number[11]
1
2
910
11 . . .
etc.
DB42
0
4
32
36
40
Endereço do Byte
Date: 13/04/23File: PRO2_04P.17
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Tipos de Ponteiros do STEP 7 Ponteiro 16-bit para Endereçamento Indireto de Memória
Para acesso indireto de memória de temporizadores, contadores e DBs abertos
Ponteiro 32-bit p/ Endereçamento Indireto de Memória e Registrador Ponteiro 32 bit de área interna para acesso indireto de memória e registrador
de endereços em PI, PQ, I, Q, M, DB, DI e L (pilha local) Ponteiro 32 bit de área cruzada para acesso indireto do registrador de
endereços PI, PQ, I, Q, M, DB, DI, L e V (Pilha de dados locais do bloco chamado)
Ponteiro 48-bit (Tipo de Dado POINTER) Tipo de dado próprio para passagem de parâmetros para blocos (FBs e FCs) Contém, em adição ao ponteiro 32-bit de área-cruzada, a declaração do
número do DB
Ponteiro 80-bit (Tipo de Dado ANY) Tipo de dado próprio para passagem de parâmetros para blocos (FBs e FCs) Contém, em adição ao ponteiro 32-bit de área-cruzada, a declaração do
número do DB, tipo de dado e fator de repetição
Date: 13/04/23File: PRO2_04P.18
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Estrutura e Atributos de um Dado Tipo "POINTER”
Byte n
Byte n+2
Byte n+4
Byte n+1
Byte n+3
Byte n+5
DB Número (INT)
1 O O O _ O R R R _ O O O O _ O B B B (ponteiro 32-bit de
B B B B _ B B B B _ B B B B _ B X X XÁ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")
Estrutura do tipo de dado: "POINTER“ (PONTEIRO)
Date: 13/04/23File: PRO2_04P.19
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Configuração de um dado tipo "ANY”
Ponteiro "ANY" para Tipos de Dados
Byte n
Byte n+2
Byte n+4 DB Número
1 O O O _ O R R R _ O O O O _ O B B B
B B B B _ B B B B _ B B B B _ B X X X
16#10 Tipo de Dado
Fator de repetição
Byte n+6
Byte n+8
Ponteiro "ANY" para Tipos de Parâmetros
Byte n
Byte n+2
Byte n+4 16#0000
Número do Temporizador, Contador ou Bloco
16#10 Tipo de Parâmetro
16#0001
Byte n+6
Byte n+8
Tipo de Dado IdentificadorVOID 00BOOL 01BYTE 02CHAR 03WORD 04INT 05DWORD 06DINT 07REAL 08DATE 09TOD 0ATIME 0BS5TIME 0CDT 0ESTRING 13
Tipo Parâmetro IdentificadorBLOCK_FB 17BLOCK_FC 18BLOCK_DB 19BLOCK_SDB 1ACOUNTER 1CTIMER 1D
16#0000
Date: 13/04/23File: PRO2_04P.20
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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.0T35 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.
Date: 13/04/23File: PRO2_04P.21
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
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#01T LB [AR1,P#0.0] // e transfere para Offset 0L ......
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.
Date: 13/04/23File: PRO2_04P.22
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Avaliando um ponteiro tipo "ANY”
Address Declaration Name Type Initial Value Comment0.0 in Par_Pointer ANY
outin_out
0.0 temp Data_type BYTE2.0 temp WF WORD4.0 temp DB_Nr WORD6.0 temp Area_Pointer DWORD
Network 1: Estabelecimento do tipo de dado, fator de repetição, número do DB e ponteiro de área
L P##Par_Pointer // Carrega endereço do #Pointer no ACCU1LAR1 // e daqui carrega no AR1;L B [AR1,P#1.0] // Cria o tipo de dado do ponteiroT #Data_type // e carrega em variável temporáriaL W [AR1,P#2.0] // Cria o fator de repetiçãoT WF // e carrega em variável temporáriaL W [AR1,P#4.0] // Cria o número do DBT #DB_Nr // e carrega em variável temporária
L D [AR1,P#6.0] // Cria o ponteiro de áreaT #Area_Pointer // e carrega em variável temporária
Date: 13/04/23File: PRO2_04P.23
SIMATIC S7Siemens AG 1998. All rights reserved.
Conhecimento em AutomaçãoTraining Center
Exercício 4.3: Função para calcular valor da soma e média
FC 43EN ENO
Measured_values Sum
Mean_value
Decl. Name Typin Measured_values ANYout Sum REALout Mean_value REAL
DB43
103.45
2086.5
1.7895
....
....
P#DB43.DBX0.0 REAL 8
Name TypeSTRUCT
Measurement ARRAY[1..8]REALEND_STRUCT