Vai al contenuto
PLC Forum


Abilitare Out Ad Un Certo Orario


melopres

Messaggi consigliati

Salve a tutti premetto che prima di chiedere ho letto molte discussioni a riguardo, ma forse per la mia scarsa preparazione di base sono piu' confuso che persuaso

quidi vorrei capire praticamente come rilevare l'orario e la data dalla mia cpu(315-2dp)

e in funzione di questo abilitare un out ad un certo orario in un dato giorno

ringrazio anticipatamente per la risposta

Link al commento
Condividi su altri siti


esiste una funzione di sistema che legge l'ora della cpu. se non ricordo male è la SFC 1. comunque le trovi scritte nel manuale che si intitola funzioni standard e di sistema per s7300/s7400

Link al commento
Condividi su altri siti

prima di tutto leggi il regolamento del forum!

il RET VAL è una variabile INT dove la SFC scrive un valore se durante l'elaborazione avviene un errore.In CDT viene scritta la data e l'ora letti dalla cpu!!!

per esempio in RET VAL e CDT puoi associare delle variabili di un DB.

Modificato: da mautomazione
Link al commento
Condividi su altri siti

grazie per il chiarimento

quindi ricapitolando

devo creare una db con dei valori int

e puntarli nel blocco funzione

per poiu confrontarli e uttenere un out

Link al commento
Condividi su altri siti

iL ret val è INT quindi deve associargli una varibile INT. Il CDT è un DT (Date and Time) anche a questa devi associargli una variabile però DT. Poi dipende come hai fatto il programma se associare una variabile o una variabile di un DB

Link al commento
Condividi su altri siti

Ciao, l'uscita devi abilitarla una volta sola?

Il giorno e l'ora devono essere modificabili ?

Puoi pensare di usare l'OB10, di schedulazione.

Link al commento
Condividi su altri siti

melopres hai aperto la discussione alle 17:26; prima risposta all 17:40. Primo sollecito di risposta alle 18:18, ripetuto alle 18:38!

Non ti sembra di esagerare in petulanza? Oltretutto i solleciti son vietati dal regolamento! :angry: :angry:

Leggiti ben bene regolamento e FAQ! Se ripeti questo comportamento sospendiamo il tuo account!

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

chiedeo a tutti scusa per il mio comportamento,che non si ripeterà mai più

grazie per le risposte,

questa mattina ho fatto qualche prova, ho creato un db e dichiarato le due variabili

a proposito

di questo

la var dt come si edita nel blocco funzione nel campo cdt?

per quanto riguarda le uscite dovrei abilitarle più volte al giorno

e ora e giorno devono poter essere modificabili

grazie a tutti

Link al commento
Condividi su altri siti

Secondo me si può usare anche un sistema più rapido.

Io eviterei di chiamare SFC1 per recuperare un dato che OB1 ti fornisce aggiornato automaticamente ad ogni ciclo.

Nell'area dati locali di OB1, a partire dal byte 12, hai una variabile date_and_time che ti indica quando l'OB1 è stato elaborato; di conseguenza basta che confronti i byte locali che ti interessano (solo il giorno, solo il mese, tutta la data, ecc.) con i byte che utilizzi per il confronto (e che, verosimilmente, saranno in una DB) e il gioco è fatto.

Unica accortezza: se devi confrontare il giorno della settimana il byte è condiviso con parte della cifra dei millisecondi, per cui devi fare un mascheramento tramite un AND.

Ciao.

Massimo

Modificato: da bleny
Link al commento
Condividi su altri siti

Ciao melopres,

scusa ma non ho ben capito il senso della domanda. Mi auguro che tu non voglia sapere come fare il confronto tra due numeri altrimenti la gestione della data e dell'ora della cpu è veramente l'ultimo dei tuoi problemi.

Se invece vuoi un esempio di gestione di un'uscita dovresti dire (ovviamente avendolo tu già chiaro in testa) che cosa esattamente vuoi fare.

Vuoi confrontare giorno, mese, anno con ore e minuti o, per esempio, solo il giorno della settimana?

In base a questa risposta sarebbe opportuno, come già ti ha suggerito Gabri.cicchi, utilizzare, anzichè l'OB1, l'OB10 impostato con la stessa frequenza di controllo che ti serve (vuoi controllare la data e l'ora ogni minuto, ogni ora, ogni giorno, ecc.). Questo perchè, se fai il controllo in OB1, continui ad avere un risultato 1 per tutto il tempo in cui il tuo confronto è valido e questo, in alcuni casi, potrebbe dare risultati non voluti.

I dati locali di cui ti ho parlato nel precedente messaggio li trovi in tutti gli OB e quindi il suggerimento che ti ho dato resta sempre valido.

Inoltre tieni presente che i dati nelle variabili date_and_time sono in formato BCD per cui o i dati della tua DB sono anche loro in formato BCD oppure devi fare una conversione prima di effettuare il confronto.

Ciao.

Massimo

Link al commento
Condividi su altri siti

ciao bleny

il mio problema non è confrontare due variabili

ma non ho capito come ottenere l'ora e la data dell'orologio

per poi confrontarle con quello che scrivo su on op7

e attivare un out

come avrai gia intuito non ho molta dimestichezza come ho gia detto in precedenza

infatti ad esempio

nel sfc1

al campo cdt dovrei inserire una variabile dt ma non so come scrivere

grazie e a presto

Link al commento
Condividi su altri siti

Ciao melopres,

non te la prendere, ma mi pare che il problema non sia la poca dimestichezza, ma il non sapere proprio da che parte girarsi. E, inoltre, mi sembra che tu non abbia neanche provato a premere qualche volta il "magico" tasto F1.

Ti ho suggerito di non usare SFC1 e di caricare i dati locali dell'OB (1 o 10 a tua scelta) a partire dal byte 12: qual è la parte che non hai capito?

Se nell'editor clicchi con F1 sul campo OB1_DATE_TIME dell'area dati locali dell'OB ti appare la mappatura completa della variabile.

A questo punto direi che è banale:

L LB12 -> carichi nell'accumulatore il valore BCD dell'anno

L LB13 -> carichi nell'accumulatore il valore BCD del mese

.... e via dicendo.

Secondo me dovresti dedicare un po' di tempo all'approfondimento dei manuali.

Ciao.

Massimo

Link al commento
Condividi su altri siti

grazie per i tuoi chiarimenti

domani vado on-line e faccio qualche prova

caricando le variabili e trasferendole in una db che avevo già creato in precedenza

ciao e grazie

Link al commento
Condividi su altri siti

rieccomi saluti a tutti gli utenti

come al solito con un altro problema

vista la discussione sono riuscito a visualizzare la variabile dt di ob1

e estrapolare anno,mese,giorno...ecc.ecc..

caricando i vari byte ad uno ad uno.

il problema sta nel byte7

che dovrebbe visualizzare il giorno della settimana

ma nel mio caso visualizzo i ms

qualcuno può aiutarmi

grazie

Link al commento
Condividi su altri siti

Come avevo già scritto alla fine del messaggio #12 per estrarre il giorno della settimana devi fare un mascheramento sul byte 7 con un AND.

Per essere precisi bisogna mettere a 0 i bit da 4 a 7.

Ciao.

Massimo

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