Vai al contenuto
PLC Forum


Indicizzare Un Array - puntatori


Messaggi consigliati

Inserito:

Supponi di aver dichiarato all'interno della tua FC o FB un array di 100 dati interi :

TEMPERATURA [1..100] of INT

Vorrei "PUNTARE" la temperatura , cioè fare un indirizzamento del tipo

L MD10 //Da HMI metto su MD10 la temperatura che devo leggere

L TEMPERATURE[MD10]

So che così non funziona , ma ho provato anche puntandolo come punto i db normali :

L P#0.0

T MD10

L P#4.0

+d

T MD10

L TEMPERATURE[MD10] <- errore

Grazie


Inserita:

Prova così:

//(Nella seguente riga non sono tanto sicuro della sintassi, non posso provare)
L P#TEMPERATURA[1] 

//Imposta AR1 con indirizzo del primo valore dell’array
LAR1       

//Legge indice 
L   MD10 

//Moltiplica per 8 per rendere compatibile con puntatore any, poi
//moltiplica per 2 perché l’array è composto da INT che usa 2 bytes
//(quindi moltiplica *16)
L   16     
*D     

//Incrementa AR1 con il risultato della moltiplicazione
+AR1

//Ora AR1 punta a TEMPERATURA[MD10]
L     W [AR1,P#0.0]

Inserita:

Ciao Jump Man , intanto grazie della risposta .

Sembra funzionare tutto , tranne la prima riga che dovrebbe darmi l'indirizzo di partenza dell'array .

L P#TEMPERATURA[1]

Si colora di rosso .

Non saprei come ricavare l'indirizzo del primo elemento del vettore ,

non è che mi daresti un'altra dritta ?

:rolleyes: Grazie :rolleyes:

*FeDe*

Inserita:

Ciao..

Una domanda, il l'indirizzo di partenza dell'array nell FB/FC, Supponi di aver dichiarato all'interno della tua FC o FB un array di 100 dati interi dove? in un IN, OUT, INOUT, o come TEMP, Stat??

se il puntatore é sul TEMP, per essempio, perche non punti sul temporale cosi:

L  LW 0 // Essempio area memoria Temporale che comincia su L 0.0 fino a L 1.7 (Locale)
LAR1
Puó anche fare questo:
L P##TEMPERATURA // anche stai apuntando su 0.0 sempre che Temperatura é in Local 0
LAR1 // caricato al registro di indirizzi come 0.0

Guarda questo essempio, piú ilustrativo:

Inserita:

OK, così funziona come volevo !!!

:lol: Accidenti, sono cose belle toste queste :lol:

Grazie mille

  • 6 months later...
Inserita:

....mi permetto di aggiungere che molto spesso per moltiplicare per 16 è molto più comodo ed elegante fare un bel "SLD 4" !!! ;)

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