Vai al contenuto
PLC Forum


Controllo Ogni 100Ms.


fabio.intermite

Messaggi consigliati

fabio.intermite

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

Link al commento
Condividi su altri siti


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

Link al commento
Condividi su altri siti

fabio.intermite

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

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

Link al commento
Condividi su altri siti

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 :blink:

Link al commento
Condividi su altri siti

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 ;)

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...