SetRTCDrift: Establecer el valor de compensación en el RTC

Descripción de la función

Esta función acelera o ralentiza la frecuencia del RTC para dar control a la aplicación para compensar el RTC, en función del entorno de funcionamiento (temperatura, etc.). El valor de compensación se indica en segundos por semana. Puede ser positivo (acelerar) o negativo (ralentizar).

NOTA: La función SetRTCDrift solo debe llamarse una vez. Con cada nueva llamada, se reemplaza el valor de compensación por el nuevo. El valor se mantendrá en el hardware del controlador mientras el RTC reciba alimentación de la red eléctrica o por medio de la batería. Si se retiran la batería y la fuente de alimentación, el valor de compensación del RTC no estará disponible.

Representación gráfica

Representación IL y ST

Para ver la representación general en lenguaje IL o ST, consulte el capítulo Representación de funciones y de bloques de funciones.

Descripción de variables de E/S

En esta tabla se describen los parámetros de entrada:

Entradas

Tipo

Comentario

RtcDrift

SINT (-36..73)

Corrección en segundos por semana (de –36 a +73).

NOTA: Los parámetros Day, Hour y Minute se utilizan únicamente para garantizar la compatibilidad con versiones anteriores.
NOTA: Si el valor introducido para RtcDrift sobrepasa el límite, el firmware del controlador definirá el valor en el máximo.

En esta tabla se describe la variable de salida:

Salida

Tipo

Comentario

SetRTCDrift

RTCSETDRIFT_ERROR

Devuelve RTC_OK (00 hex) si el comando es correcto; en caso contrario, devuelve el código ID del error detectado.

Ejemplo

En este ejemplo, la función únicamente se invoca durante el primer ciclo de la tarea MAST. Acelera el RTC 4 segundos a la semana (18 segundos al mes).

VAR
	MyRTCDrift : SINT (-36..+73) := 0;
	MyDay : sec.DAY_OF_WEEK;
	MyHour : sec.HOUR;
	MyMinute : sec.MINUTE;
END_VAR	
IF IsFirstMastCycle() THEN
	MyRTCDrift := 4;
	MyDay := 0;
	MyHour := 0;
	MyMinute := 0;
	SetRTCDrift(MyRTCDrift, MyDay, MyHour, MyMinute);
END_IF