visualizza l'elenco degli articoli
STEP 7 -- Creazione programma S7 -- Edit di data, ora e contatori
STEP 7 V5.2 - Avvertenze per la commutazione dell'ora opp. per l'impiego dei "miscellaneous blocks"
Come viene calcolato il tempo di funzionamento di un terminale (ad esempio, una pompa) in STEP 7 V5.x?
Che cos'è la Data Giuliana Modificata e come la si può calcolare con STEP7?
Leggere e convertire il tempo restante di un timer
Come si può calcolare un valore in secondi esistente nei corrispondenti giorni, ore, minuti e secondi?
Informazioni sull’argomento " Modifica di data e ora "
Come si può misurare il tempo?
Come si deve programmare un datore di valore di tempo, che in caso di STOP conservi il valore e alla ripresa del conteggio riparta da questo valore memorizzato?
Come si può impostare l'ora in un S7-300 tramite Industrial Ethernet?
Come si possono caricare le funzioni standard IEC FC3, FC6, FC7 e FC8 dalla libreria IEC dello STEP7?
Come si può leggere e digitare la data e l'ora della CPU con l'aiuto delle funzioni IEC?
Come si possono sincronizzare tra loro gli orologi delle CPU?
Come si può contare in avanti e indietro all'interno di un campo di conteggio compreso tra -2147483648 e +2147483647?
Come si possono leggere la data e l'ora con SFC1 (READ_CLK) e di introdurli con SFC0 (SET_CLK)?
Come si può realizzare un timer per "S7", senza utilizzare un "Timer S7"?
STEP 7 V5.2 - Avvertenze per la commutazione dell'ora opp. per l'impiego dei "miscellaneous blocks"
Numero di ordinazione:

DOMANDA
Con quale scopo e come si possono utilizzare i blocchi che si trovano nella "Standard library" nella cartella dei programmi "miscellaneous blocks"?

RISPOSTA
Nella cartella di programmi "miscellaneous blocks"si trovano i blocchi seguenti.

Blocco

Nome simbolico

Funzione

FB60

SET_SW

L’FB60 supporta nella commutazione ora legale/ora solare le CPU che non dispongono dello Stato del tempo. Per questo scopo esso sposta l'orologio della CPU in corrispondenza al momento attuale e alle regole di commutazione del DB di regolazione.

FB61

SET_SW_S

Lo FB61 supporta nella commutazione ora legale/ora solare le CPU che dispongono nello Stato del tempo. Per questo scopo esso sposta lo Stato del tempo in corrispondenza al momento attuale e alle regole di commutazione del DB di regolazione.

FC60

LOC_TIME

Questo FC legge lo Stato del tempo opp. lo stato della CPU e calcola da questo il tempo locale. Esso può quindi essere impiegato correttamente solo sulle CPU che dispongono dello Stato del tempo.

FC61

BT_LT

Questo FC calcola il tempo locale rispetto al tempo base assegnato in ingresso.

FC62

LT_BT

Questo FC calcola il tempo base rispetto al tempo locale assegnato in ingresso.

FC63

S_LTINT

Questo FC imposta l'interrupt di tempo desiderato al momento assegnato. Questo momento viene indicato nel tempo locale.

UDT60

WS_RULES

Tipo dati per il DB di regolazione

FB62

TIMESTMP

Lo FB TIMESTMP trasferisce le segnalazioni dotate di time stamp di una IM 153-2 nel suo DB di istanza dove si trovano i dati per una elaborazione successiva tramite il programma applicativo.

Tabella 1 Panoramica dei blocchi e delle loro funzioni

FB60 (SET_SW)
Lo FB60 (SET_SW) può essere utilizzato nelle CPU che non dispongono dello Stato del tempo e dispongono di SFC100 (SET_CLCKS) (le CPU con lo Stato del tempo utilizzano lo FB61 SET_SW_S).

Lista parametri

Parametro

Dichiarazione

Tipo dati

Descrizione

REQ

INPUT

BOOL

Comando della commutazione

WS_DAT

INPUT

BLOCK_DB

Informazioni sul fuso orario e sulla commutazione ora legale /ora solare (DB di regolazione)

OB_NR

INPUT

INT

Numero degli interrupt di tempo da utilizzare

STATUS

OUTPUT

INT

Codice di errore

ISSUMMER

OUTPUT

BOOL

1 = è ora legale

ANN_1

OUTPUT

BOOL

1 = avviso di una commutazione

Tabella 2 Lista parametri di FB60 (SET_SW)

STATO

Significato

0

Nessun errore

8xyy

Codice di errore generico dello SFC51

8082

Dati non validi in WS_DAT

8083

L'ora di avviso solare si trova prima della legale

8090

OB_NR. non ammesso (ammessi solo interrupt di tempo: OB10 | OB17, in funzione della CPU)

80A2

OB_NR non ammesso: l'OB non è caricato nella CPU

80A3

L'OB non può essere avviato

Tabella 3 Segnalazioni di stato di FB60 (SET_SW)

Lo FB60 (SET_SW) viene richiamato in OB 1 ed in un OB 1x di interrupt di tempo con la stessa istanza. All'ingresso WS_DAT viene indicato il DB che contiene le regole per l'inizio e la fine dell'ora legale. La funzione del blocco si basa sul diagramma del tempo.

Figura 1 FB60 (SET_SW) - rappresentazione schematica del funzionamento

Sono definiti quattro i punti di commutazione (SA, S, WA, W). La loro posizione esatta dipende dalle regole del DB di regolazione. Le ore di annuncio si trovano un'ora prima dei punti di commutazione e segnalano l'imminente commutazione.
Con un fronte di salita sull'ingresso REQ viene inizializzata e attivata la commutazione ora legale/ora solare, che rimane valida fino a quando REQ=1. Per la commutazione del tempo l’FB parametrizza e attiva l’OB di interrupt di tempo indicato con il successivo momento di commutazione della modalità "una volta".
Dopodiché questo OB di interrupt di tempo prende in carico il controllo: al momento opportuno esso modifica l'ora della CPU in corrispondenza al momento di richiamo attuale e parametrizza/attiva se stesso nuovamente con il successivo punto di commutazione.

Esempio
Se il tempo attuale si trova nella sezione (3), l’OB di interrupt di tempo viene parametrizzato con il tempo di avvio WA ("Annuncio ora solare"). Con il fronte di discesa su REQ la commutazione ora legale/ora solare viene disattivata.

Spostamento dell’ora
Uno spostamento dell'ora della CPU (p. es. tramite PG) con FB SET_SW (REQ = 1) attivo è allora consentita senza particolari misure addizionali se il tempo non viene spostato oltre uno dei punti di commutazione.
Se nell'impostazione dell'ora viene saltato uno dei punti di commutazione, la commutazione ora legale/ora solare deve essere disattivata con REQ =0 prima dello spostamento ed essere nuovamente avviata con REQ = 1 dopo lo spostamento.
Nell'impostazione dell'orologio della CPU fare attenzione che in estate si imposta anche l'ora dell'ora legale.

FB61 (SET_SW_S)
Il modo di funzionamento dell'FB61 (SET_SW_S) ed il collegamento è uguale a quello dello FB60 (SET_SW). L'unica differenza è che l'FB61 (SET_SW_S) viene utilizzato con le CPU con lo Stato dell'ora.

FC60 (LOC_TIME)
FC60 legge lo Stato dell'ora ed il tempo della CPU e calcola di conseguenza l'ora locale. Esso quindi può essere utilizzato solo con CPU con lo Stato dell'ora.

Lista parametri

 Parametro

Dichiarazione

Tipo dati

Descrizione

RET_VAL

OUTPUT

INT

Codice di errore

LT

OUTPUT

DATE_AND_TIME

Ora locale (Local Time)

SUMMER

OUTPUT

BOOL

Codice ora legale
(0: solare / 1: legale)

Tabella 4 FC60 (LOC_TIME) - Lista parametri

RET_VAL

LT

SUMMER

Descrizione

0

Ora locale

TRUE/FALSE

Blocco eseguito senza errori

1

Ora locale

TRUE/FALSE

Nessun errore, ma salto della data

8xyy

DT#90-01-01-0:0:0

FALSE

Codice di errore generico dello SFC 51

8091

DT#90-01-01-0:0:0

FALSE

Manca Stato dell'ora

Tabella 5 FC60 (LOC_TIME) - Valori di ritorno

Con l’aiuto dello SFC51 (RDSYSST) dallo Stato dell’ora della CPU vengono letti l’ora base, il valore di correzione ed il segno del valore di correzione. Errori dell’SFC51 portano alla chiusura del blocco, le visualizzazioni di errore vengono trasferite a RET_VAL. Se la CPU non ha alcuno Stato dell'ora valido, il blocco viene concluso con errore. Nello Stato dell'ora della CPU sono depositati il tempo base ed il fuso orario della singola località, un codice di ora legale così come un codice per l'ora di annuncio. Questi valori vengono aggiornati dalla CPU.

Dopo una lettura positiva dello Stato dell'ora, al tempo base vengono aggiunti il fuso orario ed in estate l'ora legale e poi essi sono emessi sull'uscita LT. L'uscita SUMMER prende in carico dallo Stato dell'ora il valore dei bit ora legale/ora solare.

FC61 (BT_LT)
FC 61 calcola l'ora locale rispetto al tempo base assegnato in ingresso.

Lista parametri

Parametro

Dichiarazione

Tipo dati

Descrizione

BT

INPUT

DATE_AND_TIME

Ora base

WS_DAT

INPUT

BLOCK_DB

Informazioni sul fuso orario e sulla commutazione ora legale /ora solare (DB di regolazione)

RET_VAL

OUTPUT

INT

Codice di errore

LT

OUTPUT

DATE_AND_TIME

Ora locale

Tabella 6 FC61 (BT_LT) - Lista parametri

RET_VAL

LT

Descrizione

0

Ora locale

Blocco eseguito senza errore

1

Ora locale

Nessun errore, ma salto della data

8082

DT#90-01-01-0:0:0

Dati non validi nel blocco dati di regolazione

Tabella 7 FC61 (BT_LT) - Valori di ritorno

Il tempo base indicato sull'ingresso BT viene convertito nel tempo locale tramite dati depositati in un DB e poi emesso sull'uscita LT.

FC62 (LT_BT)
L'FC calcola il tempo base in funzione del tempo locale indicato sull'ingresso.

Lista parametri

Parametro

Dichiarazione

Tipo dati

Descrizione

LT

INPUT

DATE_AND_TIME

Ora locale

WS_DAT

INPUT

BLOCK_DB

Informazioni sul fuso orario e sulla commutazione ora legale /ora solare (DB di regolazione)

RET_VAL

OUTPUT

INT

Codice di errore

BT

OUTPUT

DATE_AND_TIME

Ora base

Tabella 8 Lista parametri di FC62 (LT_BT)

RET_VAL

BT

Descrizione

0

Ora base

Blocco eseguito senza errore

1

Ora base

Nessun errore, ma salto della data

2

Ora base

Lo LT in ingresso si trova all'interno della "doppia" ora

3

Ora base

Come 2, in più salto della data

4

Ora base

Lo LT si trova all'interno dell'ora "vietata"

5

Ora base

Come 4, in più salto della data

8082

DT#90-01-01-0:0:0

Dati non validi nel blocco dati di regolazione

Tabella 9 FC62 (LT_BT) - Valori di ritorno

Il tempo locale indicato sull'ingresso LT viene convertito nel tempo base sulla base dei dati depositati in un DB e viene emesso sull'uscita BT. Il DB contiene il numero in unità da 30 minuti con le quali si differenziano il tempo base ed il tempo locale così come la differenza tra ora legale e ora solare, anch'essa in unità da 30 minuti (DB di regolazione). Se nell'effettuazione del calcolo ha luogo un overflow della data, questo viene contrassegnato da un valore di ritorno speciale.

"Ora vietata"
Nella commutazione ora solare /ora legale, il tempo locale viene spostato in avanti di 1 ora. Questo significa però che l'ora che si trova in mezzo non viene percorsa. Per un istante LT all'interno di questa ora durante l'ora legale "pensa" l'FC62 (LT_BT). Questo viene segnalato con il valore di ritorno 4 opp. 5.

"Ora doppia"
Nella commutazione ora legale /ora solare il tempo locale viene spostato all'indietro di 1 ora Questo significa però che 1 ora viene percorsa 2 volte. (Per CET per questo valgono le denominazioni 2A e 2B). Per un istante LT all'interno di questa ora non è possibile una rappresentazione univoca con riferimento il tempo base. Lo FC62 (LT_BT) riceve come parametro ingresso un LT e prima della conversione in BT deve decidere se il valore si trova nel periodo dell'ora legale o nel periodo dell'ora solare. Nel caso in cui LT si trova all'interno della doppia ora, lo LT viene interpretato come ora solare. Questo viene segnalato con i valori di ritorno 2 opp. 3.

FC63 (S_LTINT)
Lo FC rende disponibile l'interrupt di tempo desiderato rispetto all'istante indicato. Questo istante viene indicato in tempo locale (DB di regolazione).

Lista parametri

Parametro

Dichiarazione

Tipo dati

Descrizione

OB_NR

INPUT

INT

N. dell'OB da avviare (ammesso 10 | 17)

SDT

INPUT

DATE_AND_TIME

Data e ora di avvio in ora locale

PERIOD

INPUT

WORD

Periodo dal punto iniziale SDT a:
W#16#0000 = una volta
W#16#0201 = ogni minuto
W#16#0401 = ogni ora
W#16#1001 = giornalmente
W#16#1201 = settimanalmente
W#16#1401 = mensilmente
W#16#1801 = annualmente
W#16#2001 = fine mese

WS_DAT

OUTPUT

BLOCK_DB

Informazioni sul fuso orario così come sulla commutazione ora solare/ora legale

RET_VAL

OUTPUT

INT

Codice di errore

Tabella 10 FC63 (S_LTINT) - Lista parametri

RET_VAL

Descrizione

0

Blocco eseguito senza errori

1

Nessun errore, ma salto della data

2

Lo LT in ingresso era all'interno della "doppia" ora

3

Come 2, in più salto della data

4

Lo LT in ingresso era all'interno dell'ora "vietata"

5

Come 4, in più salto della data

8082

Dati non validi del blocco dati di regolazione

8090

Parametro errato OB_NR

8091

Parametro errato SDT

8092

PERIOD errato

80A1

Il momento di avvio impostato si trova nel passato.

80A2

OB non caricato

80A3

OB non avviabile

Tabella 11 FC63 (S_LTINT) - Valori di ritorno

Il tempo locale LT indicato in ingresso viene convertito nel tempo base sulla base di regole depositate in un DB. Il DB contiene il numero in unità da 30 minuti. Con il tempo base calcolato viene parametrizzato e attivato l'OB di interrupt di tempo indicato. Se nel calcolo si ha un overflow della data, questo viene contrassegnato da un valore di ritorno speciale.

"Ora vietata"
Nella commutazione ora solare /ora legale, il tempo locale viene spostato di 1 ora. Questo significa però che l'ora che si trova all'interno non viene percorsa. Per un istante LT all'interno di questa ora "pensa" lo FC63 (S_LTINT) nel periodo dell'ora legale. Questo viene segnalato con i valori di ritorno (RET_VAL) 4 opp. 5.

"Ora doppia"
Nella commutazione ora legale /ora solare il tempo locale viene spostato all'indietro di 1 ora. Questo significa però che questa ora viene percorsa 2 volte (per CET per questo valgono le denominazioni 2A e 2B).
Per un istante LT all'interno di questa ora non è quindi possibile una immagine univoca con riferimento al tempo base.
Lo FC63 (S_LTINT) riceve come parametro di ingresso un LT e prima della conversione in BT deve decidere se il valore si trova nel periodo dell'ora legale oppure dell'ora solare. Per il caso in cui lo LT si trova all'interno dell'ora doppia, lo LT viene interpretato come ora solare. Questo viene segnalato con i valori di ritorno (RET_VAL) 2 opp. 3.

UDT60
 Il sistema deve preparare in un DB alcune informazioni che vengono analizzate nei diversi blocchi. Questo blocco dati viene creato come DB del tipo UDT60 e in esso vengono registrati i valori validi per la località del sistema (in ora locale!).

Esempio

Nome

Tipo dati

Valore

Descrizione

B2L

STRUCT

-

Conversione Ora base<-> Ora locale e "Impostazione allarme su Ora locale"

S

INT

2

Offset Ora base -> Ora locale (30 min) in inverno, ammesso -24 … +24

T

INT

2

Differenza ora solare e ora legale (30 min), ammesso: 2

W2S

STRUCT

 -

Regola per ora solare -> ora legale.
Standard: ultima domenica di marzo alle 2:00

M

BYTE

B#16#3

Mese della commutazione

W

BYTE

B#16#9

n-esimo comparire del giorno della settimana (1= primo, 2= secondo,.., 9= ultimo)

D

BYTE

B#16#1

Giorno della settimana (Domenica = 1)

H

BYTE

B#16#2

Ora

S2W

STRUCT

-

Regola per ora legale -> ora solare.
Standard: ultima domenica di ottobre alle 3:00

M

BYTE

B#16#10

Mese della commutazione

W

BYTE

B#16#9

n-esimo comparire del giorno della settimana (1= primo, 2= secondo,.., 9= ultimo)

D

BYTE

B#16#1

Giorno della settimana (Domenica = 1)

H

BYTE

B#16#3

Ora

Tabella 12 Configurazione di esempio del DB di regolazione

FB62 (TIMESTMP)
Lo FB62 (TIMESTMP) trasferisce le segnalazioni che sono state generate dalla IM153-2 sulla base delle variazioni sugli ingressi/uscite nel suo DB di istanza. In questo le segnalazioni possono poi essere ulteriormente modificate ed elaborate dal programma applicativo.

Lista parametri

Parametro

Dichiarazione

Tipo dati

Descrizione

LADDR

INPUT

INT

Indirizzo logico (indirizzo di diagnostica) della IM153-2

LADDR2

INPUT

INT

Indirizzo logico (indirizzo di diagnostica) dello slot 2 della IM153-2

TIMECONV

INPUT

BOOL

1= converte time stamp ISP in formato S7-DT

MSG_QTY

OUTPUT

INT

Numero delle segnalazioni valide nel buffer delle segnalazioni

BUFNOTREAD

OUTPUT

INT

Numero dei record di dati della IM153-2 con allarme, ma non ancora letti

READERR

OUPTUT

BOOL

1= errore nella lettura della IM153-2

READSTATUS

OUTPUT

INT

Valore di ritorno dell'SFC59 (RD_REC)

BUFRDY

INPUT/OUTPUT

BOOL

1= buffer delle segnalazioni pronto

MSGLOST

INPUT/OUTPUT

BOOL

1= segnalazioni perdute

MESSAGE

STAT

ARRAY [1..20] OF STRUCT

Buffer delle segnalazioni per max. 20 segnalazioni della IM153-2

  SLOT_NO

 

BYTE

Numero di slot / 2= segnalazione speciale

  CH_NO

 

BYTE

Numero di canale / codice della segnalazione speciale

  SIGNAL

 

BYTE

Stato del segnale / caratteristica della segnalazione speciale

  TIME1

 

DWORD

Secondi da 1900,0 (ISP) / anno, mese, giorno, ora (DT)

  TIME2

 

DWORD

Frazioni di secondo (ISP) / minuto, secondo, millisecondo, giorno della settimana (DT)

Tabella 13 FB 63 (TIMESTMP) - Lista parametri

Modo di funzionamento

  • IM153-2
    La IM153-2 rileva variazioni di segnali binari, assegna loro un time stamp e deposita queste informazioni in record di dati con max. 20 segnalazioni. Con determinati eventi essa emette segnalazioni speciali. Quando un record di dati è pronto per essere prelevato, la IM153-2 genera un interrupt di processo.
  • Richiamo nell'OB di interrupt di processo
    L'FB TIMESTMP legge l'informazione di start dell'OB di interrupt di processo e memorizza l'informazione che riguarda l'assegnazione di time stamp, per una ulteriore elaborazione in un buffer circolare (vedi l'interfaccia della IM153-2). Il blocco può memorizzare i dati di max. 17 interrupt di processo.
  • Richiamo nell'OB ciclico
    Nell'elaborazione ciclica, l'FB TIMESTMP legge il record di dati da prelevare con l'aiuto di SFC59 (RD_REC: Leggi record di dati) e lo memorizza nel buffer delle segnalazioni MESSAGE. Se ci sono diversi record di dati da prelevare, viene letto per primo il più vecchio. Se il bit TIMECONV all'ingresso del blocco è impostato, l'FB TIMESTMP converte tutti i time stamp dal formato ISP nel formato DATE_AND_TIME (DT).

Se il parametro BUFRDY = TRUE, le segnalazioni nel buffer delle segnalazioni possono essere ulteriormente elaborate dal programma applicativo e p. es. possono essere inviate ad un destinatario (apparecchio HMI, stampante). Il numero delle segnalazioni presenti viene visualizzato nel parametro MSG_QTY. Dopo l'elaborazione, il programma applicativo deve resettare BUFRDY, per abilitare il buffer delle segnalazioni per ulteriori segnalazioni. Il parametro BUFNOTREAD visualizza il numero degli interrupt di processo ricevuti, per i quali l'FB TIMESTMP non ha ancora letto alcun record di dati dalla IM153-2. Con EAD = 15 tutti i record di dati della IM153-2 sono stati riempiti. La IM153-2 non riconosce alcuna ulteriore variazione di segnale, per cui si arriva alla perdita di segnalazioni.

Avvertenza
Ulteriori informazioni si trovano anche nella Guida online STEP 7.


 Articolo con ID:15249609   Data:2003-08-20 
Questo articoloè stato utilenon è stato utile                                 
mySupport
My Documentation Manager 
Newsletter 
CAx-Download-Manager 
Support Request
Vai all'articolo
Stampa
Creazione PDF 
Invia l'articolo
QuickLinks
Strumento di compatibilità 
Aiuto
Aiuto on-line
Guided Tour