Vai al contenuto
PLC Forum


CONTA ORE S7-1200


MARCO9777

Messaggi consigliati

Buongiorno sto creando un conta ore! in pratica devo solo contare le ore di funzionamento di due resistenze e due valvole! sto usando il merker di sistema 1hz per contare secondo per secondo e poi in modo da avere minuti e ore.. ho un problema dopo aver configurato la cpu e attivato i merker di sistema sui merker 4.1 ecc.. il merker non esegue nessun lampeggio e il mio contatore non può contare! volevo chiedervi qualcuno ha mai usato il contaore già presente sul tia? cosa mi consigliate ? GRAZIE A TUTTI

Link al commento
Condividi su altri siti


Simone.Salarsi

dopo aver attivato i clock di sistema hai scaricato la configurazione hardware nel PLC ?

 

hai verificato che tu non stia sovrapponendo quei merker ad altre variabili ? magari stai già usando quelle aree con byte, word o dword per altre cose.

 

Per quanto riguarda il contaore presente sul tia cosa intendi ?

 

 

Link al commento
Condividi su altri siti

48 minuti fa, MARCO9777 ha scritto:

conta ore di esercizio

Sul TIA non lo trovo, è un blocco di qualche libreria?

Modificato: da acquaman
Link al commento
Condividi su altri siti

rinnovo l'osservazione di Simone

7 ore fa, Simone.Salarsi ha scritto:

dopo aver attivato i clock di sistema hai scaricato la configurazione hardware nel PLC ?

capita, uno è convinto , e si dimentica , sai quante volte....

 

se Marco puoi rispondere a questa domanda

 

conti con il fronte di salita e appoggi in una dint

poi dividi per 3600 e ti escono le ore

Link al commento
Condividi su altri siti

1 ora fa, STEU ha scritto:

Ma scusa per fare un contaore c'è bisogno di n fc dalla libreria?

Sono d'accordo.

 

Per fare un contaore sfruttando il clock di un secondo ci sono, in linea di massima, due modi:
1) incrementare i secondi; arrivati a 60 secondi, si azzerano i secondi e si incrementano i minuti; arrivati a sessanta minuti, si azzerano i minuti e si incrementano le ore.

2) incrementare un contasecondi assoluto e poi, con semplici calcoli, suddividere il totale in ore:minuti:secondi.

 

Personalmente preferisco il secondo sistema, sia perché richiede meno operazioni, sia perché il contatore assoluto dei secondi è di facile utilizzo se si devono fare comparazioni dei tempi di lavoro.
Mettendo il contasecondi su una variabile UDInt, si arriva fino ad oltre 136 anni. Se non bastasse 🤪, usando una ULInt, si arriva ad oltre 584 miliardi di anni. Considerando che l'età dell'universo è di circa 14 miliardi di anni, anche contando il tempo a partire dal big bang, ci rimarrebbero ancora circa 570 miliardi di anni prima di arrivare all'overflow della variabile.

 

Esempio di come potrebbe essere, con contasecondi totali e suddivisione in giorni, ore, minuti, secondi:

IF #RisingEdgeClock_1s THEN
    #actCntSec += 1;
END_IF;

// Calcolo giorni (1 giorno = 86400 secondi)
#giorni := UDINT_TO_UINT(#actCntSec / 86400);
// Calcolo secondi di resto
#tmpResto := #actCntSec MOD 86400;
// Calcolo ore (divido i secondi di resto per 3600)
#ore := UDINT_TO_USINT(#tmpResto / 3600);
// Calcolo secondi di resto
#tmpResto := #tmpResto MOD 3600;
// Calcolo minuti (divido i secondi di resto per 60)
#minuti := UDINT_TO_USINT(#tmpResto / 60);
// Calcolo secondi
#secondi := UDINT_TO_USINT(#tmpResto MOD 60);

 

La variabile "actCntSec" deve essere dichiarata come IN/OUT, e deve essere una variabile statica e ritentiva.
 

Link al commento
Condividi su altri siti

10 minuti fa, acquaman ha scritto:

A me piace di più leggere l'ora e fare la differenza con un'ora memorizzata quando deve partire il conteggio.

Dipende da cosa devi fare. Se è per avere le ore di funzionamento di un dispositivo, dovresti continuamente lavorare suoi fronti per memorizzare l'istante di avvio e di arresto, e tenere in memoria l'ultimo valore raggiunto al quale sommare la differenza tra l'ora attuale e l'ora dell'ultimo avviamento.
Inoltre, se cambi l'ora del PLC (es. passaggio da ora solare a ora legale), ti falsa il risultato.
 

Nel caso di incremento di un contatore, ti basta condizionare l'incremento allo stato di funzionamento del dispositivo.

Link al commento
Condividi su altri siti

L'esempio di @batta usando i moduli mi sembra molto chiaro, lo utilizzavo nei programmi per PC quella modalità.

A me è capito qualche volta che non funzionavano i MB di sistema dopo aver cambiato l'indirizzo nonostante il caricamento, per risolverlo dovevo resettare a condizione iniziale e poi caricare la configurazione.

 

Link al commento
Condividi su altri siti

GRAZIE A TUTTI! HO RISOLTO IL TUTTO CON MERKER DI CLOCK! EFFETTIVAMENTE STAVO COMMETTENDO UN ERRORE SENZA ACCORGERMENE!

IL BLOCCO DI CUI VI PARLAVO SI CHIAMA CONTA ORE DI ESERCIZIO, è un fb chiamato "RTM".

Link al commento
Condividi su altri siti

Istruzione che reputo inutile e più complicata da utilizzare dei contaore proposti negli esempi.

Link al commento
Condividi su altri siti

Il 7/4/2022 alle 18:46 , batta ha scritto:

Se è per avere le ore di funzionamento di un dispositivo, dovresti continuamente lavorare suoi fronti per memorizzare l'istante di avvio e di arresto

Non è cosi complesso, poi integrato dentro il blocco dei motori, fatto una volta fatto per tutti.

Il 8/4/2022 alle 11:51 , MARCO9777 ha scritto:

è un fb chiamato "RTM"

Per curiosità vado a vederlo.

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