andreat Inserito: 26 febbraio 2009 Segnala Inserito: 26 febbraio 2009 Buongiorno a tutti,ieri ho deciso di iniziare a programmare in scl ho preso quindi una cpu 314 collegata al pc e scritto rapidamente il programmino che segue:FUNCTION FC10 :INTVAR_INPUTENTRATA:INT;END_VARVAR_OUTPUTUSCITA_MEDIA:REAL;END_VARVARPIPPO: INT ;TOTALE: REAL;END_VAR BEGINFC10:=100;REPEAT PIPPO := PIPPO + 1 ; TOTALE:=(INT_TO_REAL(ENTRATA))+TOTALE; UNTIL PIPPO <= 5000 AND PIPPO >= 0END_REPEAT ; IF PIPPO = 5000 THEN USCITA_MEDIA:=TOTALE/5000.0; TOTALE:=0.0; // Parte istruzioni_IF END_IF;END_FUNCTIONl'ho compilato, richiamato dall'ob1 con l'istruzione call e controllato le variabili assegnate, il programmino dovrebbe essere moooolto semplice (a meno che non abbia scritto delle stupidaggini delle quali non mi sono accorto)il tempo di ciclo malgrado la complessità inesistnte si attesta oltre i 150ms e manda in stop la cpu.collegandomi al plc on-line ho caricato il blocco compilato in awl, il codice che ho trovato è il seguente: SET SAVE = L 6.1 L 100 T #RET_VALM001: L #TEMP2 L 1 +I T #TEMP2 L #IN0 ITD DTR L #TEMP3 +R T #TEMP3 L #TEMP2 L 5000 <=I L #TEMP2 L 0 = L 6.2 >=I U L 6.2 SPBN M001 L #TEMP2 L 5000 ==I SPBN M002 L #TEMP3 L 5.000000e+003 /R T #OUT1 L 0.000000e+000 T #TEMP3M002: CLR U L 6.1 SAVE BE con un primo sguardo ho visto che l'ottimizzazione non è perfetta (considerate M001:).Mi chiedo quindi quali siano i limiti di tale software (versione scl 5.3 sp.5) , se qualcuno è gia incappato in problemi simili e se ci sono dei limiti nell'utilizzo di certe CPUGrazie,qualunque critica o commento sarà ben accetto
Savino Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 (modificato) andreat,Ho simulato con PLCSim una CPU 6ES7 314-1AF11-0AB0 :Richiamo FC10 da OB1ENTRATA = 1USCITA_MEDIA = 13.1072Lo scan cycle time = 11 ms ENTRATA = 10USCITA_MEDIA =131.072Lo scan cycle time = 11 ms ENTRATA = 100USCITA_MEDIA =1310.72Lo scan cycle time = 11 ms Non va in stop.il tempo di ciclo malgrado la complessità inesistnte si attesta oltre i 150ms e manda in stop la cpu.Dunque, non so che CPU stai utilizzando e se hai altri blocchi in run time, ma per default lo scan cycle monitoring time (watchdog) viene impostato a 150msNon vorrei che stai girando sul limite e quindi vai in stop. Modificato: 3 marzo 2009 da Savino
batta Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 Saranno pure istruzioni banali (ci sono comunque anche calcoli in virgola mobile, che richiedono tempi più lunghi), ma sono ripetute 5000 volte!Insomma, ad ogni scansione devi eseguire per 5000 volte quanto segue (cito solo le operazioni principali):- incremento- conversione INT_TO_REAL- somma di valori REAL- comparazione per valore >= 0- comparazione per valore <= 5000Non mi pare sia così poco.Se poi rimani in test all'interno del loop, lo stop è garantito.
andreat Inserita: 3 marzo 2009 Autore Segnala Inserita: 3 marzo 2009 grazie a tutti per le risposte, per Savino: la CPU è una 314 semplice, che funziona da parecchio come banco prova, non mi ha mai dato problemi (penso però sia il momento di fare un upgrade del firmware), in run time non ho null'altro che il programma SCL l'allarme orologio è impostato a 3000ms (tempo limite oltre il quale s7 non mi permette di andare).potrebbe quindi essere la CPU domani la aggiorno e posto i nuovi risultatiPer Batta: i calcoli che vedi li ho riscritti in AWL utilizzando sempre: - incremento- conversione INT_TO_REAL- somma di valori REAL- comparazione per valore >= 0- comparazione per valore <= 5000e il tempo di ciclo si è fermato a 13msNon penso quindi sia un problema per la CPU risolvere questi calcoli ma temo sia una incompatibilità da qualche parte.....Rimane da capire qualeio provo a sotituire il firmaware della cpuBuona giornata a tutti
Savino Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 Che sigla ha la CPU?il tempo di ciclo malgrado la complessità inesistnte si attesta oltre i 150ms e manda in stop la cpu.e il tempo di ciclo si è fermato a 13msScusa non ho capito.Quale e' lo scan cycle time misurato e quello impostato (watchdog) ?Caso mai, hai provato ad aumentare il watchdog?
andreat Inserita: 3 marzo 2009 Autore Segnala Inserita: 3 marzo 2009 con la fc scritta in SCL lo scan cycle time supera i 3000ms (tempo che ho mpostato come limite prima di segnalare l'errore sulla cpu, oltre non posso andare step7 non me lo permette)
Savino Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 con la fc scritta in SCL lo scan cycle time supera i 3000ms Non capisco.Che sigla ha la CPU? ??Ho in casa 2 CPU, una 314 IFM vecchia di 9 anni e una 314C-2ptp che ne avra' 5 anni. Vedo di collegarle e misurare lo scan cycle time... non vorrei che sul PLCSim mi dia dei valori errati Ti faccio sapere dopo.
andreat Inserita: 3 marzo 2009 Autore Segnala Inserita: 3 marzo 2009 grazie, posto nel frattempo la videata dello stato cpu
andreat Inserita: 3 marzo 2009 Autore Segnala Inserita: 3 marzo 2009 speriamo che si veda qualcosa la prima volta non sono riuscito a caricare l'immagine.......troppo grande
Savino Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 andreat,Guardando il tuo grafico ne vedo 300ms e non 3000ms, oppure non ci guardo bene... e' cosi? perche sai, con la eta' la vista non e' piu' la stessa, e allora poco fa mi sono reso conto che mi servono degli occhiali. Poi, ho fatto le prove con CPU reali e l'istoria e' cambiata.Innazitutto, la CPU virtuale del simulatore non prende il watchdog impostato nel properties box scaricato, dopodiche il range per lo scan cycle monitoring impostato dalla barra del menu /box del simulatore sarebbe da 1000 a 60000 ms.Percio le prove fatte ieri col simulatore bisognerebbe lasciarli perdere direi.Comunque, le prove con le CPU reali hanno dato questi resultati:Con 6ES7 314-6BF01-0AB0 / V2.0, sotto i 1400 ms la CPU va in stop.Con 6ES7 314-5AE02-0AB0, sotto i 4000 ms la CPU va in stop.Bisognerebbe dire che lo scan cycle time (Attuale precedente) per entrambi i casi e' molto piccolo, 2-3 ms circa.Ma sarebbe lo scan cycle time, tempo piu lungo a mandare la CPU in stop, sopratutto quando la CPU passa dallo stato stop a run, e poi quando addirittura lo scan cycle time CPU si allunga dovuto alla gestione di qualche altro evento.Poi, la lentezza dell'aggiornamento della finestra per il monitoraggio potrebbe non farti vedere queste allungamento, piuttosto solo quando solo va in stop.
andreat Inserita: 4 marzo 2009 Autore Segnala Inserita: 4 marzo 2009 Scusa Savino per averti fatto dubitare della tua vista l'immagine postata è relativa ad un tempo di 300ms e non 3000 come avevo scritto precedentemente, quando aumento il tempo (fino a 3000ms) le cose cambiano un pò;come dici anche tu niente stop dovuti al tempo di ciclo eccessivo ma comunque prestazioni insufficienti per poter utilizzare la funzione scritta (ci sono problemi di risorse e problemi di ciclo che si esegue in un tempo troppo lungo).Quello che ho notato nell'esecuzione del codice è che tutto si esegue alla perfezione se la variabile pippo non supera il valore 5000, quando si arriva al calcolo dell'uscita_media la cpu rallenta creando i problemi di tempo d'esecuzioneA questo punto mi domando solo una cosa: vale la pena d'investire e sviluppare in scl?Come ho scritto nel primo post sto valutando e cercando d'imparare tale linguaggio poichè mi è stato prospettato un sistema di programmazione più intuitivo e rapido dell'awl guardando però i risulatati ottenuti da un'applicazione facilissima, mi chiedo quali siano i limiti del sistema o gli errori che ho comesso e come rimediare a tali.Ciò che cerco è un consiglio da persone che hanno più esperienza di me con tale programma.grazie a tutti
Savino Inserita: 4 marzo 2009 Segnala Inserita: 4 marzo 2009 (modificato) Scusa Savino per averti fatto dubitare della tua vistaCiao andreat,No, apparte la battuta me ne servono propio sai Quello che ho notato nell'esecuzione del codice è che tutto si esegue alla perfezione se la variabile pippo non supera il valore 5000, quando si arriva al calcolo dell'uscita_media la cpu rallenta creando i problemi di tempo d'esecuzioneQuesto e' vero, l'ho apprezzato anch'io. A questo punto mi domando solo una cosa: vale la pena d'investire e sviluppare in scl?Come ho scritto nel primo post sto valutando e cercando d'imparare tale linguaggio poichè mi è stato prospettato un sistema di programmazione più intuitivo e rapido dell'awl guardando però i risulatati ottenuti da un'applicazione facilissima, mi chiedo quali siano i limiti del sistema o gli errori che ho comesso e come rimediare a tali.Ciò che cerco è un consiglio da persone che hanno più esperienza di me con tale programma.Guarda, il SCL non sarebbe piu veloce dal AWL, se non altro che una sintax strutturata e forma diversa (Structured Control Language). Poi il fatto e' che con certe operazioni complesse ci vogliono dei processori molto veloci, niente da fare.Poi con la possibilita di scrivere codice in SCL, anche del banale codice, ti consentirebbe di organizzare il codice sorgente in modo di renderlo di qualche modo non troppo standard per tutti, poiche e' un codice compilato.Io ne conosco molte aziende che scrivono tutto il codice in SCL, anche delle operazioni semplici semplici, solo per mantenere un determinato standard. Questo codice si renderebbe molto utile per delle operazioni di indirizzamento indiretto ad esempio. Modificato: 4 marzo 2009 da Savino
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