Vai al contenuto
PLC Forum


Calcolo Numero Settimana


Messaggi consigliati

Inserito:

Salve a tutti, sto utilizzando una CPU314 avrei necessità di calcolare il numero della settimana in corso, qualcuno ha già avuto questa necessità, qualche dritta da darmi?

grazie, buona gionatata a tutti


Inserita:

Non conosco Siemens, ma in altri PLC tipo ad es. Premium con Unity di Schneider, esiste una word di sistema che ti dice il numero della settimana:

%SW70
WEEKOFYEAR

Probabilmente esiste anche nel tuo PLC...

Inserita:

In OB1 c'è la variabile locale "OB1_DATE_TIME".

E' una variabile lunga 8 byte così composta:

Byte 0 = Anno 1990-2089 (ultime due cifre)

Byte 1 = Mese 1-12

Byte 2 = Giorno del mese 1-31

Byte 3 = Ora 1-23

Byte 4 = Minuto 1-59

Byte 5 = Secondo 1-59

Byte 6 = Millisecondo 0-99 (decine e centinaia)

Byte 7 bit da 4 a 7 = Millisecondo 0-9 (unità)

Byte 7 bit da 0 a 3 = Giorno della settimana 1-7 (1=Domenica; 7=Sabato)

Tutti i valori sono in BCD.

Trovi tutto nell'aiuto in linea di Step7

La variabile "OB1_DATE_TIME" parte dall'indirizzo LB12.

Se vuoi leggere il giorno della settimana, senza tanti fronzoli, puoi fare come segue:

L LB19

L B#16#F

UW

T "GiornoSettimana"

Dove "GiornoSettimana" è la tua variabile (basta in formato byte) che conterrà un valore da 1 a 7.

Per qualcosa di più sofisticato puoi dare un'occhiata QUI

Inserita: (modificato)

No, se ho ben capito "iig2002" chiedeva il numero della settimana, non il giorno della settimana...

giusto?

Es. questa settimana e' la n.7 dell'anno!

Modificato: da Claudio Monti
Inserita:

esatto , a me serve sapere che oggi siamo nella 7 settimana....

vi ringrazione della vs attenzione

Federico

Inserita:

Scusa, ho letto troppo in fretta la domanda.

Puoi comunque fare sempre riferimento al link che ti riporta all'altra discussione e che, per comodità, riporto nuovamente:

link per sorgenti awl

link per progetto Step7

Nel mio progettino "DataOra.zip" c'è una funzioni equivalente alla funzione Siemens per il calcolo dei giorni dal 01-01-1990.

A differenza di quella Siemens è però completamente aperta e quindi modificabile a piacere.

In particolare, potresti partire dalla mia FC6, che calcola i giorni dal 01-01-1990, e tenere solo la parte per il calcolo dei giorni trascorsi dell'anno in corso (segmento 3).

Se preferisci utilizzare solo funzioni standard, utilizzi due volte la funzione Siemens per il calcolo dei giorni dal 01-01-1990. Una volta calcoli i giorni trascorsi dalla data attuale al 01-01-1990, ed una volta calcoli i giorni trascorsi dal 01-01 dell'anno in corso al 01-01-1990. Per sottrazione calcoli i giorni trascorsi dell'anno in corso. Dividi per 7 e ti trovi la settimana.

Devi solo decidere se approssimare al valore intero inferiore o superiore.

Spero ora di aver dato la risposta giusta ;)

Inserita: (modificato)

Se a qualcuno interessa, ecco il file sorgente di una funzione per il calcolo di giorno e settimana anno in corso per S7-300/400.

ATTENZIONE!!! Compilando il sorgente verrà creata la funzione FC7. Se una funzione con tale numero dovesse essere già presente nel vostro progetto, verrebbe irrimediabilmente sovrascritta.

Effettuate la compilazione in un nuovo progetto, oppure prima della compilazione modificate, nel file sorgente, il numero della funzione che verrà generata.

In ingresso attende sempre una variabile in formato DATE_AND_TIME.

Se si richiama in OB1 in ingresso si può passare direttamente la variabile "OB1_DATE_TIME"

Nella funzione non vengono effettuati controlli sulla validità dei dati in ingresso. Sarà cura del programmatore fare in modo che tali dati siano corretti.

In uscita dà il numero del giorno dell'anno e il numero della settimana dell'anno.

L'ho scritta e provata molto in fretta. Mi sembra che funzioni bene ma non ho eseguito test approfonditi.

Non mi assumo, ovviamente, nessuna responsabilità in caso di funzionamento errato.

Dimenticavo...

Fatene quello che volete. Unica cortesia che chiedo, se usate la funzione senza apportare sostanziali modifiche, non cambiate il nome dell'autore.

Grazie :)

Modificato: da batta
Inserita:

Ottimo ragazzi, questo e' il forum!!!

Complimenti a Batta... :clap:

  • 10 months later...
Inserita:

Grandioso!!

3 click ed ecco il sorgente perfettamente testato.

Grazie mille Batta

Il tuo nome rimarra' nel mio progetto!

Boun Natale

  • 4 months later...
Inserita:

Ciao,

devo aggiungere una protezione SPD all’impianto di casa (una villetta).

Per il classe I ho preso OBO MCD 50-B + MCD 125-B.

Il vano contatore è esterno in una posizione umida: non c’è pericolo di infiltrazione d’acqua (30 cm da terra) ma essendo un box di 60 x 60 cm a sé stante, in inverno è soggetto a forte umidità.

Gli scaricatori sono sensibili all’umidità? cioè è un fattore di precoce deterioramento?

Devo prendere precauzioni particolari per l’umidità ?

Grazie a tutti,

Ciao,

Andrea

Mauro Dalseno
Inserita:

E' sufficente proteggerli con un centralino con portello....

Mauro Dalseno
Inserita:
Grazie Mauro,

sei sempre disponibilissimo!

Purtroppo il tempo e' quello che e'... quando posso dare una mano...

  • 6 years later...
  • Livio Orsini locked this discussione
Inserita:
  1. la discussione è ferma da quasi 7 anni, verificare sempre le date prima di aggiungere messaggi.
  2. Verifica nella sezione esempi di programmazione e nella sezione Up-Download
  3. eventualmente apri una discussione sul probelma che ti in teressa.
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...