baltimora Inserito: 4 giugno 2010 Segnala Inserito: 4 giugno 2010 Ho realizzato un programmatore orario settimanale, ma ho qualche dubbio su come dovrebbe funzionare.Il programmatore settimanale l’ho realizzato leggendo l’ora, i minuti ed il giorno della settimana della CPU, se questi coincidono con quelli impostati sul pannello operatore sotto la voce attivazione, si setta un bit merker , mentre se coincidono con quelli impostati sotto la voce disattivazione, il medesimo bit, viene resettato. Ovviamente il bit , è mantenuto in ritenzione. Ora il mio dubbio è il seguente: Se nel momento in cui il bit, dovrebbe essere settato perché è giunta l’ora di accendere le luci, o resettato perché le luci devono essere spente, e manca la corrente, al suo ritorno il bit essendo in ritenzione si ripristina nelle medesime condizioni in cui era al momento che è andata via la corrente, ma se nel frattempo è passata l’ora di attivazione o disattivazione, per settarlo o resettarlo, bisogna attendere il giorno successivo.Come si può ovviare a questo problema?Grazie
amed Inserita: 6 giugno 2010 Segnala Inserita: 6 giugno 2010 Carissimo Baltimora, io userei le istruzioni di >= e <=. La descrizione a parole del funzionamento deve essere: se il valore è >= e <= a quello impostato un bit è ON.
baltimora Inserita: 6 giugno 2010 Autore Segnala Inserita: 6 giugno 2010 Non è proprio così, potrei trovarmi nella condizione in cui vorrei attivare l'uscita alle 15, e spegnerala alle 16, e pertanto va bene in tuo discorso, ma se volessi accendera alle 22 e spegnerla alle 3 di notte, il tuo discorso non va più bene. Siccome possono verificarsi entrambe le ipotesi, (a discrezione del cliente finale)un discorso di comparazione, non credo che sia funzionale.Ciao
cagliostro Inserita: 6 giugno 2010 Segnala Inserita: 6 giugno 2010 (modificato) Salve,non ho anora avuto il piacere di usare la famiglia S7-1200, ma se ho ben capito il tuo problema, potresti aggirare l'ostacolo in questo modo.Dal momento che il merker di attivazione delle luci,immagino sia stato dichiarato su di un'area ritentiva, andrei ad ogni riavvio del PLC, mediante l'elaborazione di una routine tipo OB100-101 di S7 oppure mediante un merker attivo solo alla prima scansione della CPU, ad analizzare lo stato del merker stesso.Se questo è attivo, allora andrò a stabilire attraverso due comparazioni, se mi trovo nella finestra temporale o fascia oraria relativa allo spegnimento delle luci.Se questa condizione è verificata allora resetto il merker.Lo stesso controllo andrà effettuato andando ad analizzare il merker sullo stato di OFF, sempre andando a verificare attraverso due comparazioni, se mi trovo nella fascia oraria relativa all'accensione delle luci.In questo caso imposto il merker ad ON.Questo è in linea di massima quello che cercherei di fare, sempre se compreso bene il tuo problema. Sicuramente il controllo andà "affinato" o elaborato ulteriormente, considerando che che il ciclo di accensione e spegnimento potrebbe essere diverso per ogni giorno della settimana. Ovviamente questo è solo un controllo da eseguire come ribadito in precedenza ad ogni riavvio del PLC, per vedere se devo spegnere o accendere le luci, poi nelle condizioni di normalità il controllo viene preso dal codice da te sviluppato. Modificato: 6 giugno 2010 da cagliostro
baltimora Inserita: 6 giugno 2010 Autore Segnala Inserita: 6 giugno 2010 (modificato) Non ho ben copreso come fare la comparazione "temporale", come detto nel mio precedente post, una semplice comparazione potrebbe non essere sufficiente in quanto potrei trovarmi nelle seguenti condizioni:Una volta in cui l'ora di accenzione è minore rispetto a quella di spegnimento, una seconda volta, ove l'ora di accenzione è maggiore rispetto a quella di spegnimento, pertanto dovrei cercare di istruire il PLC quando fare una comparazione e quando farne un'altra. E questo mi sfugge come fare. Il tutto viene complicato dal fatto che il programmatore orario è settimanale, pertanto se viene impostato come ora di accenzione ad esempio le 15 e spegnimento le 22, si trovano nel medesimo giorno della settimana, mentre se si imposta come ora di accenzione le 22 e spegnimento alle 03, l'accenzione si trova in un giorno della settimana (ad esempio lunedi) e lo spegnimento il giorno successivo (martedi). Ciao Modificato: 6 giugno 2010 da baltimora
Water Inserita: 7 giugno 2010 Segnala Inserita: 7 giugno 2010 un idea ...il giorno della settima lo conosci (bit 7)trasformi l'ora in minuti (15:30 = 15*60+30) e quindi fai la comparazione >- <-ciao
baltimora Inserita: 7 giugno 2010 Autore Segnala Inserita: 7 giugno 2010 Grazie del consiglio. Proverò cosìCiao
weather Inserita: 7 giugno 2010 Segnala Inserita: 7 giugno 2010 (modificato) ... devi fare un test per verificare se l'orario di Start è inferiore all'orario di Stopse l'orario di Start è inferiore all'orario di Stop l'algoritmo da usare è : Ora_Attuale >= Start AND Ora_Attuale <= Stopse l'orario di Start è superiore all'orario di Stop l'algoritmo da usare è : Ora_Attuale >= Start OR Ora_Attuale <= Stop Modificato: 7 giugno 2010 da weather
amed Inserita: 7 giugno 2010 Segnala Inserita: 7 giugno 2010 Carissimo Baltimora, ho cominciato ora ad usare s7-1200. Per poterti aiutare ho bisogno di chiederti alcune cose. Tu hai usato usato l'istruzione RD_SYS_T per rendere leggibile dal programma la data e l'ora. Cosa hai scritto su OUT?. Come è e dove è la struttura dei dati (giorno, ora e minuti) che tu scrivi con il pannello operatore e con la quale devi fare il confronto.
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