Définir l’heure de synchronisation pour le serveur NTP
Cette instruction FP définit l’heure à laquelle la synchronisation de l’heure avec le serveur NTP doit être exécutée automatiquement.
Entrée
Indique l’heure à laquelle la synchronisation de l’heure avec le serveur NTP doit être exécutée automatiquement.
L’heure est définie avec le ou les mots-clés suivants :
Synchronisation quotidienne (paramètre optionnel)
Mot-clé : DAY
Syntaxe : 'DAY=xxx'
Valeurs : DISABLE, HHMM
HH=heures (0–23), MM=minutes (0–59)
Exemples :
Pas de synchronisation quotidienne : 'DAY=DISABLE'
Quotidienne à 13h30 : 'DAY=1330'
Synchronisation hebdomadaire (paramètre optionnel)
Mot-clé : WEEK
Syntaxe : 'WEEK=xxxxx'
Valeurs : DISABLE, WHHMM
W=jour de la semaine (0=Dimanche, 1=Lundi, 2=Mardi, 3=Mercredi, 4=Jeudi, 5=Vendredi, 6=Samedi), HH=heures (0–23), MM=minutes (0–59)
Exemples :
Pas de synchronisation hebdomadaire 'WEEK=DISABLE'
Tous les dimanches à 23h59 : 'WEEK=02359'
Synchronisation mensuelle (paramètre optionnel)
Mot-clé : MONTH
Syntaxe : 'MONTH,xxxxxx'
Valeurs : DISABLE, DDHHMM
DD=jour (0–28), HH=heures (0–23), MM=minutes (0–59)
Exemples :
Pas de synchronisation mensuelle : 'MONTH=DISABLE'
Tous les 15 du mois à 15h30 : 'MONTH=150330'
Sortie
Définie sur TRUE lorsque l’opération se termine anormalement sans exécution, par ex. lorsque sys_bIsEthernetInitializing est TRUE
Lorsqu’une erreur apparaît, utilisez la variable système sys_iEthernetConnectionErrorCode pour connaître le numéro de code d’erreur.
Cette instruction n’est pas disponible dans les programmes d’interruption.
L’ordre des mots-clés ne doit pas être modifié. Spécifiez les mots-clés et leurs paramètres dans l’ordre indiqué ici.
Une partie de la syntaxe des paramètres peut être omise. Lorsqu’ils sont omis partiellement, les paramètres restent inchangés.
Lorsque la partie avant un mot-clé spécifié est omise, seul le mot-clé peut être omis mais pas la virgule "," séparant les mots-clés : ',,MONTH=150300'
.
Lorsque la partie après un mot-clé spécifié est omise, le mot-clé et la virgule "," doivent être omis : 'DAY=1130,WEEK=DISABLE'
.
N’indiquez pas le même mot-clé plus d’une fois. Si le même mot-clé apparaît plusieurs fois, une erreur apparaît.
L’heure de la requête de synchronisation de l’heure pour le serveur NTP est définie par sSynchronizeTime.
Les données qui sont déjà définies dans les registres système ( ) sont invalides et la requête de synchronisation de l'heure NTP est exécutée à l’heure spécifée par cette instruction.
L’automate retourne aux paramètres des registres système dans les cas suivants :
L’automate est mis hors tension.
L’automate bascule du Mode PROG au Mode RUN.
Vous changez de projet.
Les paramètres ne sont pas perdus même lorsque l’instruction FP_IPV4_SET_ADDRESS est exécutée.
Avant d’exécuter l’instruction, vérifiez que sys_bIsEthernetInitializing est FALSE. sys_bIsEthernetInitializing passe à TRUE lorsque l’instruction est exécutée. Lorsque l’instruction est exécutée alors que sys_bIsEthernetInitializing est TRUE, une erreur apparaît.
Lorsque l’instruction a été exécutée avec succès, les variables système sys_bIsCarry et sys_iEthernetConnectionErrorCode sont réinitialisées.
Lorsqu’une erreur apparaît, utilisez la variable système sys_iEthernetConnectionErrorCode pour connaître le numéro de code d’erreur.
Si une valeur spécifiée pour un paramètre est en dehors de l’intervalle autorisé.
Si l’instruction est exécutée dans un programme d’interruption.
Si la synchronisation de l’heure à partir du serveur NTP est en cours.
Si une valeur spécifiée pour un paramètre est en dehors de l’intervalle autorisé.
Si l’instruction est exécutée dans un programme d’interruption.
Si la synchronisation de l’heure à partir du serveur NTP est en cours.
Si l’instruction est exécutée pendant l’initialisation d’Ethernet, sys_iEthernetConnectionErrorCode est définie sur "11 : initialisation Ethernet en cours".
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
sSynchronizeTime: STRING[32]:='DAY=1130,WEEK=62345,MONTH=280200';
bIsError: BOOL:=FALSE;
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,2,8,4,N);
B(B_CONTACT,,bEnable,14,2,16,4,);
B(B_F,FP_NTP_SET_SYNCHRONIZE_TIME!,,22,1,38,5,,?DEN?DsSynchronizeTime?AENO?AbError);
B(B_VARIN,,sSynchronizeTime,20,3,22,5,);
B(B_VAROUT,,bIsError,38,3,40,5,);
L(1,0,1,5);
L(1,3,6,3);
L(8,3,14,3);
L(16,3,22,3);
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_SET_SYNCHRONIZE_TIME(sSynchronizeTime := sSynchronizeTime,
bError => bIsError);
end_if;