Vai al contenuto
PLC Forum


Programmatore Orario Su S7 1200 - Dubbi su come dovrebbe funzionare


baltimora

Messaggi consigliati

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

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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: da cagliostro
Link al commento
Condividi su altri siti

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: da baltimora
Link al commento
Condividi su altri siti

... devi fare un test per verificare se l'orario di Start è inferiore all'orario di Stop

se l'orario di Start è inferiore all'orario di Stop l'algoritmo da usare è : Ora_Attuale >= Start AND Ora_Attuale <= Stop

se l'orario di Start è superiore all'orario di Stop l'algoritmo da usare è : Ora_Attuale >= Start OR Ora_Attuale <= Stop

Modificato: da weather
Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

  • 7 years later...

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