Vai al contenuto
PLC Forum


Valore puntatori


Messaggi consigliati

Inserito:

Ciao a tutti, mi scuso se ho sbagliato sezione ma non ho trovato quella dell's7-1500. Ho iniziato da poco a programmare in STL e sto iniziando ad usare i puntatori e il loop. 

Ho creato un array e vorrei trasferire ogni dato dell'array nel puntatore successivo attraverso un loop. Credo di aver capito la logica dei puntatori e del loop, ma vorrei sapere se è possibile prendere dal puntatore non il valore dell'offset del puntatore, ma il valore a cui il puntatore si riferisce.

Esempio:

Da un array

Lista[1]= 25 offset 0.0

Lista[2]= 30 offset 2.0

Lista[3]= 35 offset 4.0

 

vorrei caricare in AR1 il puntatore 0.0, e trasferire il valore a cui si riferisce il puntatore (in questo caso 25) e trasferirlo in lista [2] con 

T W [AR1, P#2.0]

Nel trasferimento non ho problemi, nel senso che il dato viene effettivamente trasferito in Lista[2], ma ad essere caricato è l'offset del puntatore (in questo caso 0) e non il valore di Lista[1] (25).

È possibile caricare il dato a cui il puntatore si riferisce, e se sì, come?

Grazie a tutti in anticipo.


Inserita:

Non esiste una sezione 1500, quindi sei nel posto giusto.

 

Ma cosa scrivi prima di T W [AR1, P2.0]?

Comunque, il linguaggio AWL nel TIA è messo un po' in disparte. Sono pochi i compiti che si possono fare solo in AWL.
Prova a guardare il linguaggio strutturato (SCL per Siemens). Questi giochini con gli indici degli array sono facilissimi.

Cesare Nicola
Inserita:

Stati facendo un po' di confusione tra AWL, che come diceva Batta è un po' in disuso con TIA, e SCL, che è il nome che Siemens da' al linguaggio ST. In SCL è semplicissimo. Per esempio:

FOR #Puntatore := 1 TO 100 DO
    IF "DB_allarmi".Allarme[#Puntatore] THEN
        FAI QUALCOSA
     END_IF;
END_FOR;

Qui, per 100 volte, vado a vedere se è a 1 un bit di un array (DB_allarmi".Allarme[]). #Puntatore stabilisce a quale indice dell'array devo puntare. Se il bit corrispondente all'indice/puntatore è a 1, faccio qualcosa, altrimenti no.

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