nicola.gigante Inserito: 24 maggio 2008 Segnala Inserito: 24 maggio 2008 Buongiorno,Qualcuno sa dirmi come leggere il tempo di ciclo dell'S7?Il valore in ms dell'OB1 non va bene, è un valore troppo approssimato.Graziesaluti
Oracolo00 Inserita: 24 maggio 2008 Segnala Inserita: 24 maggio 2008 Forse ti può essere utile l'sfc64, ti restituisce il tempo di sistema, con la differenza tra i valori di due cicli hai la durata del tempo di ciclo.Per quanto ho visto però i risultati coincidono con quelli della variabile dell'OB1.
batta Inserita: 26 maggio 2008 Segnala Inserita: 26 maggio 2008 Il valore in ms dell'OB1 non va bene, è un valore troppo approssimato.Il valore in OB1 è in millisecondi. Cosa vorresti di più?Non credo che la cpu ti possa fornire misure più precise del tempo di scansione. Il millisecondo è l'unità di tempo più piccola che riesce a gestire.Una domanda: per quale scopo avresti bisogno di una misura più accurata?
nicola.gigante Inserita: 26 maggio 2008 Autore Segnala Inserita: 26 maggio 2008 Considera che tutto è sempre rapportato a quello che fai, poi, dipende da quello che vuoi ottenere.Se prendiamo altri Micro, la risoluzione del tempo di scan normalmente è data in microsecondi.Un'applicazione stupida: prova a fare una rampa, imposta gli step utilizzando lo scan time dell' OB1 e vedi cosa ottieni.Su una rampa di circa 5 secondi, otterrai una esecuzione di 5.1 / 5.2 secondi. Uno/Due decimi in 5 secondi sono una eternità.Il tempo di scan dell'OB1 è dato arrotondando al valore all'intero successivo. (verificato facendo due calcoli).PS: se utilizzi funzioni spazio/tempo con velocità che vanno dai 20 ai 120 metri al secondo vedi com'è importante sapere il tempo effettivo che trascorre.Ciao
Savino Inserita: 26 maggio 2008 Segnala Inserita: 26 maggio 2008 Se prendiamo altri Micro, la risoluzione del tempo di scan normalmente è data in microsecondi. Dunque, in sistemi PLC, come ben ha detto batta, il millisecondo è l'unità di tempo più piccola che riesce a gestire.
nicola.gigante Inserita: 26 maggio 2008 Autore Segnala Inserita: 26 maggio 2008 In realtà il Siemens è catalogato come un micro.L' S7 gestisce anche il tempo in microsecondi, come si evince dal blocco;"Rilevamento del tempo di esecuzione del programma OB con l'SFC 78 "OB_RT""Esprime i tempi in microsecondi, ma sinceramente non ho capito bene come utilizzarlo.Qualcuno potrebbe darmi una mano?Ho devo convincermi ad abbandonare completamente Siemens per applicazioni diverse da gestione di illuminazione o avvio motori e pompe?Ciao
batta Inserita: 26 maggio 2008 Segnala Inserita: 26 maggio 2008 Se il tuo scopo è ottenere rampe precise non ti devi appoggiare al tempo di esecuzione dell'OB1: usa OB35. Se lo imposti a 10ms, puoi stare sicuro che viene eseguito ogni 10ms (salvo casi particolari).La tua rampa di 5 secondi sarà fatta in 500 gradini e durerà esattamente 5 secondi.Se gradini ogni 10ms sono ancora troppo ampi, significa che ti conviene prendere in seria considerazione una scheda dedicata (posizionamento o altro, secondo quello che devi realizzare), piuttosto che gestire il tutto da normale programma plc.
kamikaze Inserita: 26 maggio 2008 Segnala Inserita: 26 maggio 2008 nicola.giganteTutti i PLC , sono uguali, nel senso che sono vittime delle stesse malattie.Il tempo ciclo di un PLC è estrememente raro che restituisca un valore costante , è influenzato dal "flusso di corrente" del programma, che se alcune istruzioni, aumenta, in caso contrario assumono valori di esecuzione minimi arbitrari, quindi se il programma contiene anche una base di logica a contatti o operazioni di salto condizionato, non sarà mai costante , spero non sia questo ciò che ti aspetti.Il valore in ms dell'OB1 non va bene, è un valore troppo approssimato.E' vero, ma in ogni caso fosse disponibile in anche microsecondi , non avresti di certo, la precisone unitaria. Le variabili di OB1 restituiscono il tempo massimo, minimo e medio , in funzione di tali variabili puoi fare dei calcoli approssimativi.Per una esecuzione ciclica "perfetta" , notare il virgolettato , fai tesoro del consiglio di BATTA.
nicola.gigante Inserita: 26 maggio 2008 Autore Segnala Inserita: 26 maggio 2008 Non devo fare rampe, il mio era un esempio.E' chiaro che il tempo di ciclo può variare, per questo il sistema dovrebbe restituire ogni volta il tempo di ciclo precedente.La precisione del microsecondo sarebbe più che sufficente per la maggior pate delle applicazioni, così come utilizzato per altre macchine.Per quanto riguarda l'utilizzo di schede dedicate, non credo sia il caso, anche perchè farei prima a cambiare PLC.Siemens non ha un bel sistema di gestione ADD-on. E' davvero troppo tedesco per tante cose, ma quasi "napoletano" per tante altre.Comunque grazie.
Savino Inserita: 26 maggio 2008 Segnala Inserita: 26 maggio 2008 E' vero, ma in ogni caso fosse disponibile in anche microsecondi , non avresti di certo, la precisone unitaria In PLC non c'e' accesso al monitoraggio in microsecondi.Siemens non ha un bel sistema di gestione ADD-on. Cosa vuoi dire? Esempio?
nicola.gigante Inserita: 26 maggio 2008 Autore Segnala Inserita: 26 maggio 2008 come detto prima."Rilevamento del tempo di esecuzione del programma OB con l'SFC 78 "OB_RT""Esprime i tempi in microsecondi, ma sinceramente non ho capito bene come utilizzarlo.Per quanto riguarda gli ADD-on, ormai tanti sistemi quasi hanno un plug and play, con siemens sono sempre necessarie infinite configurazioni.Comunque non è questo il senso della mia discussione.La mia richiesta specifica è sul tempo di ciclo del programma.Vorrei restare in argomento. Mai nessuno ha avuto la necessità di utilizzare questa informazione? Per esempio Una integrazione di velocità come la fate normalmente?Grazie
batta Inserita: 27 maggio 2008 Segnala Inserita: 27 maggio 2008 Per una integrazione di velocità, e per tutti i casi in cui c'è bisogno di esecuzione ad intervalli regolari il più precisi possibile, come già detto, utilizzo OB35. E' fatto apposta...Per tutti gli altri utilizzi il valore restituito in OB1 del tempo dell'ultimo ciclo per me è sempre stato più che sufficiente. A me non risulta che il dato sia sempre approssimato per eccesso.Quando avrò tempo mi riprometto di fare dei test specifici in proposito. Già in passato mi è capitato però di cronometrare tempi misurati tramite il tempo di scansione di OB1 e non ho mai riscontrato discordanze.E poi, se fai girare un programma vuoto capita anche di leggere OB1_PREV_CYCLE = 0. Se il valore fosse sempre approssimato per eccesso non potrebbe mai essere inferiore a 1.Le variabili di OB1 restituiscono il tempo massimo, minimo e medioOB1_PREV_CYCLE restituisce il tempo dell'ultimo ciclo, non il tempo medio.
Livio Orsini Inserita: 27 maggio 2008 Segnala Inserita: 27 maggio 2008 Se si vuole conoscere "esattamente" il tempo di ciclo lo si deve misurare. Il metodo è abbastanza semplice. Basta disporre di un'usciata allo stato solido. Ad ogni ciclo si scrive direttamente l'uscita negando lo stato precedente. Si può ritenere che il ritardo fisico dell'uscita sia pressochè costante, quindi misurando i tempi di "1" e "0" dell'onda risultante si ottiene una misura quasi esatta del tmepo di ciclo.
kamikaze Inserita: 27 maggio 2008 Segnala Inserita: 27 maggio 2008 OB1_PREV_CYCLE restituisce il tempo dell'ultimo ciclo, non il tempo medio.E' vero chiedo scusa dell'errata informazione.CiaoIvan
nicola.gigante Inserita: 27 maggio 2008 Autore Segnala Inserita: 27 maggio 2008 Ti ringrazio Livio, dato che con il Siemens non sono una cima, mi faresti un esempio per ottenere il tempo di ciclo in microsecondi utilizzando il tuo sistema.Ti ringrazio anticipatamente.
Livio Orsini Inserita: 27 maggio 2008 Segnala Inserita: 27 maggio 2008 (modificato) Non so cosa ti serva. Il tempo lo misuri con un oscilloscopio di buona qualità. Le istruzioni sono solo la scrittura diretta e la negazione dello stato. In pratica leggi diretamente la q di uscita, la neghi e la riscrivi diretamente: 3 istruzioni. Le metti in OB1 alla fine, o in mezzo, o all'inizio basta che sia una posizione che ripeta ad ogni scansione. Io, quando ne ho necessità, uso un'analogica; scrivo una volta 0 e la volta seguente 3FFFh poi eseguo la PAW. C'è il ritardo del tempo di set up del D/A C, ma è praticamente costante. Modificato: 27 maggio 2008 da Livio Orsini
batta Inserita: 27 maggio 2008 Segnala Inserita: 27 maggio 2008 Se mi posso permettere,vorresti spiegare a cosa ti serve una misura tanto precisa?Non riesco a capire quale sia il senso di voler misurare il tempo di scansione in microsecondi.Nel mondo dei plc si parla sempre di millisecondi, se non di decine di ms.I microsecondi non appartengono al mondo dei plc.Se hai bisogno di precisioni dell'ordine dei microsecondi significa che ti serve qualcos'altro, non un plc.
nicola.gigante Inserita: 27 maggio 2008 Autore Segnala Inserita: 27 maggio 2008 Ti ringrazio ma a me serve conoscer il tempo di ciclo nell'applicazione per riutilizzarlo nel codice.Anche perchè se volessi solo sapere il tempo del ciclo come curiosità pasterebbe utilizzare un sistema di registrazione con garanzia del tempo di ciclo tipo IBA o PLCAnalyzer.Scusami ancora, una curiosità, sto cercando di conoscere un po meglio l'S7; il Siemens scrive l'immagine dell'IO durante il ciclo per ogni nuova assegnazione, o lo fa a fine ciclo?Ti ringrazio
nicola.gigante Inserita: 27 maggio 2008 Autore Segnala Inserita: 27 maggio 2008 Ciao Batta,dipende dai PLC che usi, dalle applicazioni che devi realizzare (in funzione delle necesità) e da quello che ti serve ottenere.A prescindere comunque da questo, come detto prima, Siemens dice di fornire il tempo in microsecondi, il problema è che non ho capito l'uso del blocco.Comunque sto scrivendo a Siemens.Grazie
batta Inserita: 27 maggio 2008 Segnala Inserita: 27 maggio 2008 (modificato) il Siemens scrive l'immagine dell'IO durante il ciclo per ogni nuova assegnazione, o lo fa a fine ciclo?Sequenza elaborazione cpu fino al 10/98: OS --> IPI --> OB1 --> IPUSequenza elaborazione cpu dal 10/98: OS --> IPU --> IPI --> OB1Nei plc Siemens quando da programma assegni uno stato ad una uscita aggiorni solo l'immagine di processo. A fine scansione (anche se sarebbe più corretto dire, per le cpu dal 10/98, ad inizio scansione successiva) vengono aggiornate fisicamente le uscite, come succede in tutti i plc.Se vuoi aggiornare immediatamente un'uscita devi scrivere direttamente il valore sulla periferia.Esempio:= A0.0oppureT AB0Queste istruzioni modificano solo l'immagine delle uscite, mentre le uscite verranno aggiornate fisicamente solo a fine scansione.InveceT PAB0aggiorna istantaneamente tutte le uscite da A0.0 ad A0.7L'aggiornamento immediato è consentito solo scrivendo il valore in PAB, PAW o PAD.P.S. non hai ancora detto a cosa ti serve la precisione nella lettura del tempo di scansione. Se lo spieghi, forse, possiamo aiutarti a trovare una soluzione alternativa. Modificato: 27 maggio 2008 da batta
Livio Orsini Inserita: 28 maggio 2008 Segnala Inserita: 28 maggio 2008 (modificato) Sequenza elaborazione cpu dal 10/98: OS --> IPU --> IPI --> OB1In teoria anche scrivendo solo nel registo immagine, se la scrittura è effettuata all'inizio di OB1 (alla fine di OB1 per le CPU ante 10/98), la misura dei tempi di ciclo basati sulla variazione di stato di un uscita può considerarsi sufficientemente precisa. Si può ritere costante il tempo impiegato per elaborare OS, IPU e IPI; in effetti occorrono piccole variazioni tra ciclo e ciclo però si possono ritenere ininfluenti ai fini della misura.Io comunque preferisco la scrittura diretta della periferia più che altro per un ragione concettuale. Modificato: 28 maggio 2008 da Livio Orsini
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