attiliovolpe Inserito: 22 agosto 2013 Segnala Share Inserito: 22 agosto 2013 Salve, qualcuno riesce a fare un esempio riguardo l'uso degli OB a tempo? Se per esempio voglio che il software ogni xx tempo incrementi il valore di un'uscita analogica come devo fare? Supponendo di di utilizzare OB35, 100ms, devo inserirlo nel programma, come faccio ad andare a leggere ed accumulare il tempo per poi stabilire cosa fare ad un tempo X? Se invece voglio che ogni xx secondi si attivi un uscita digitale? Saluti Link al commento Condividi su altri siti More sharing options...
ken Inserita: 22 agosto 2013 Segnala Share Inserita: 22 agosto 2013 (modificato) sommando. ogni 100ms l'ob viene eseguito solo una volta. ad ogni scansione sommi 1 ad una variabile. quando raggiunge il tuo valore prefissato esegui un codice che attiverà la tua uscita oppure altro. in fondo a questo codice dovrai poi resettare la variabile riportandola a zero. nuova scansione e il ciclo ricomincia l dbxx.dbwxx //contatore l 1 +i t dbxx.dbwxx //contatore l 10 //o altro valore, 10 rappresenta 1sec ==I spbn FUNZ *** qui puoi richiamare un fc, oppure scrivere il tuo codice qui*** l 0 t dbxx.dbwxx //contatore FUNZ: nop 0 nell'esempio sopra citato tutto quello che c'è dopo SPBN FUNZ verrà eseguito una sola volta ogni secondo Modificato: 22 agosto 2013 da ken Link al commento Condividi su altri siti More sharing options...
attiliovolpe Inserita: 22 agosto 2013 Autore Segnala Share Inserita: 22 agosto 2013 Intanto grazie per la risposta, tutto chiaro. Ma i 100ms sono esatti o il tempo di esecuzione ciclo va sommato? Il codice esempio, va scritto dentro l'Ob 35? Hai qualche esempio tipo una rampa lineare o di qualche altro tipo? Grazie intanto, saluti Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 22 agosto 2013 Segnala Share Inserita: 22 agosto 2013 Se, come è corretto, programmi il timer Hw di sistema a 100 ms e lo leghi all'interrupt dell'OB35 i 100 ms non dipendono dal tempo di ciclo proprio perchè l'interrupt interrompe il ciclo di programma. Io consiglierei di scrivere solo le istruzioni necessarie al conteggio ed alla comparazione e richiamare una FB esterna. Se non ricordo male il tempo lo si imposta nel configuratore Hw una tantum Link al commento Condividi su altri siti More sharing options...
attiliovolpe Inserita: 23 agosto 2013 Autore Segnala Share Inserita: 23 agosto 2013 Ciao Livio, grazie. Per dirla tutta, perché si usano gli OB a tempo e non dei temporizzatori? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 23 agosto 2013 Segnala Share Inserita: 23 agosto 2013 Sono due cose differenti. L'OB è lanciato da un interrupt su clock di sistema. E' molto preciso ed è indipendente dall'evolversi del programma. Link al commento Condividi su altri siti More sharing options...
ken Inserita: 23 agosto 2013 Segnala Share Inserita: 23 agosto 2013 i timer dipendono dalla scansione del programma perciò la sequenza (o il segmento) si attiverà solo quando la scansione arriva a quel punto di software. gli ob schedulati invece hanno priorità e vengono eseguiti ogni x tempo sia che la scansione sia in un punto sia che la scansione sia altrove. ovvio che troppe schedulazioni contemporanee portano a ritardi, non è possibile eseguire due ob contemporaneamente. Link al commento Condividi su altri siti More sharing options...
attiliovolpe Inserita: 23 marzo 2014 Autore Segnala Share Inserita: 23 marzo 2014 Ok, ho capito la differenza tra l'utilizzo di un OB e un timer. Imposto un OB a tempo a "X" mS e ogni "X" tempo lo stesso OB sarà letto e ripetuto, scrivo la funzione che serve all'interno dell'OB e fin qui è chiaro, non mi è chiaro quali delle variabili appartenenti all'OB a tempo vanno impostate e/o utilizzate e come va fatto. Grazie 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