Vai al contenuto
PLC Forum


Valore puntatori


SanGer

Messaggi consigliati

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.

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

Cesare Nicola

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.

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