Pagina 1 di 2

loop-array

Inviato: 17 gen 2008, 20:54
da dep
salde
già il titolo del topic preannuncia a che cosa mi riferisco...comunque leggendo il manuale s7-200 con riferimento alle operazioni di controllo del programma mi sono imbattuto in questo termine "loop" :?: :!: non capisco che cosa si voglia intendere e per di più il manuale non diece niente a riguardo..ne parla ma io non ci sto capendo una cicca :cry: :oops: oppure cosa significa array?
ho provato a tradurli pensando di arrivare ad una soluzione ma non neanhe esiste una corrispondenza con l'italiano. :(
comunque per esempio nell funzione For Next si parla di delineazione di loop che viene ripetuto per un numero di volte specificato...ma se non riesco a comprendere questo termine come posso andare avanti... :roll:
comunque se c'è qualcuno disposto ad intervenire ](*,) grazie tanto
ciao

Re: loop-array

Inviato: 18 gen 2008, 11:06
da Ivan_Iamoni
Ciao Dep,
"loop" :?: :!: non capisco che cosa si voglia intendere e per di più il manuale non diece niente a riguardo..ne parla ma io

Appunto come dici, il manuale lo spiega, solo che forse il tuo livello di apprendimento non e' ancora arrivato a quel punto.
Vi sono set di istruzioni che impari ad usare nel tempo e molte che magari non userai mai.
Dal punto di vista della didattica, il PLC non lo si impara in uno o due corsi, ma servono anni di esperienza diretta, per una formazione discreta.
Tornando al nocciolo della domanda, dall'Inglese, Loop significa "nodo scorsoio" , chiaramente non ti aiuta a capire la funzione.In pratica, creando un LOOP , si fa' in modo che l'elaborazione del programma , si blocchi in un determinato punto chiamato NEXT , salta indietro a ritroso e ricomincia dall'istruzione FOR , per poi fermarsi ancora al NEXT e via cosi' , per un numero di volte determinato.
Ecco un esempio di applicazione del loop attraverso FOR & NEXT.
Prima parte , dichiaro che l'istruzione FOR , esegue 10 loop "VW10, 0, 10" , partendo da zero , "VW10, 0, 10",
ed il valore di conteggio reale del numero volte e' contenuto nella word VW10 "VW10, 0, 10"

Codice: Seleziona tutto

Network 1 // Titolo del segmento
// Presparazione del loop
LD     SM0.0 //special flag always ON
FOR    VW10, 0, 10 //Impostazione istruzione FOR

Seconda parte, e' il codice da eseguire N.volte, ci puoi mettere quello che ti pare, ma nel mio esempio deve per forza contenere , l'aggiornamento della variabile VW10 , a cui sommo 1 (incermento a passi di 1)ogni scansione del loop.

Codice: Seleziona tutto

LD     SM0.0
+I     1, VW10

Terza ed ultima parte, l'etichetta NEXT , a questo punto il programma si arresta e torna indietro alla prima parte del codice, nel punto "FOR VW10, 0, 10" ed esegue tanti salti sino a quando la condizione non e' soddisfatta , cioe' 10.
Alla fine , cioe' alla undicesima lettura (10+1)di LOOP, la condizione e' soddisfatta, ed il programma salta direttamente a NEXT e prosegue oltre.

Codice: Seleziona tutto

NEXT


Queste operazioni, vanno usate con cautela, perche' nel caso non raro , che la condizione per uscire dal loop, sia troppo lunga in termini di tempo di esecuzione del programma o non sia mai soddisfatta (loop infinito), rischi di fare intervenire il "watch dog" della CPU che andra' irrimediabilmente in stop.
Per gli array , apriro' un nuovo topic, e' una cosa ancora piu' complessa.
Ciao
Ivan

Re: loop-array

Inviato: 18 gen 2008, 11:38
da dep
ciao ivan
Dal punto di vista della didattica, il PLC non lo si impara in uno o due corsi, ma servono anni di esperienza diretta, per una formazione discreta.

non ti mica torto,sai faccio un po' di domandine del genere in quanto la prossima settimana vado in un'azienda a fare uno stage tecnico e di conseguenza sto cercando di assimilare un paio di cosette...ed inoltre mi rendo conto che un conto è leggere il manuale e non applicarsi sulla programmazione di macchine,automatismi ed ecc...viceversa è molto meglio,sbagliando si impara ecc ecc...
comunque ritornando al discorso for next adesso ci sono!visto che mi dai la tua disponibilità vorrei chiederti qualcos'altro quindi pro un nuovo topic magari.
grazie mille...meno male che ci sei tu sempre presente :o (sono ruffiano? :oops: )

Re: loop-array

Inviato: 18 gen 2008, 15:32
da Ivan_Iamoni
Ottimo Dep ,
Vedo che la prendi con il giusto spirito, purtroppo l'esperienza serve.
Passiamo al secondo punto , gli array.
Array sono un insieme definito di dati, nel PLC fanno parte della famiglia dei dati composti.
Prima chiariamo la differenza tra dati semplici e composti dei contollori a logica programmabile.
I dati semplici sono , il Bit , il Byte , la word , la doppia word,char, ecc..
I dati composti sono :
Stringa di caratteri (tipo di dati STRING): una stringa di caratteri definisce un campo unidimensionale con
un massimo di 254 caratteri (tipo di dati CHAR).
Array (tipo di dato ARRAY): un array combina un gruppo di un tipo di dati in un'unità (sottoinsieme della struttura).
Struttura (tipo di dato STRUCT): una struttura combina diversi tipi di dati in un'unità (insieme di array).
UDT , insieme di dati definiti dall'utente che possono assumere anche grandi dimensioni.
Nello specifico dell'array, possiamo dire che e' un'insieme di dati eterogeneo, (dello stesso tipo di dichiarazione), raggruppati.
Quando si definisce un'array, nel blocco dati, bisogna specificare un nome , e la dimensione, che deve essere minmo 2 massimo 6.
Esempio di nome array scritto nell'indirzzo zero di una ipotetica DB1 Nome:Temperatura [1..2]INT
Questo array e' bidimensionale , si chiama temperatura ed e' composto solo da numeri interi , nella nostra DB sara':
DBW0=Temperatura_1
DBW2=Temperatura_2
L'uso degli array e delle STRUCT , e' necessario, quando si trattano con il plc molti dati o ricette , ad esempio , la gestione di un lettore di codice a barre , dove posso associare ad ogni codice, la sigla prodotto+codice+nr.seriale , quindi gestendo questo gruppo di dati come array, la sua memorizzazione, interpretazione, modifica, e' piu' immediatae comporta un minore uso di istruzioni nel programma.
Ciao
Ivan

Re: loop-array

Inviato: 18 gen 2008, 16:54
da dep
Ottimo Dep ,
Vedo che la prendi con il giusto spirito, purtroppo l'esperienza serve.

caro ivan ti ringrazio molto per il contributo tecnico che mi stai offrendo...sai se ho deciso di fare questa scelta lavorativa e perché mi piace,ci metterò impegno consapevole del fatto che agli inizi si mangeranno bocconi amari...però confido in soddisfazioni lavorative in un prossimo futuro...
comunque
Prima chiariamo la differenza tra dati semplici e composti dei contollori a logica programmabile.
I dati semplici sono , il Bit , il Byte , la word , la doppia word,char, ecc..
I dati composti sono :
Stringa di caratteri (tipo di dati STRING): una stringa di caratteri definisce un campo unidimensionale con
un massimo di 254 caratteri (tipo di dati CHAR).
Array (tipo di dato ARRAY): un array combina un gruppo di un tipo di dati in un'unità (sottoinsieme della struttura).
Struttura (tipo di dato STRUCT): una struttura combina diversi tipi di dati in un'unità (insieme di array).
UDT , insieme di dati definiti dall'utente che possono assumere anche grandi dimensioni.

i dati semplici li conosco più o meno...gli altri neanche li conoscevo..meglio ancora..


poi quando dici:
si definisce un'array, nel blocco dati, bisogna specificare un nome , e la dimensione, che deve essere minmo 2 massimo 6.
Esempio di nome array scritto nell'indirzzo zero di una ipotetica DB1 Nome:Temperatura [1..2]INT
Questo array e' bidimensionale , si chiama temperatura ed e' composto solo da numeri interi , nella nostra DB sara':
DBW0=Temperatura_1
DBW2=Temperatura_2


quindi se ho compreso bene(me lo auguro)...l'array è un gruppo di dati facenti parte di una stessa locazione di memoria ad esempio "MD100" suddivisa negli indirizzi MB100-MB101-MB102-MB103 che contengono i vari dati del blocco che a sua volta saranno trasferiti nella locazione di memoria DB1?

Re: loop-array

Inviato: 18 gen 2008, 20:56
da Ivan_Iamoni
Ciao Dep,
i dati semplici li conosco più o meno...gli altri neanche li conoscevo..meglio ancora..

Ti suggerisco di approfondire molto la gestione dei formati e dei dati di tipo semplice, prima di avventurarti in cose che rischiano solo di confonderti le idee, tanto per fare un confronto con la matematica, non e' per niente utile farsi venire il mal di testa cercando di risolvere le equazioni di secondo grado , se ancora non hai imparato qulle di primo.
quindi se ho compreso bene(me lo auguro)...l'array è un gruppo di dati facenti parte di una stessa locazione di memoria

Diciamo che e' un raggruppamento di dati , con un nome ed un indice ,stop.

ad esempio "MD100" suddivisa negli indirizzi MB100-MB101-MB102-MB103 che contengono i vari dati del blocco che a sua volta saranno trasferiti nella locazione di memoria DB1?

No , non e' corretto, per prima cosa un'array di dati non comprende gli operandi con identificatore M come merker, I, come imput, A come Output.
Seconda cosa questi operandi non rientrano nella gestione dati della Data Block ,alias DB.

consapevole del fatto che agli inizi si mangeranno bocconi amari

E' vero, purtroppo, e' cosi per tutti.
però confido in soddisfazioni lavorative in un prossimo futuro...comunque

Giusto, mai arrendersi.
Ciao
Ivan

Re: loop-array

Inviato: 18 gen 2008, 21:06
da dep
Ti suggerisco di approfondire molto la gestione dei formati e dei dati di tipo semplice, prima di avventurarti in cose che rischiano solo di confonderti le idee, tanto per fare un confronto con la matematica, non e' per niente utile farsi venire il mal di testa cercando di risolvere le equazioni di secondo grado , se ancora non hai imparato qulle di primo.

giusto..

ok farò come dici..
ciao ivan

Re: loop-array

Inviato: 18 gen 2008, 21:34
da dep
dimendicavo ivan in che modo potrei approfondire il discorso relativo la gestione dei dati?conoscendo bene il formato dei dati quali byte,word,int-dint,dword?
bit + significativo e bit - significativo?
nel manuale c'è qualche riferimento?
ciao
dep

Re: loop-array

Inviato: 19 gen 2008, 17:55
da Ivan_Iamoni
Ciao dep,
Lesson three... :D ....
Non ho intenzione di scrivere in un topic con cose che riempirebbero tranquillamente un foglio A4 o forse 2 .
Ho un vecchio documento in Inglese , che realizzai per tenere un corso ai miei colleghi Cinesi sul PLC.
Estraggo la parte delle aree dati e poi, lo traduco e te lo allego, domani.
Ciao
Ivan.

Re: loop-array

Inviato: 19 gen 2008, 18:26
da dep
Ciao dep,
Lesson three... :D ....

all right :lol:
ok ivan grazie