http://www.plcforum.it/f/topic/148411-blocchi-organizzativi-di-schedu...
Non sei registrato? Registrati subito cliccando QUI! E goditi tutte le funzionalita' del sito! Home Page ContattaciOggi su PLC ForumOggi su AutomazioneLoginRegistrati Automazione Automazione PLC HMI Inverter / Azionamenti / Motori Controllo e regolazione Reti per automazione Visione CAD elettrici Normative Domotica Impiantistica Impiantistica Impianti elettrici industriali Impianti elettrici civili Interruttori differenziali, magnetici e termici Qualit energia elettrica Illuminotecnica Domotica Citofonia e videocitofonia Cancelli elettrici e basculanti Diffusione sonora TermoMeccanica Fotovoltaico e rinnovabili Antennistica Sicurezza Sicurezza Antintrusione ed antifurto Videosorveglianza Rilevazione incendi Controllo accessi Elettronica e PC Sezione Elettronica Elettronica generica Microprocessori Circuiti stampati (PCB) Sezione PC Sistemi operativi Linguaggi di programmazione Software Windows Software Linux Altri Forum Meccanica Pneumatica Idraulica Oleodinamica Elettrodomestici Riparazioni TV, audio, video e decoder Antennistica Telefonia Matematica Svago Utility Inventori dimenticati Altre sezioni Assistenza - Aiuto FAQ - domande frequenti Regolamento Disclaimer Copyright Privacy Contattaci Discussioni importanti Didattica Video Up/Download Notiziario automazione News Archivio aziende Newsletter
1 di 3
03/11/2013 22.51
http://www.plcforum.it/f/topic/148411-blocchi-organizzativi-di-schedu...
attiliovolpe
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
ken
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 l1 +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*** l0 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
attiliovolpe
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
Inviato 22 agosto 2013 - 18:22
Livio Orsini
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
attiliovolpe
Ciao Livio, grazie. Per dirla tutta, perch si usano gli OB a tempo e non dei temporizzatori?
2 di 3
03/11/2013 22.51
http://www.plcforum.it/f/topic/148411-blocchi-organizzativi-di-schedu...
Livio Orsini
Sono due cose differenti. L'OB lanciato da un interrupt su clock di sistema. E' molto preciso ed indipendente dall'evolversi del programma.
ken
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.
Torna a S7-300
3 di 3
03/11/2013 22.51