Vai al contenuto
PLC Forum


Accesso A Db Con Puntatore - Gestione di ARRAY in una DB


Hermes7

Messaggi consigliati

Salve,

ho creato tre DB con 48 Record di interi.

Vorrei poter leggere e scrivere con move o qualsiasi altra funzione, tramite KOP, tramite indici.

Per esempio:

DB (indice_DB).DBW[contatore]

Sapreste dirmi come?!?!?!.

Grazie

Link al commento
Condividi su altri siti


Come esempio, in AWL, quando voglio puntare ed aggiornare un byte di un DB, uso queste istruzioni:

L 10

T P#Puntatore

AUF DB30

LAR1 P#DBX0.0 // Inizio della mia area

L #Puntatore // Numero DBB

SLD3

+AR1

L B#16#0 // Carico il Valore da scrivere

T DBB [AR1,P#.#] // Lo trasferisco nel DBB da aggiornare

In pratica scrivo 0 nel Byte 10 della DB30, il puntatore è il DBB della DB.

Se avessi indicato come inizio della mia area LAR1 P#DBX250.0 avrei scritto 0 nel DBB 260

Magari ci sono istruzioni più eleganti , io utilizzo questo sistema.

Link al commento
Condividi su altri siti

Ciao pelino, il tuo sistema è quello che utilizzo anche io, ed è quello che meglio si presta a "giocare" con i puntatori, però ho una domanda:

forse mi manca qualche info sui puntatori, mi puoi spiegare :

L 10
T P#Puntatore
ho mai visto tale operazione. Io aggiungerei in più che l'istruzione
T DBB [AR1,P#.#] // Lo trasferisco nel DBB da aggiornare
dove P#x.x con x = 0 ovvero P#0.0, la tua istruzione punta al byte del calcolo, se invece vuoi puntare al byte successivo, senza ricalcolare il tutto ti basta fare P#1.0, e vuoi puoi anche puntare hai singoli bit del tuo byte semplicemente con P#0.2 punti al terzo bit del tuo byte.
= DBX [AR1,P#0.2] // Punto al terzo bit
T DBB [AR1,P#1.0] // Punto al byte successivo.

Link al commento
Condividi su altri siti

Per accedere a byte/word/double word byte all'interno di DB indicizzate , senza usare i puntatori si può utilizzare anche questo sistema :

Auf DB (indice_DB)

L DBW[contatore]

'indice_DB' e 'contatore' devono essere delle word.

Se cerchi nel . online si Step7 "Indirizzamento indiretto di memoria" troverai una esaustiva trattazione sui vari tipi di puntamento disponibili con siemens.

Se interessa posso postare un file pdf dove ho raccolto le pagine del . relative ai puntatori. Una piccola raccolta che consulto in caso di dubbi.

Modificato: da aude
Link al commento
Condividi su altri siti

Scusate ma l'istruzione P#Puntatore è assurda e frutto di un errore di battitura ( scusa TravelMan )

è semplicemente:

L 10

T #Puntatore

aude se vuoi postare.......Tutto è utile

Link al commento
Condividi su altri siti

Non ti preoccupare pelino, non devi chiedere scusa.

Siamo qua per confrontare le nostre idee e migliorare la nostra conoscenza.

Link al commento
Condividi su altri siti

In allegato la raccolta di alcune pagine del . in linea di step 7 relativamente alle diverse modalità di puntamento alle aree di memoria.

Le ho unite semplicemnete per facilità di utilizzo nel lavoro quotidiano. Spero possano essere utili.

post-110012-0-43703200-1407223589_thumb.

Link al commento
Condividi su altri siti

Grazie aude, ho scaricato il tuo file, mi sarà molto utile.

( scusa TravelMan ) pensa ho persino sbagliato....................

a digitare il tuo nome utente ( TravelMen ) non era propio giornata.

Ciao a tutti

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...