Richiesta sincronizzazione data e ora da server NTP
Questa istruzione FP invia una richiesta al server NTP per sincronizzare la data e l'ora.
Ingresso
Numero di tentativi di richiesta di sincronizzazione data e ora
Valori: 0–20
Intervallo di sincronizzazione data e ora
Valori: 16–600
Uscita
Codice del risultato di esecuzione
16#FFFF |
In corso |
|
16#0 |
Completamento normale |
|
16#10 |
Errore doppio avvio |
L'istruzione che richiede la sincronizzazione data e ora è in esecuzione. NOTA L'errore doppio avvio non avviene se l'istruzione viene eseguita con il numero di tentativi impostato su 0 per cancellare l'istruzione della richiesta di sincronizzazione data e ora. |
16#11 |
Errore di impostazione indirizzo server SNTP |
Impostazione ET-LAN, impostazione indirizzo server SNTP = "0.0.0.0" |
16#12 |
Errore di disconnessione |
Ethernet disconnesso. |
16#13 |
Errore di inizializzazione Ethernet attivo |
Nessun indirizzo IP è stato assegnato all'unità Ethernet che invia la richiesta. (sys_bIsEthernetIPAddressAssigned è FALSE) |
16#14 |
Errore di impostazione numero di tentativi |
Il numero dei tentativi specificato è fuori intervallo. |
16#15 |
Errore di impostazione intervallo tentativi |
L'intervallo di tentativi specificato è al di fuori dell'intervallo. |
16#20 |
Errore timeout di risposta |
Il tempo di risposta dell'elaborazione della richiesta di sincronizzazione data e ora supera il tempo predefinito. NOTA Questo errore si verifica anche quando un indirizzo IP NTP non è risolto. |
16#30 |
Timeout di risposta task Ethernet |
Questo errore si verifica quando il task Ethernet non restituisce una risposta. |
Questa istruzione non è disponibile nei programmi di interrupt.
Se è possibile prevedere un timeout di sincronizzazione data e ora, impostare nNumberOfRetries su un valore superiore.
Per cancellare altri tentativi di sincronizzazione data e ora, impostare nNumberOfRetries su 0. In questo caso, il codice del risultato di esecuzione non è memorizzato in nResult.
Il periodo di timeout per un tentativo di sincronizzazione data e ora è fissato a 3 secondi.
Quando vengono specificati tentativi di sincronizzazione data e ora multipli, viene avviata una nuova richiesta una volta trascorso il periodo di timeout (3 secondi), più l'intervallo di elaborazione (specificato da nRetryInterval).
Il periodo di timeout totale (secondi) per la sincronizzazione data e ora si ottiene con la seguente formula: nRetryInterval x 3 + (nRetryInterval x (nNumberOfRetries-1)). (Qui nNumberOfRetries è più grande di 0.)
se l'area specificata utilizzando il registro indice eccede il limite.
se l'istruzione viene eseguita in un programma di interrupt
se l'area specificata utilizzando il registro indice eccede il limite.
se l'istruzione viene eseguita in un programma di interrupt
All input and output variables used for programming this function have been declared in the POU header.The same POU header is used for all programming languages.
VAR
bRequestSynchronization: BOOL:=FALSE;
iNumberOfRetries: INT:=3;
iRetryInterval: INT:=20;
wResult: WORD:=0;
bEnable: BOOL:=FALSE;
END_VAR
When the system variable sys_bIsEthernetInitializing is FALSE and the variable bEnable is set to TRUE, the function is carried out.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,sys_bIsEthernetInitializing,6,1,8,3,N);
B(B_CONTACT,,bEnable,15,1,17,3,);
B(B_F,FP_NTP_SYNCHRONIZE!,,22,0,35,5,,?DEN?DnNumberOfRetries?DnRetryInterval?AENO?AnResult);
B(B_VARIN,,iNumberOfRetries,20,2,22,4,);
B(B_VAROUT,,wResult,35,2,37,4,);
B(B_VARIN,,iRetryInterval,20,3,22,5,);
L(1,0,1,5);
L(1,2,6,2);
L(8,2,15,2);
L(17,2,22,2);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if NOT (sys_bIsEthernetInitializing) AND (bEnable) then
FP_NTP_SYNCHRONIZE(nNumberOfRetries := iNumberOfRetries,
nRetryInterval := iRetryInterval,
nResult => wResult);
end_if;