Vai al contenuto
PLC Forum


Indirizzamento Indiretto Array


ENZO_72

Messaggi consigliati

Gentili amici del forum,

sono alle prese con un 1200, ed avrei la necessità di indirizzare indirettamente gli elementi array di una db.

Mi spiego ho una db (my_db) con 10 elementi array di tipo int [1..10] , ed una variabile merker di nome index di tipo int.

Una qualsiasi operzione es. move con sintassi my_db.elemento[1] non da errori, però se scrivo my_db.elemento["index"] mi dice che è un errore e la marca di rosso.

Premetto che da l'. di linea si evince che tale sintassi è ammessa addirittura per array bidimensionali è possibilile scrivere ["i","j"].

Non riesco a capire dove sbaglio, la cosa deve essere possibile senza l'utilizzo delle funzioni FieldRead e FieldWrite.

Enzo

Link al commento
Condividi su altri siti


In realtà l'indice dell'array con l'istruzione FieldWrite è di tipo Dint.

Ma in ogni caso, ho fatto anche io la prova a muovere un valore in un array senza l'utilizzo di FieldWrite e sostituendo l'indice con un indirizzamento simbolico sia di tipo int che dint e confermo che da errore.

Effettivamente nelmanuale è indicato che può essere utilizzato l'indirizzamento simbolico come indice.

"<Blocco dati>".<ARRAY>["i"] // ARRAY unidimensionale

"<Blocco dati>".<ARRAY>["i"].a // ARRAY of STRUCT unidimensionale

"<Blocco dati>".<ARRAY>["i", "j"] // ARRAY multidimensionale

"<Blocco dati>".<ARRAY>["i", "j"].a // ARRAY of STRUCT multidimensionale

ARRAY

i, j =Variabili PLC del tipo di dati "numero intero" che vengono utilizzate come puntatore

Modificato: da baltimora
Link al commento
Condividi su altri siti

Io ho riprovato, con un array a 4 dimensioni, utilizzando come indice sia una MW dichiarata come INT, sia variabili TEMP sempre di tipo INT.

Ho provato sia in KOP (con un MOVE) che in SCL, e va sempre bene.

La versione di TIA Portal che sto usando è la V11 SP2 Update 5.

Link al commento
Condividi su altri siti

Ho rifatto la prova, creando un progetto partendo da zero ed ora funziona.

Ieri sera avevo provato su un progetto già aperto su cui stavo lavorando e mi generava errore?????? :o

Modificato: da baltimora
Link al commento
Condividi su altri siti

Be grazie ai vostri post ho risolto;

Seguendo quanto detto da baltimora, ho aperto un nuovo progetto creato le stesse condizioni e tutto ha funzionato senza far nulla :toobad:

Grazie a tutti

Link al commento
Condividi su altri siti

Io però non ero partito da un progetto nuovo.

Non so se sia quello il motivo.

Neanche io all'inizio ero partito da un progetto nuovo, ho fatto la prova su uno che avevo già aperto ma non ha funzionato. Mi dava errore,

Poi dopo la tua risposta

Io ho riprovato, con un array a 4 dimensioni, utilizzando come indice sia una MW dichiarata come INT, sia variabili TEMP sempre di tipo INT.

Ho provato sia in KOP (con un MOVE) che in SCL, e va sempre bene.

La versione di TIA Portal che sto usando è la V11 SP2 Update 5.

Ho verificato la versione del tia ed era uguale alla tua.

All'ora ho deciso di provavre con un nuovo progetto ed ha funzionato.

I misteri dell'informatica.....anzi no della siemens....

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