MARCO9777 Inserito: 7 aprile 2022 Segnala Share Inserito: 7 aprile 2022 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 More sharing options...
Simone.Salarsi Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 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 More sharing options...
MARCO9777 Inserita: 7 aprile 2022 Autore Segnala Share Inserita: 7 aprile 2022 esiste un blocco fb già creato da siemens chiamato conta ore di esercizio .. lo avete mai usato? Link al commento Condividi su altri siti More sharing options...
Simone.Salarsi Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 non conosco quel blocco, potresti linkarlo ? Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 (modificato) 48 minuti fa, MARCO9777 ha scritto: conta ore di esercizio Sul TIA non lo trovo, è un blocco di qualche libreria? Modificato: 7 aprile 2022 da acquaman Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 Ma scusa per fare un contaore c'è bisogno di n fc dalla libreria? Link al commento Condividi su altri siti More sharing options...
luigi69 Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 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 More sharing options...
batta Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 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 More sharing options...
acquaman Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 A me piace di più leggere l'ora e fare la differenza con un'ora memorizzata quando deve partire il conteggio. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 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 More sharing options...
max.bocca Inserita: 7 aprile 2022 Segnala Share Inserita: 7 aprile 2022 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 More sharing options...
STEU Inserita: 8 aprile 2022 Segnala Share Inserita: 8 aprile 2022 In un OB ad interrup di un minuto metti un segmento come questo Link al commento Condividi su altri siti More sharing options...
MARCO9777 Inserita: 8 aprile 2022 Autore Segnala Share Inserita: 8 aprile 2022 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 More sharing options...
batta Inserita: 8 aprile 2022 Segnala Share Inserita: 8 aprile 2022 Istruzione che reputo inutile e più complicata da utilizzare dei contaore proposti negli esempi. Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 11 aprile 2022 Segnala Share Inserita: 11 aprile 2022 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 More sharing options...
acquaman Inserita: 11 aprile 2022 Segnala Share Inserita: 11 aprile 2022 Lascia stare RTM, prima di tutto ne hai uno solo e poi per utilizzarlo per i tuoi scopi ti complichi la vita più che a fartelo. Link al commento Condividi su altri siti More sharing options...
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