Envoyer une requête de synchronisation de l’heure au serveur NTP
Cette instruction FP envoie une requête au serveur NTP pour synchroniser l’heure.
Entrée
Nombre d’essais d’envois de la requête de synchronisation de l’heure
Valeurs : 0–20
Intervalle de synchronisation de l’heure
Valeurs : 16–600
Sortie
Code résultat de l’exécution
16#FFFF |
En cours |
|
16#0 |
Exécution terminée normalement |
|
16#10 |
Erreur démarrage double |
L’instruction qui envoie la requête de synchronisation de l’heure est en cours d’exécution. NOTA Une erreur démarrage double n’apparaît pas lorsque l’instruction est exécutée alors que le nombre d’essais est défini sur 0 pour annuler l’instruction de requête de synchronisation de l’heure. |
16#11 |
Erreur de paramétrage de l’adresse du serveur SNTP |
Paramètres ET-LAN, paramètres de l’adresse du serveur SNTP = "0.0.0.0" |
16#12 |
Erreur de déconnexion |
Ethernet est déconnecté |
16#13 |
Erreur d’activation de l’initialisation Ethernet |
Aucune adresse IP n’a été affectée à l’unité Ethernet qui envoie la requête. (sys_bIsEthernetIPAddressAssigned est FALSE) |
16#14 |
Erreur de paramétrage du nombre d’essais |
Le nombre d’essais spécifié est en dehors de l’intervalle autorisé. |
16#15 |
Erreur de paramétrage de l’intervalle entre les essais |
L'intervalle entre les essais spécifié est en dehors de l'intervalle autorisé. |
16#20 |
Erreur réponse hors délai |
Le temps d’attente défini pour recevoir une réponse à la requête de synchronisation de l’heure est dépassé. NOTA Cette erreur apparaît aussi lorsqu’une adresse IP NTP n’est pas résolue. |
16#30 |
Réponse hors délai de la tâche Ethernet |
Cette erreur apparaît lorsqu’aucune réponse n’est renvoyée par la tâche Ethernet. |
Cette instruction n’est pas disponible dans les programmes d’interruption.
S’il est prévisible que le temps d’attente de synchronisation de l’heure soit dépassé, définissez une valeur supérieure pour nNumberOfRetries.
Pour annuler d’autres tentatives de synchronisation de l’heure, entrez 0 pour nNumberOfRetries. Dans ce cas, le code résultat d’exécution n’est pas sauvegardé dans nResult.
Le temps d’attente pour un essai de synchronisation de l’heure est fixé à 3 secondes.
Lorsque plusieurs essais de synchronisation de l'heure sont spécifiés, une nouvelle requête démarre après que le temps d’attente (3 secondes) ainsi que l’intervalle entre les essais (spécifié par nRetryInterval) sont écoulés.
Le temps d’attente total (secondes) pour la synchronisation de l’heure est obtenu avec la formule suivante : nRetryInterval x 3 + (nRetryInterval x (nNumberOfRetries-1)). (Ici, nNumberOfRetries est supérieur à 0.)
Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
Si l’instruction est exécutée dans un programme d’interruption.
Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
Si l’instruction est exécutée dans un programme d’interruption.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU.Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
bRequestSynchronization: BOOL:=FALSE;
iNumberOfRetries: INT:=3;
iRetryInterval: INT:=20;
wResult: WORD:=0;
bEnable: BOOL:=FALSE;
END_VAR
Lorsque la variable système sys_bIsEthernetInitializing est FALSE et la variable bEnable TRUE, la fonction est exécutée.
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;