Vai al contenuto
PLC Forum


Pluviometro con S7 1200


pegu

Messaggi consigliati

Buonasera a tutti,

sto provando a implementare il calcolo del livello di pioggia giornaliera su un S7 1200 che avevo precedentemente effettuato con un LOGO!.

Sto avendo alcune difficoltà: innanzitutto a trovare un blocco istruzioni che faccia da timer giornaliero per resettare il pluviometro tutti i giorni: ho dovuto scaricare la libreria LGF e utilizzare l'istruzione TimerSwitch.

Questa permette di settare due orari o date in cui attivare e spegnere il segnale di uscita, come risoluzione massima ha il minuto quindi si può generare un segnale che come minimo dura un minuto. Dato che voglio resettare il pluviometro per un solo istante ho pensato di tramutare il segnale in uscita in un impulso con l'istruzione per interrogare il fronte di salita -|P|-.

Purtoppo però l'istruzione non lavora come sperato perchè non fa altro che accendersi quando si accende l'uscita stessa, quindi si comporta come un normale interruttore.

Avete qualche spiegazione del fenomeno a cui sto assistendo? Ed è possibile che tra le istruzioni standard del TIA Portal v15.1 non ci sia un timer giornaliero/settimanale etc.? Come si potrebbe costruire con le istruzioni a disposizione?

Grazie.

 

Pegu

pluviometro_LOGO.png

pluviometro_S7.png

Link al commento
Condividi su altri siti


Ciao,

io leggerei l'orologio della cpu e all'ora 23:59:58 alzerei il bit che serve, mentre all'ora 23:59:59 lo abbasserei.

Senza tirare in ballo altro....

qui trovi degli spunti.

 

Link al commento
Condividi su altri siti

Grazie delle risposte, quindi il timer devo realizzarlo con delle linee di codice? Non ho esperienza con la scrittura di codice in ambiente TIA Portal, c'è qualche guida che posso consultare?

Riguardo al fronte di salita ho scoperto che nella versione del programma precedente rispetto a quella postata usavo come merker del livello pioggia MD8 che andava in contrasto con le merker m8.5 e m8.6 dell'uscita del timer e della variabile reset.

Link al commento
Condividi su altri siti

Semplicemente un segmento più o meno così 

 

 Orologio.hh.    Orologio.mm.                  M100.0

----|=|----------------------|=|------------------------------------(P)

  0                           0                              M100.1        

Link al commento
Condividi su altri siti

Ok, grazie Max, penso di aver capito.Pluviometro_S7_2.png.95662e3f6576b8cf2b2aa659fbd31269.png

Ho dovuto usare l'istruzione RD_LOC_T e mettere la data e ora acquisita in un DB per poi usare il dato delle ore e dei minuti nel DB per compararlo con la le ore e i minuti a cui voglio attivare il reset.

 

Ne approfitto della tua esperienza per risolvere un'ultimo dubbio: ho provato a mettere il controllo del fronte di segnale sull'uscita come suggerito da te ma vedo che la variabile di appoggio rimane a 1 e non solo quando c'è il passaggio da 0  a 1 dell'altra variabile. Non riesco a capire cosa sbaglio.

PLuviometro_S7_2_err.png.02e2a182d5c83e9e6323d1c064744272.png

Link al commento
Condividi su altri siti

6 ore fa, pegu ha scritto:

Ho dovuto usare l'istruzione RD_LOC_T e mettere la data e ora acquisita in un DB

Se ti serve solo per questa operazione e non ti interessa averla come dato globale, puoi dichiarare una variabile DTL nell'area TEMP.

 

6 ore fa, pegu ha scritto:

vedo che la variabile di appoggio rimane a 1 e non solo quando c'è il passaggio da 0  a 1 dell'altra variabile

Stai interpretando le variabil dei rilevamenti del fronte al contrario.
Se guardi bene, anche nel primo dei due esempi vedi che lo stato di "Reset pluv" rimane alto. Ma "Reset pluv" è solo una variabile di appoggio per rilevare il fronte.
Usando il fronte sull'uscita, è la stessa cosa: "Reset pluv" serve per rilevare il fronte, ma il fronte è sulla variabile "Uscita clock".
 

Tanti anni fa, molti PLC non disponeva di un'istruzione per il rilevamento dei fronti, e si faceva come nell'esempio:

      Segnale   MemSegnale   FronteSegnale
--------| |--------|/|-----------( )

      Segnale                 MemSegnale
--------| |----------------------( )

L'istruzione di rilevamento del fronte opera nello stesso identico modo.

Link al commento
Condividi su altri siti

2 hours ago, batta said:

Se ti serve solo per questa operazione e non ti interessa averla come dato globale, puoi dichiarare una variabile DTL nell'area TEMP.

 

Stai interpretando le variabil dei rilevamenti del fronte al contrario.
Se guardi bene, anche nel primo dei due esempi vedi che lo stato di "Reset pluv" rimane alto. Ma "Reset pluv" è solo una variabile di appoggio per rilevare il fronte.
Usando il fronte sull'uscita, è la stessa cosa: "Reset pluv" serve per rilevare il fronte, ma il fronte è sulla variabile "Uscita clock".
 

Tanti anni fa, molti PLC non disponeva di un'istruzione per il rilevamento dei fronti, e si faceva come nell'esempio:


      Segnale   MemSegnale   FronteSegnale
--------| |--------|/|-----------( )

      Segnale                 MemSegnale
--------| |----------------------( )

L'istruzione di rilevamento del fronte opera nello stesso identico modo.

Già ai tempi del S5-100!!!!!!

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