PinokkioPLC Inserito: 6 giugno 2014 Segnala Inserito: 6 giugno 2014 Buonasera, sto utilizzando per la prima volta, in un mio programmino, l'orologio di sistema, in particolare ho la necessità di rilevare se l'orario è compreso tra le 2 e le 2,25 ho implementato la soluzione che riporto di seguito, ma mi chiedo è questo l'unico modo o meglio il modo corretto di procedere? Ovvero bisogna giocare con dei confronti, una volta sulle ore e poi sui minuti per far ricadere l'indicazione dell'orologio di sistema, nell'intervallo di tempo che a noi interessa? GRAZIE per l'eventuale aiuto, ciao.
medianico Inserita: 7 giugno 2014 Segnala Inserita: 7 giugno 2014 Ciao non conosco bene il ladder, hai la possibilita' di simulare il funzionamento ? la riga cosi' compilata dovrebbe mantenere a ON tra le 2 e 2,25. quale e' lo scopo? fare piu' interventi giornalieri? nel casi ci metti dovresti fare piu' linee del genere e poi una bella OR in fondo per l'attuazione del rele'
PinokkioPLC Inserita: 7 giugno 2014 Autore Segnala Inserita: 7 giugno 2014 quale e' lo scopo? fare piu' interventi giornalieri? Ciao lo scopo è che in base a delle fasce orarie (4 diverse fasce orarie) un numero intero tra 1 e 4 mi dovrà essere caricato con la funzione MOVE nella variabile #SegnaleZonaIrrigazione, variabile che poi andrò ad utilizzare in altri blocchi, dunque questa è una prima FB che sto creando per un progetto più grande. Però è la prima volta che utilizzo l'orologio di sistema e vorrei sapere se quello di incastrare con dei confronti ORE e MINUTI dell'orologio di sistema, in un intervallo, è il metodo giusto, oppure si utilizzano altri modi di procedere.
max.bocca Inserita: 7 giugno 2014 Segnala Inserita: 7 giugno 2014 quello che dici funziona se inizio e fine sono nella stessa ora (confronto dei minuti nella stessa ora)
PinokkioPLC Inserita: 7 giugno 2014 Autore Segnala Inserita: 7 giugno 2014 quello che dici funziona se inizio e fine sono nella stessa ora (confronto dei minuti nella stessa ora) Si a me serve questa cosa, in quanto le fasce orarie devono essere di 25 minuti, va bene la mia soluzione? E nel caso in cui le fasce orarie dovessero essere ad esempio di 90 minuti, potrei sempre andare a combinare confronti per arrivare alla soluzione, considerando degli OR, tipo se devo considerare dalle 2 alle 3,30, potrei fare "dalle 2 fino alle 3" OR "dalle 3 fino alle 3,30" giusto?
batta Inserita: 7 giugno 2014 Segnala Inserita: 7 giugno 2014 Potresti anche convertire la data-ora del sistama (in formato DTL) in ora del giorno (TOD) con l'istruzione T_CONV. L'ora del giorno (TOD) in realtà non è altro che un doppio intero che contiene i millisecondi trascorsi dalla mezzanotte. Essendo un doppio intero, puoi usare le normali istruzioni di comparazione per fare confronti (non devi fare conversioni di formato: le istruzioni di comparazione accettano direttamente il formato TOD). Questo metodo ti risulta comodo perché le variabili dichiarate come TOD, anche se come appena detto in realtà sono delle DINT, vengono visualizzate (anche sul pannello operatore) nel formato hh:mm:ss.ms. Quindi su un eventuale pannello operatore potresti impostare i vari orari di inizio e fine in modo molto comodo. Una volta che hai, tutte in formato TOD, ora attuale, impostazione ora inizio e impostazione ora fine, per attivare l'attuatore ti basta fare due comparazioni: OraAttuale >= OraInizio AND OraAttuale < OraFine. L'unica cosa che richiede un po' di attenzione, è se devi impostare eventi a cavallo della mezzanotte, dove l'ora di fine è antecedente l'ora di inizio.
PinokkioPLC Inserita: 7 giugno 2014 Autore Segnala Inserita: 7 giugno 2014 Ok allora proverò anche questa soluzione PS: In linea di massima il procedimento che stavo implementando sarebbe stato giusto?
batta Inserita: 8 giugno 2014 Segnala Inserita: 8 giugno 2014 PS: In linea di massima il procedimento che stavo implementando sarebbe stato giusto? In linea di massima, sì. Diventa però di non facile gestione se devi gestire eventi con inizio e fine che non sono della stessa ora. Per esempio, se desideri l'accensione alle ore 2:50 e lo spegnimento alle ore 3:20, devi aggiungere altre comparazioni. Se usi l'ora del giorno in formato TOD non devi fare comparazioni separate per ore e minuti, e questo rende tutto molto più semplice.
PinokkioPLC Inserita: 8 giugno 2014 Autore Segnala Inserita: 8 giugno 2014 Diventa però di non facile gestione se devi gestire eventi con inizio e fine che non sono della stessa ora. Per esempio, se desideri l'accensione alle ore 2:50 e lo spegnimento alle ore 3:20, devi aggiungere altre comparazioni. In effetti per gestire orari tra diverse ore sarebbe stata più incasinata la cosa, perchè ci sarebbero voluti anche dei rami OR come dicevo nel messaggio #5. Se usi l'ora del giorno in formato TOD non devi fare comparazioni separate per ore e minuti, e questo rende tutto molto più semplice. Da domani riprendo il progetto e provo questa soluzione
PinokkioPLC Inserita: 9 giugno 2014 Autore Segnala Inserita: 9 giugno 2014 (modificato) Potresti anche convertire la data-ora del sistama (in formato DTL) in ora del giorno (TOD) con l'istruzione T_CONV. L'ora del giorno (TOD) in realtà non è altro che un doppio intero che contiene i millisecondi trascorsi dalla mezzanotte. Essendo un doppio intero, puoi usare le normali istruzioni di comparazione per fare confronti (non devi fare conversioni di formato: le istruzioni di comparazione accettano direttamente il formato TOD). Questo metodo ti risulta comodo perché le variabili dichiarate come TOD, anche se come appena detto in realtà sono delle DINT, vengono visualizzate (anche sul pannello operatore) nel formato hh:mm:ss.ms. Quindi su un eventuale pannello operatore potresti impostare i vari orari di inizio e fine in modo molto comodo. Una volta che hai, tutte in formato TOD, ora attuale, impostazione ora inizio e impostazione ora fine, per attivare l'attuatore ti basta fare due comparazioni: OraAttuale >= OraInizio AND OraAttuale < OraFine. L'unica cosa che richiede un po' di attenzione, è se devi impostare eventi a cavallo della mezzanotte, dove l'ora di fine è antecedente l'ora di inizio. Sto cercando di implementare questa soluzione, modificando nel seguente modo la mia FB: Però adesso non mi è ben chiara una cosa..... ovvero quale dovrà essere il parametro del confronto, perchè a me serve una fascia oraria compresa tra le 2 e le 2,25, però batta parla di millesecondi trascorsi dalla mezzanotte, dunque se dovessi calcolare le 2 di notte, ovvero 2 ore dalla mezzanotte in millisecondi, mi viene un mostro di numero da inserire nelle istruzioni di confronto come costante, dunque come dovrei procedere? PS: Ho pensato ad una possibile strategia, però questa mi allunga di molto la funzione.... allora sempre con delle T_CONV mi converto delle variabili Time (che mi rappresentano gli orari di inizio e fine fascia orario) in delle variabili Time_Of_Day, in modo da utilizzare queste nelle successione operazioni di confronto. Però siccome a me servono 4 fasce orarie: 2->2,25 2,30->2,55 3->3,25 3,30->3,55 Dovrei andare prima ad effettuare 8 conversioni con delle T_CONV cosa ne pensate? Modificato: 9 giugno 2014 da PinokkioPLC
drugo66 Inserita: 9 giugno 2014 Segnala Inserita: 9 giugno 2014 ... però batta parla di millesecondi trascorsi dalla mezzanotte ... Hai saltato un pezzo della spiegazione di Batta: le variabili dichiarate come TOD, anche se come appena detto in realtà sono delle DINT, vengono visualizzate (anche sul pannello operatore) nel formato hh:mm:ss.ms. Inoltre dal manuale: Il tipo di dati TOD (TIME_OF_DAY) occupa una doppia parola e salva, come numero intero senza segno, il numero dei millisecondi a partire dalla mezzanotte (ore: 0:00). Campo di valori: TOD#00:00:00.000 ... TOD#23:59:59.999 Esempio: TOD#10:20:30.400, TIME_OF_DAY#10:20:30.40 Le indicazioni relative a ora, minuti e secondi sono obbligatorie. L'indicazione dei millisecondi è opzionale. Quindi non devi far altro che lavorare con variabili TOD oppure con costanti anteponendo TOD#
PinokkioPLC Inserita: 9 giugno 2014 Autore Segnala Inserita: 9 giugno 2014 Capito in tal modo mi si snellisce un bel pò la mia FB.... dopo 1 ora di lavoro procedendo come avevo pensato mi era uscito un mostro di FB , adesso ho aggiustato un pò tutto e mi sn risparmiato 8 segmenti utilizzati per le conversioni di inizio e fine fascia orario. PS: Drugo non potevi rispondermi verso le 8, mi risparmiavi ore di "rompicapi mentali"........ scherzo GRAZIE come sempre per l'aiuto
PinokkioPLC Inserita: 10 giugno 2014 Autore Segnala Inserita: 10 giugno 2014 ... mi spiace, ma a quell'ora ceno
step-80 Inserita: 10 giugno 2014 Segnala Inserita: 10 giugno 2014 Michele invece tu non ceni vero? A furia di guardar l'orologio di sistema hai perso la cognizione del tempo quello vero :roflmao:
PinokkioPLC Inserita: 10 giugno 2014 Autore Segnala Inserita: 10 giugno 2014 Michele invece tu non ceni vero? A furia di guardar l'orologio di sistema hai perso la cognizione del tempo quello vero Ciao Matteo, purtroppo tra studio e lavoro, mi ci posso dedicare solo la sera il PLC è la mia PlayStation, la mia Tv serale.... PS: Però alla cena non rinuncerei mai........
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