Jump to content
PLC Forum


Sadhu

Misurare tempo trascorso tra due eventi

Recommended Posts

Sadhu

Avrei bisogno di misurare il tempo di passaggio di un oggetto tra due sensori. Successivamente confrontare il tempo misurato con un tempo impostato di 10s. Se il tempo misurato è superiore a 10s accendere una lampadina rossa.

 

 Il PLC è Siemens 1200 e in linguaggio ladder. L'oggetto può muoversi in entrambi le direzioni - destra sinistra e vice versa.

 

Userei fronte-di-salita del primo sensore per dare inizio alla misura e fronte-di-discesa del secondo sensore per fermare la misura.  Quali funzioni di temo, Contatori   o altro mi servono per realizzare questo programma.

    

Share this post


Link to post
Share on other sites

max.bocca

Quando passa l'oggetto memorizzi il time poi gestisci la differenza e se questa è maggiore genera un alert

Share this post


Link to post
Share on other sites
Giuseppe Signorella

Come suggerito da max.botta, al verificarsi del fronte di salita del primo sensore, leggi l'ora di sistema e la memorizzi in una variabile.

Al verificarsi del secondo fronte (salita o discesa è indifferente), dipende dalle tue esigenze, rileggi l'ora di sistema e la memorizzi su un'altra variabile.

Fai la differenza tra le due letture, ed ottieni il tempo che è intercorso tra le due letture. Se hai necessità di una buona precisione, gestirei il tutto con degli interrupt.

Devi ovviamente crearti una piccola logica per gestirti la direzione della provenienza dell'oggetto.

Ciao

Edited by Giuseppe Signorella

Share this post


Link to post
Share on other sites
Sadhu

Per adesso ho fatto cosi:

1. Letto il system clock due volte (RD_SYS_T)

2. Differenza di tempo con T_DIFF

3. Confontato la differenza con un valore fisso

 

 

image.thumb.png.7502fbe57a8bc3a8046bb05d75a96e2e.png

Share this post


Link to post
Share on other sites
ivan.bortolin

Ciao,

dal sistema puoi estrapolare anche solo il valore di secondi e minuti, nel caso ti serva.

Share this post


Link to post
Share on other sites
batta

Se non ho capito male, a Sadhu, più che misurare il tempo intercorso tra due eventi, interessa controllare che questo tempo non superi i 10 secondi.
Basta un timer.
Il primo sensore fa partire il timer, il secondo sensore azzera il timer.
Se viene superato il valore di preset (10s), il timer attiva l'uscita.
Non vedo perché complicarsi la vita con lettura ora di sistema ed altro.

Share this post


Link to post
Share on other sites
max.bocca

Batta hai perfettamente ragione  non avevo preso in considerazione di solo 10sec. Leggendo la richiesta ero partito per la tangente.  

Share this post


Link to post
Share on other sites
batta

Capita anche ai migliori, tranne a me che non sbaglio mai :superlol::roflmao:

Share this post


Link to post
Share on other sites
ivan.bortolin

Io ho farei questa implementazione:

ovviamente la lampadina si accende solo durante il tempo che trascorre prima che il pezzo passi sulla seconda fotocellula. Se vuoi mantenerla accesa basta mettere un set-reset dopo il TON

kop_lampadina.jpg

Share this post


Link to post
Share on other sites
max.bocca

Così si accende da quando supera il tempo fino al passaggio sulla fotocellule di uscita. 

Io lavorerei con i fronti sugli ingressi.

Share this post


Link to post
Share on other sites
ivan.bortolin
11 minuti fa, max.bocca scrisse:

Così si accende da quando supera il tempo fino al passaggio sulla fotocellule di uscita. 

Io lavorerei con i fronti sugli ingressi.

Infatti per questo ho scritto che sarebbe da mettere un Set-reset in cascata al TON, per mantenere la luce accesa fino a comando di reset, ma li dipende dall'esigenza della linea.

Per quanto riguarda il senso di marcia, metterei una variabile booleana (0 destra-sinistra 1 sinistra destra) : la metterei a monte del kop sopra ed in base a questa inverte gli ingressi del set-reset.

Edited by ivan.bortolin

Share this post


Link to post
Share on other sites
acquaman
il 13/5/2019 at 19:51 , batta scrisse:

Capita anche ai migliori, tranne a me che non sbaglio mai

Batta la qualità che più apprezzo in te è la modestia. 😂😂😂😂

Share this post


Link to post
Share on other sites
Sadhu

Per ore ho fatto in questo modo per il passaggio da sinistra a desta. Dovrei fare la stessa cosa anche per il passaggio da destra verso sinistra. 

In pratica l'oggetto parte da sinistra verso destra e deve arrivare entro un tempo minimo e non oltre un tempo massimo. Lo stesso per il ritorno.

Se son positivi entrambi i passaggi allora il risultato finale è positivo.

image.thumb.png.c012084b98d86ae4beeef9c02730e14e.png

Share this post


Link to post
Share on other sites
Yiogo

 

attenzione però che questa metodica va bene solo se la precisione richiesta è decisamente scadente, altrimenti non va bene

 

se si vuole precisione bisogna usare due ingressi in interrupt e leggere nell'interrupt stesso il DT nei due eventi in due diversi UDINT

si fa la sottrazione e si dispone del valore vero in millisecondi che si appoggia in un UDINT che rappresenta la differenza, meglio in due per avere le due diverse reciproche differenze

poi ci vorrà un po' di logica per capire il dato ed il verso degli eventi, in particolare per distingue i due diversi movimenti

 

faccio notare che con questa metodica la misura è reale mentre anche usando un TON in msec. è viziata dall'offset, sempre positivo, introdotto dallo scan time

Edited by Yiogo

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...