compag Inserito: 27 agosto 2006 Segnala Share Inserito: 27 agosto 2006 Salve a tutti, ho un po' di esperienza con programmazione Siemens ma sono nuovo di PL7.Ho trovato su un programma di una macchina la seguente scrittura:%MW360[%MW360]=%MW298Come va interpretata?E' giusto dire che la MW360=MW298, ma non capisco il significato dentro la parentesi quadra.Se qualcuno fosse gentile da farmi un esempio.Grazie Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 27 agosto 2006 Segnala Share Inserita: 27 agosto 2006 il valore dentro la parentesi quadra significa che e' l'indice dell'array Se consideri l'area merker word in pl7 come un 'area contigua di word dorvebbe essere cosi .Se %mw360 =100 vuol dire che stai puntanto a %mw460 e quindi %MW460:=%MW298 Cioe ' partendo dalle cose facile mi viene di fare questo ragionamento sempliceA cosa possa servire non lo so , bisognerebbe vedere un po tutto il codice , ma potrebbe anche essere l'offset espresso in numero di word che c'e' tra una colonna e le altre di una tabella . Vedi ri salire con i riferimenti incrociati a dove viene scritta %MW360 e a cosa .Fammi sapere perche sono curioso ciao walter Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 28 agosto 2006 Segnala Share Inserita: 28 agosto 2006 %MW360[%MW360]=%MW298In effetti e' un po' strano...Come ti ha spiegato Walter il contenuto all'interno delle [n] e' l'indice di puntamento.Se tu hai una tabella di word che partono dalla %MW360, tu vai a scrivere nella %MW360+n. Link al commento Condividi su altri siti More sharing options...
compag Inserita: 28 agosto 2006 Autore Segnala Share Inserita: 28 agosto 2006 vi riporto per esteso:FOR %MW360:=1 TO 24 DOIF %MW360[%MW360]=%MW298 THEN EXIT;END_IF;END_FOR;Oppure 'espressione:%MW401:=%MW411[%MW297];Grazie per una risposta Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 28 agosto 2006 Segnala Share Inserita: 28 agosto 2006 %MW401:=%MW411[%MW297];questa espressione e' normale e presenti in tutti i programmi ed in tutti i linguaggi In sostanza vai a pescare l'elemento dell'array con indice %MW297 sarebbe come dire int[100] buffer;int indice;int mia_var;mia_var=buffer[indice]ne piu ne meno !!!!!!!!!!L'esempio di ieri riproposto oggi altro non e' che un iterazione all'interno di un array .Ma ricordati che anche una riga o un insieme di righe , ossia una tabella , altro non e' che un array organizzato in modo tale da renderti l'occhio come se fosse una tabella COn step7 posso creare e dichiarare strutture ed array di strutture (tabelle ) come in C o altri linguaggi evoluti , e puntarci o oraganizzarmi come tale ,ma se nel db guardi il valore assoluto vedrai che altro non e' che un'area di memoria contigua che parte da DBX0.0 fino alla fine della tabellaNon a caso se inserisci una variabile all'interno della struttura dell'array vedrai shiftare tutte variabili assolute .Nel tuo caso premium , l'area di memoria e' sempre uguale ma organizzata in maniera diversa ,e se vuoi creare tabelle devi creare prima le colonne prevedendo una lunghezza tale che non si accavalli alle altre colonne della tabella .Ricordati che anche un file che puo "vedere" con gli occhi in maniera gerarchicamente organizzata altro non e' che un array di byte Metteti in testa questo ed hai capito tutto nel tuo caso puo essere che con un ciclo for venga fatto un controllo a tutti i primi elementi di ogni colonna della tabella , potrebbe essere ciao walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 28 agosto 2006 Segnala Share Inserita: 28 agosto 2006 hai il codice che it dice che la variabile di controllo del loop parte da 1 fino a a 24 prendi un file di excel ed esegui la funzione assegnando i valori da 1 a 24 e li sostituisci alla variabile associata e vedi cosa viene fuori , piu facile di cosi 'Io sono appena rientrato dal lavoro e sono a pezzi , piu tardi te lo faccio io il conticino ciao walterp.s. magari cerca di capire anche quanto valgono e come vengono assegnate le variabile comprese all'interno del loop Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 28 agosto 2006 Segnala Share Inserita: 28 agosto 2006 (modificato) FOR %MW360:=1 TO 24 DOIF %MW360[%MW360]=%MW298 THENEXIT;END_IF;END_FOR;quando %MW360=1 IF %MW361 =% MW298 THENEXIT;quando %MW360=2 IF %MW362 =% MW298 THENEXIT;quando %MW360=3IF %MW363 =% MW298 THENEXIT;e cosi via , allora e' tutto chiaro si tratta di una ricerca .Appena viene trovata una %MW , all'interno dell'intervallo %MW361 - %MW384che vale uguale alla word % MW298 allora si esce dal loop soddisfatti (exit) E' una ricerca all'interno di un array per cercare un valore ed uscire soddisfatti , interrompendo il loop e quindi risparmiando tempo di ciclo .Il fatto che venga usata %MW360 due volte puo essere di comodo oppure puo essere di proposito stato scelto come indice (numero intero ) la prima word dell'array , oppure per risparmiareuna word utilizzandola come varibile locale anche se non lo e' e anche se il premium haun sacco di memorie da utilizzare .altre spiegazioni non ce ne sono , non perderti la testa .A meno che non trovi qualcosa di strano in giro per il codice , ma se %MW360 e' utilizzata solo qua allora non c'e' niente da dire se non quello che ti ho detto sopra .Tante volte capita che si ritengano sempre gli altri programmatori piu bravi di se, soprattuto quando il sw l'hanno fatto loro .Ma poi si scopre che son solo cagate e seghe mentali di qualche programmatore che non aveva niente altro da fere che farsi le seghe al cervello Lascia perdere , e' come ti ho detto io ciao walter Modificato: 28 agosto 2006 da walterword Link al commento Condividi su altri siti More sharing options...
compag Inserita: 28 agosto 2006 Autore Segnala Share Inserita: 28 agosto 2006 Grazie mille Walter, sei stato molto gentile e disponibile.Hai per favore piccoli esempi o progetti per imparare un po' PL7 x versioni 4?Grazie ancoraCompag Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 29 agosto 2006 Segnala Share Inserita: 29 agosto 2006 Sto facendo solo reti di S7-400 da quasi 2 anni e qualche 300.Premium l'ho usato pochissimo 3-4 anni fa e non saprei dove cercare .Comunque ricordati che piu o meno la musica e' quella .Cambiano le interpretazioni grafiche o le sintassi strutturali ma la sostanza e' quella Inizia a farti un po esercizi , magri poniti un target , un virtual progetto e inizia a vedere cosa succede .Con premium e pl7 hai a disposizione un sistema veramente elastico e molto friendly .Leggiti qualche bel manuale e vedrai che nonsara' difficile.L'unica cosa che non ho mai approfondito con pl7 e' la creazione di strutture e array di strutture viste come in step7 .sicuro che si puo fare anche qua un discorso del genere credo con i dfb o qualcosa del genere.Se lavori con %MW affiancati sempre da un file di excel dove tieni tutto sott'occhio , con i simboli ect .La parte piu importante nello sviluppo sw per plc, secondo me , e' capire bene la logica da scrivere , maprima fare una bella e giusta stesura delle aree di memoria Poi se lavori con i simbolici , o anche assoluti , basta fare un bel copia ed incolla e find & replace Per esempio quando hai 20 motori da gestire in egual maniera , fai la logica di uno e poi fai come sopra .E' diverso dal fare una funzione richiamabile 19 volte , con minor spreco di memoria programma utente,ma hai la possibilita' di debuggare meglio e customizzare ogni singolo motore .poi insomma ognuno ha le sue tecniche e considerazioni , devi fare un po di pratica , applicarti e piangere un po poi tutto viene di istinto .Insomma se ti piace non lo troverai pesante o particolarmente difficile .Poi con pl7 puoi anche creare degli scada con tool hmi incorporato ed avere tutti i linguaggi di programmazione , grafset , il , st , ladder ect .ciao walter Link al commento Condividi su altri siti More sharing options...
compag Inserita: 29 agosto 2006 Autore Segnala Share Inserita: 29 agosto 2006 Grazie Walter, della tua esaustiva risposta.Mi dedichero' con più attenzione.Grazie ancora Compag Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 30 agosto 2006 Segnala Share Inserita: 30 agosto 2006 prego Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora