fabio.intermite Inserito: 31 ottobre 2014 Segnala Inserito: 31 ottobre 2014 In un esercizio mi è stato chiesto di effettuare un controllo di un peso ogni 100ms. Inizialmente ho armeggiato parecchio con i temporizzatori. Poi ho pensato di utilizzare un merker di clock. Ho allegato una immagnie, spero che si veda. I segmenti sono il 3 e 4. Che ne pensate? http://www.mediafire.com/view/s821hqodlesk33e/Immagine.bmp
walterword Inserita: 31 ottobre 2014 Segnala Inserita: 31 ottobre 2014 se vuoi fare una cosa professione e priva di asincronismi devi usare OB35 configurato in hardware a 100 mS .OB35 e' l'hanlder che gestisce interruzioni programmate . Se invece non è richiesta precisione o altro , allora usa un timer e sul fronte di salita fai le stesse cose che faresti in OB35 o richiamate da esso
fabio.intermite Inserita: 1 novembre 2014 Autore Segnala Inserita: 1 novembre 2014 Mi potresti spiegare meglio l'utilizzo del timer, potrebbe chi ho provato ma non sono arrivato ad una conclusione. Non tanto nel capire come funziona un temporizzatore, ma la fiducia è stata quella di trovate un modo per resettarlo.
Livio Orsini Inserita: 1 novembre 2014 Segnala Inserita: 1 novembre 2014 Come ti ha scritto Walter nella configurazione Hw del sistema, configuri il clock di sistema per 100 ms. Poi leghi l'OB35 all'iterrupt a tempo del clock di sistema. Nell'OB35 richiami lo FC di misura del peso, oppure se son poche istruzioni effettui direttamente la misura. In questo modo sei sicuro che la misura sarà effettuata esattamente ogni 100ms
walterword Inserita: 1 novembre 2014 Segnala Inserita: 1 novembre 2014 (modificato) se nel progetto aggiungi un OB35 e lo carichi dovrebbe gia essere funzionante a 100ms di default , seno' vai nellhw e lo abiliti ma credo lo sia già. Col timer asincrono devi fare il giochetto che il timer TON lo fai partire solo se non hai la sua uscita .In questo modo ti da' già il fronte UN T100 SE s5#100ms U T100 SPBN salta //fai qua quello che devi fare salta: nop 0 Però meglio appoggiarsi su merker in modo tale da poterlo gestire Modificato: 1 novembre 2014 da walterword
Gabri.cicchi Inserita: 6 novembre 2014 Segnala Inserita: 6 novembre 2014 Ciao Attenzione che usando il merker di clock (M100.0) questo genera un segnale onda quadra con ampiezza 0.1 Sec. Quindi le tue istruzione vengono eseguite per 0.1Sec ogni 0.1Sec. La soluzione più corretta è quella già segnalata in precedenza, ovvero l'utilizzo dell' OB35. Questo di standard è configurato a 100ms, e probabilmente per questo ti hanno dato un tempo di campionatura di 100ms. Per utilizzarlo basta che inserisci nei programmi un nuovo OB e lo nomini OB35. La CPU, provvederà automaticamente ad eseguire le istruzioni contenute in OB35 ogni 100ms, tramite un interrupt. Questo ti permette una scansione sempre costante. Ciao Gabriele
bigalex Inserita: 6 novembre 2014 Segnala Inserita: 6 novembre 2014 Se si usa il fronte di salita del clock a 100ms va bene ugualmente. Cioè , come già detto sopra , il fronte di salita resta attivo per un ciclo plc durante il quale verrà svolta l'elaborazione della logica (ad esso subordinata) richiesta . Se il tempo ciclo del task plc è inferiore ai 25ms non si presentano problemi di rilevamento e di esecuzione . Poi è tecnicamente preferibile l'utilizzo degli OB3x (schedulati a tempo) se la funzione da svolgere richiede una maggiore accuratezza e tempi di schedulazione più stringenti . bigalex
walterword Inserita: 6 novembre 2014 Segnala Inserita: 6 novembre 2014 mi riferivo a merker qualsiasi per il done del timer, non a merker del byte configurato di clock in hw . comunque sia , nel caso di merker di clock si mette il fronte FP appoggiato al merker di clock Se invece si usa la tecnica del timer e' gia un fronte
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