Vai al contenuto
PLC Forum


Array E Pointers


Messaggi consigliati

Inserito:

Ciao a tutti,

ho una domanda riguardante l'indirizzamento con pointer in un DB.

Ho un DB che e' formato da un array unidimensionale, da zero a 99 (100 elementi). Ogni elemento e' constituito da 2 DINT, 1 REAL e un DWORD.

Tramite indirizzamento diretto posso scrivere:

L "DB100".Array[25].RealValue

Questo con la rappresentazione simbolica (DB100 e' il nome di DB100, Array e' il nome dell' array e RealValue e' il valore REAL dell'elemento 25).

Ora la domanda:

E' possibile sostituire il numero nelle parentesi quadre, in questo caso 25, con una variabile?

Se si, potete fare un piccolo esempio?


Inserita:

Puoi / sai usare SCL ?

Con quel linguaggio è molto semplice...

in AWL, invece...

:huh::huh:

Inserita:

Allora, più semplciemnte, potresti aggirare il problema :

tu hai una struttura di lunghezza fissa "2 DINT, 1 REAL e un DWORD" = 16 byte e il dato che ti serve è posizionato a partire dal 9° byte di ciascuna struttura.

Se, per esempio, ti interessa leggere il 25° valore REAL significa che vuoi leggere il dato che si trova all'indirizzo DB100.DBD392

dove 392 che non è altro che il risultato di (25-1) * 16 + 8,

ovvero la variabile a 32 bit che si trova dopo le prime 24 strutture (25-1)*16, dopo i primi due DINT della venticinquesima.

Il programma verrebbe all'incirca così :

:lol::lol::lol:

// Apertura DB

AUF DB 100

// Calcolo dell'offset della variabile cercata dove MW100, nel tuo caso, = 25

L MW 100

L 1

-I

L 16

*I

L 8

+I

// predisposizione del registro di indirizzo

SLW 5

LAR1

// caricamento della variabile cercata

L DBD [AR1,P#0.0]

// appoggio dove vuoi tu...

T MD 100

Ciao ciao :D

Inserita:

L' SCL è un concetto completamente diverso dall' AWL , In SCL non ti devi preoccupare degli accumulatori , non esiste in SCL un istruzione L db100.dbd100.

Alle variabili devi assegnare un valore , o utilizzarle per fare un calcolo ma per te gli accumulatori in SCL non esistono.

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...