Vai al contenuto
PLC Forum


Variabili di data ed ora in PLC S7-300


Giancarlo Foresi Noia

Messaggi consigliati

Giancarlo Foresi Noia

Salve a tutti,

esistono delle variabili per acquisire  data ed ora?

Ad esempio per quanto riguarda l'orario corrente, moltiplicare per 100 le ore e poi aggiungere i minuti per ottenere un numero che va dal valore 0 al valore 2359.

Esistono delle variabili di sistema?

 

Grazie

Link al commento
Condividi su altri siti


Si.

Puoi usare la SFC1...

 

 CALL  SFC    1
       RET_VAL:=#NotUse
       CDT    :=#PLC_DATE_TIME

      
 

Modificato: da drn5
Link al commento
Condividi su altri siti

Variabile "date and time" 

Forse ho scritto in modo errato.

Cerca nella guida in linea sfc1. Leggerai che tipo di variabile utilizzare. Se ricordo bene ci sono poi altri SFC per estrarre i vari elementi. 

La variabile comunque può essere splittata a byte; ogni byte contiene i vari elementi. Nella guida trovi come è composta la variabile.

Link al commento
Condividi su altri siti

Giancarlo Foresi Noia
14 ore fa, ken ha scritto:

Variabile "date and time" 

Forse ho scritto in modo errato.

Cerca nella guida in linea sfc1. Leggerai che tipo di variabile utilizzare. Se ricordo bene ci sono poi altri SFC per estrarre i vari elementi. 

La variabile comunque può essere splittata a byte; ogni byte contiene i vari elementi. Nella guida trovi come è composta la variabile.

Grazie.

17 ore fa, drn5 ha scritto:

Si.

Puoi usare la SFC1...

 

 CALL  SFC    1
       RET_VAL:=#NotUse
       CDT    :=#PLC_DATE_TIME

      
Grazie.

 

Link al commento
Condividi su altri siti

Salve, 

la data è l'ora, li hai sempre a portata di mano in qualsiasi funzione lei abbia necessità d'utilizzo.

Come ben sai, ogni funzione viene chiamato nei blocchi organizzativi che contengono le variabili locale del sistema Date_And _Time, di conseguenza, non hai bisogno di richiamare blocchi esterni occupando risorse inutilmente.

 

Sotto un esempio velocissimo:

      L     P#12.0
      L     DW#16#87000000
      OD    
      LAR1  
      L     W [AR1,P#0.0]
      T     #DT_YEAR

      L     B [AR1,P#1.0]
      T     #DT_MONTH

      L     B [AR1,P#2.0]
      T     #DT_DAY

      L     B [AR1,P#3.0]
      T     #DT_HOUR

      L     B [AR1,P#4.0]
      T     #DT_MIN

      L     B [AR1,P#5.0]
      T     #DT_SEC

A disposizione per chiarimenti.

 

 

Link al commento
Condividi su altri siti

Perché caricare nel registro indirizzi un numero, quando si può fare riferimento al nome della variabile?

 

      LAR1  P##DATE_TIME
      L B [ AR1 , P#0.0 ]
      T     #anno
      L B [ AR1 , P#1.0 ]
      T     #mese
	....
	....
	....

 

Link al commento
Condividi su altri siti

9 minuti fa, batta ha scritto:

Perché caricare nel registro indirizzi un numero, quando si può fare riferimento al nome della variabile?

 


      LAR1  P##DATE_TIME
      L B [ AR1 , P#0.0 ]
      T     #anno
      L B [ AR1 , P#1.0 ]
      T     #mese
	....
	....
	....

 

LAR1  P##DATE_TIME da chi viene alimentata questa variabile, con la data del sistema?

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ciao

il buon Batta si riveriva che scrivere:

LAR1 L12

equivale a :

LAR1 P##DATE_TIME

Perché come da te detto:

Quote

ogni funzione viene chiamato nei blocchi organizzativi che contengono le variabili locale del sistema Date_And _Time

 

E visto che OB di cui parli è OB1, nelle variabili che mette a disposizione con indirizzo 12 c'è appunto la variabile DATE_TIME, che può essere puntata utilizzando il nome.

 

Saluti  

Link al commento
Condividi su altri siti

Salve, 

 

solo per precisare il vostro modo operandus da profano...

Se legge bene, ho scritto in qualsiasi blocco organizzativo, non solo in OB1.

 

Il mio codice, lo potresti chiamare in qualsiasi FC o Fb,  ti ritorna sempre il valore della data del sistema.

Prova chiamare in una fc o fb:

LAR1 L12

 

Se poi voi fate l'operazioni nei blocchi organizzativi, rimango molto perplesso delle vostre conoscenze!!

 

Ripeto anche e lei la domanda: chi alimenta con la data&ora in un fc o fb la variabile temporanea L12?

 

Per quanto riguarda la domanda del "esperto plc", perché caricare un numero nel registro... quei numeri hanno una determinata funzione che lei ovviamente non sa!
 

Link al commento
Condividi su altri siti

15 ore fa, SHKODRAN ha scritto:

solo per precisare il vostro modo operandus da profano...

Già... Lavoro su S7 solo da 25 anni... Ma, probabilmente, sono un po' duro e non ho ancora capito come si usi. Al massimo, ci faccio un marcia/arresto, o accendo le lucine dell'albero di Natale. Ma solo se mi ci metto di impegno!

 

15 ore fa, SHKODRAN ha scritto:

Il mio codice, lo potresti chiamare in qualsiasi FC o Fb,  ti ritorna sempre il valore della data del sistema.

Non credo proprio.

Il tuo codice funziona solo in un blocco richiamato da un OB, perché con DW#16#87000000 imposti l'area di memoria dei "dati locali precedenti", ovvero quelli del blocco da cui viene richiamato il blocco in elaborazione.
Quindi, quando richiami un FB o un FC direttamente da un OB, tutto funziona, perché non fai altro che andare a leggere le variabili TEMP dell'OB a partire dal byte 12, ovvero la variabile OBxxx_DATE_TIME.

Però se il blocco con questo codice non viene richiamato direttamente da un OB, ma all'interno di un altro FB o FC, non funziona più!!!

 

15 ore fa, SHKODRAN ha scritto:

Se poi voi fate l'operazioni nei blocchi organizzativi, rimango molto perplesso delle vostre conoscenze!!

Nel 300-400, gli OB hanno delle variabili che sono messe lì apposta per essere usate. Non si tratta di fare chissà quali macchinose operazioni in un OB, ma solo di andare a leggere dati utili.

Nel caso di data/ora, potresti semplicemente, in OB1, prendere i dati della variabile OB1_DATE_TIME ed appoggiarli in un DB, in modo da renderli disponibili a tutto il programma, ed anche all'esterno.
Se poi a te piace di più fare la stessa cosa all'interno di un FC, il quale FC non fa altro che andare a leggere la variabiel DATE_TIME dall'OB che l'ha richiamato, il tutto scrivendo un codice che è anche meno intuitivo, libero di farlo, ma non dare dell'incompetente a chi preferisce strade meno astruse!

 

15 ore fa, SHKODRAN ha scritto:

Ripeto anche e lei la domanda: chi alimenta con la data&ora in un fc o fb la variabile temporanea L12?

Penso di aver risposto in modo esaustivo ma, se tu hai una risposta migliore, illuminami!

 

15 ore fa, SHKODRAN ha scritto:

Per quanto riguarda la domanda del "esperto plc", perché caricare un numero nel registro... quei numeri hanno una determinata funzione che lei ovviamente non sa!

Io non so certamente tutto ma, su questo argomento, quello in difetto non sono io.

 

Shkodran, si può sapere che ti ha preso? Sei stato punto da un calabrone? Credo di aver dimostrato che quacosina di S7 ne so ma, a parte questo, anche se io avessi sparato le più immani cazzate, cosa ti fa pensare di avere il diritto di scrivere ciò che hai scritto?

 

Modificato: da batta
Link al commento
Condividi su altri siti

Concordo in pieno con quanto esposto da Batta, vorrei solo aggiungere, che di "pasticci" con le variabili TEMP ne ho visti a tonnellate, e la giustificazione più usata è sempre:

"ha sempre funzionato, il problema non è li".

 

Saluti  

Link al commento
Condividi su altri siti

12 minuti fa, TravelMen ha scritto:

"ha sempre funzionato, il problema non è li".

 

Questa è la tipica giustificazione di chi non sa perchè una determinata cosa (qualche volta) funziona. Qunado capita la volta che non funziona si va a pensare a chissà quale arcano invece di investigare dove è la vera natura del problema.

 

 

21 ore fa, SHKODRAN ha scritto:

Per quanto riguarda la domanda del "esperto plc", perché caricare un numero nel registro... quei numeri hanno una determinata funzione che lei ovviamente non sa!

 

I latini affermavano: "Est modus in rebus", ovvero c'è modo e modo per fare certe asserzioni.

Dare dell'incompetente ad una persona, che ha dimostrato, da anni, la sua profonda conoscenza dei PLCSiemens, non è il modo migliore per approcciare il problema.

Anche ammesso, per pura ipotesi dialettica, che Batta avesse affermato qaulche cosa di inesatto non giustifica la patente di incompetenza, specie se chi fa certe affermazioni pare essere un "novizio".

Link al commento
Condividi su altri siti

Il 27/9/2020 alle 12:21 , batta ha scritto:

Attendevo una replica ma, chissà perché, non è arrivata.

Forse perché sta leggendo il manuale, che é un buon inizio.

Link al commento
Condividi su altri siti

Il 27/9/2020 alle 12:21 , batta ha scritto:

Attendevo una replica ma, chissà perché, non è arrivata.

Sono impegnato in un progetto, non ho molto tempo per il forum; sorry,

Link al commento
Condividi su altri siti

Il 29/9/2020 alle 10:47 , TravelMen ha scritto:

Forse perché sta leggendo il manuale, che é un buon inizio.

Sono di questa tipologia 383 messaggi in questo forum?
Renditi utile alla comunità, non sprecare tempo in sciocchezze!! La sua risposta impertinente, la distingue come un lecchino...

Ti anticipo che, dove la sua intelligenza finisce, inizia la mia!!

Link al commento
Condividi su altri siti

Livio Migliaresi

@SHKODRAN

Visto che sei un mostro di intelligenza e che, purtroppo, molti di noi sono ben piccola cosa, mi chiedo perché mai frequenti ancora il Forum!!!

 

 

Link al commento
Condividi su altri siti

Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...