Vai al contenuto
PLC Forum


Utilizzo Array - esempio banale


samm

Messaggi consigliati

Ciao a tutti, qualcuno potrebbe farmi un piccolo esempio banale di utilizzo di utilizzo di un array bdimensionale, io ci sto provando , ma gia nella dichiarazione delle variabili del fc nella dichiarazione tipo di dati "Array [1..3,1..3] of <int>" diventa rosso

eppure ho seguito punto per punto quello che dice l'. s7.

Link al commento
Condividi su altri siti


Grazie del tuo interessamneto cisio, ho fatto come mi hai suggerito, sono riuscito a dichiararlo in modo corretto ; il problema pero' e' ancora aperto , in quanto non riesco a trovare da nessuna parte un esempio che mi fa capire il suo metodo di funzionamento ; in pratica una volta caricato l'array tramite : " L #array[2, 2]" , dell'array bidimensionale [1..3,1..3] dovrebbe significare che carico i valori che sono presenti nelle posizioni 2 delle due dimensioni , ,prima di questo pero' dovrei inserire dei dati tramite delle dw , oppure inizializzare i valori , questo non lo riesco a fare in quanto se vado in proprieta' variabile dell'array l'inserimento e' inibito.Quello che vorrei fare e' inserire dei valori per poi confrontarli per un riferimento di posizione praticamente un movimento circolare di due assi .

Link al commento
Condividi su altri siti

Non mi sembra che hai le idee molto chiare.

Dunque, le variabili che dichiari all'inizio di un FC sono le variabili LOCALI, non hanno memoria al di fuori del tempo di esecuzione del fc stesso

quando entri nel fc non hanno un valore definito e glielo devi dare tu prima di poterle usare

e queste sono quelle del gruppo TEMP (cioè temporanee)

poi ci sono quelle chiamate IN, OUT, e IN_OUT: tutto ciò che definisci in questi gruppi costituirà l'interfaccia parametri del blocco stesso

in linea teorica penso che si possa definire un array come parametro IN, poi da un altro blocco fare una CALL FCxx passando come parametro un array definito

in un DB (che è il posto giusto dove memorizzarlo), se i due array sono della stessa dimensione te lo ritrovi come dato locale nel fc

ciao

Link al commento
Condividi su altri siti

hai ragione cisio ho molte idee e purtroppo abbastanza confuse,mi capita che se non sbatto la testa su degli esempi mi viene un po' difficile leggere ed imparare al volo, quindi riassumendo quella finestra che sta in alto ad un fc chiamata interfaccia puo essere rappresentata , facendo un paragone con lo step 5 usando gli fb parametrizzati , a parametrizzare lo stesso fc .

Ho fatto come mi hai suggerito ho dichiarato un array bidimensionale come parametro IN "array[1..5,1..5] of int", a questo punto nel ob1 ho richiamato l'fc interessato e tramite la selezione "aggiorna_richiama" mi e' stato inserito "array :=" a questo punto dovrei inserire un operando , le ho provate tutte naturalmente con esito negativo in quando l'iserimento mi diventa sempre rosso,

in definitiva mi manca quest'ultima parte che mi hai suggerito:

in un DB (che è il posto giusto dove memorizzarlo), se i due array sono della stessa dimensione te lo ritrovi come dato locale nel fc

saresti come lo hai gia' fatto gentilmente indicarmi piu' dettagliatamente come proseguire?

Ciao...e Grazie ancora

Link al commento
Condividi su altri siti

io ho provato a definire nel db1 questo:

array_2 ARRAY[1..5,1..5]

INT

al db ho dato il nome simbolico "PROVA"

e quindi nel ob1 ho scritto

CALL FC 1

bid:="PROVA".array_2

dove fc1 ha una definizione array come hai fatto tu con nome simbolico "bid"

e non ho niente di rosso

e tramite la selezione "aggiorna_richiama" mi e' stato inserito "array :="

??? il nome "array" per una variabile non è accettato da step7

ciao

Link al commento
Condividi su altri siti

Come sempre sei stato gentilissimo cisio , penso di essere a un buon punto "grazie a te" per poter proseguire da solo , naturalmente devo approfondire alcune cose che dovrebbero essere scontate per poter fare un discorso di questo genere,non mi resta quindi che inserire i valori delle dw del db1 che rappresentano il campo del'array bidimensionale , cosi poi dovro' puntare a qeste dw per assegnare il loro valore di coordinate per il raggiungimento di posizione , non avendo l'ardware dovro' fare tutto questo con simulatore s7 e protool , ho gia' fatto con il protool una piccola prova di uno spostamento lineare di un oggetto , avviando il simulatore s7 e aprendo il protool in runtime , devo solo studiarmi un metoto per simulare un movimento controllato cioe' come se in realta' avessi un motore ed un encoder che mi rileva istante per istante la sua posizione.

Ciao cisio e Grazie ancora...

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