SetRTCDrift:为 RTC 设置补偿值

功能描述

此功能可加快或减慢 RTC 的频率,以控制 RTC 补偿的应用,具体取决于操作环境(温度等)。每周以秒为单位提供补偿值。它可以是正值(加快)或负值(减慢)。

注: SetRTCDrift 功能只能调用一次。每次调用时,都会将补偿值替换为新值。使用主电源或电池对 RTC 供电时,值保留在控制器硬件中。如果电池和电源都被移除,则 RTC 补偿值不可用。

图形表示形式

IL 和 ST 表示形式

若要查看 IL 或 ST 语言的一般表示形式,请参阅功能和功能块表示形式一章。

I/O 变量描述

下表介绍输入参数:

输入

类型

注释

RtcDrift

SINT (-36..73)

每周按秒修正 (-36 ... +73)。

注: 参数 DayHourMinute 仅用于确保向后兼容。
注: 如果为 RtcDrift 输入的值超过限制值,则控制器固件将该值设置为其最大值。

下表描述了输出变量:

输出

类型

注释

SetRTCDrift

RTCSETDRIFT_ERROR

如果命令正常运行,则返回 RTC_OK(十六进制的 00),否则返回检测到的错误的 ID 代码。

示例

在此示例中,仅在第一个 MAST 任务循环期间调用此功能一次。它每周加快 RTC 4 秒(一个月 18 秒)。

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