FP_NTP_SYNCHRONIZE

Solicitar la sincronización horaria del servidor NTP

Esta instrucción FP envía una solicitud al servidor NTP para sincronizar la hora.

Parámetros

Entrada

nNumberOfRetries (WORD, INT, UINT)

Número de reintentos de solicitud de sincronización horaria

Valores: 0–20

nRetryInterval (WORD, INT, UINT)

Intervalo de sincronización horaria

Valores: 16–600

Salida

nResult (WORD, INT, UINT)

Código de resultado de ejecución

16#FFFF

En curso

16#0

Finalización normal

16#10

Error de doble arranque

Se está ejecutando la instrucción que solicita la sincronización horaria.

NOTA

El error de doble arranque no se produce cuando la instrucción se ejecuta con el número de reintentos fijado en 0 para cancelar la instrucción de solicitud de sincronización horaria.

16#11

Error de configuración de la dirección del servidor SNTP

Configuración ET-LAN, configuración de la dirección del servidor SNTP = "0.0.0.0"

16#12

Error de desconexión

Ethernet está desconectado.

16#13

Error de inicialización activa de Ethernet

No se ha asignado ninguna dirección IP a la unidad Ethernet que envía la solicitud. (sys_bIsEthernetIPAddressAssigned es FALSE)

16#14

Error de configuración del número de reintentos

El número de reintentos especificado está fuera de rango.

16#15

Error de configuración del intervalo de reintentos

El intervalo de reintentos especificado está fuera de rango.

16#20

Error de tiempo de espera de respuesta

El tiempo de respuesta del procesamiento de la solicitud de sincronización horaria supera el tiempo predefinido.

NOTA

Este error también se produce cuando no se resuelve una dirección IP NTP.

16#30

Tiempo de espera de respuesta de la tarea Ethernet

Este error se produce cuando no se devuelve ninguna respuesta de la tarea Ethernet.

Observaciones

  • Esta instrucción no está disponible en los programas de interrupción.

  • Si es previsible que el tiempo de sincronización se agote, ajustar nNumberOfRetries a un valor más alto.

  • Para cancelar otros intentos de sincronización de la hora, ajustar nNumberOfRetries a 0. En este caso, el código de resultado de la ejecución no se guarda en nResult.

  • El tiempo de espera para un intento de sincronización horaria está fijado en 3 segundos.

  • Cuando se especifican varios intentos de sincronización horaria, se inicia una nueva solicitud una vez transcurrido el tiempo de espera (3 segundos) más el intervalo de procesamiento (especificado por nRetryInterval).

  • El tiempo de espera total (segundos) para la sincronización horaria se obtiene con la siguiente fórmula: nRetryInterval x 3 + (nRetryInterval x (nNumberOfRetries-1)). (Aquí, nNumberOfRetries es mayor que 0.)

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si la instrucción se ejecuta en un programa de interrupción

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si la instrucción se ejecuta en un programa de interrupción

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU.Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		bRequestSynchronization: BOOL:=FALSE;
		iNumberOfRetries: INT:=3;
		iRetryInterval: INT:=20;
		wResult: WORD:=0;
		bEnable: BOOL:=FALSE;
			END_VAR

Cuerpo LD

Cuando la variable del sistema sys_bIsEthernetInitializing está a FALSE y la variable bEnable pasa a TRUE, se ejecuta la función.

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

Cuerpo en ST

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

Modificado el: 2024-03-08Comentarios sobre esta páginaLínea directa de Panasonic