FP_NTP_SYNCHRONIZE

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.

Paramètres

Entrée

nNumberOfRetries (WORD, INT, UINT)

Nombre d’essais d’envois de la requête de synchronisation de l’heure

Valeurs : 0–20

nRetryInterval (WORD, INT, UINT)

Intervalle de synchronisation de l’heure

Valeurs : 16–600

Sortie

nResult (WORD, INT, UINT)

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.

Remarques

  • 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.)

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • 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.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • 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.

Exemple

En-tête du POU

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

Corps en LD

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

Corps en ST

if NOT (sys_bIsEthernetInitializing) AND (bEnable) then
    FP_NTP_SYNCHRONIZE(nNumberOfRetries := iNumberOfRetries,
    nRetryInterval := iRetryInterval,
    nResult => wResult);
end_if;

Modifié le : 2024-03-08Commentaires sur cette pageAssistance téléphonique