Vai al contenuto
PLC Forum


Blocchi Organizzativi Di Schedulazione Orologio


attiliovolpe

Messaggi consigliati

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


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: da ken
Link al commento
Condividi su altri siti

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

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

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

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

  • 6 months later...

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...