此功能可加快或减慢 RTC 的频率,以控制 RTC 补偿的应用,具体取决于操作环境(温度等)。每周以秒为单位提供补偿值。它可以是正值(加快)或负值(减慢)。
注意: 必须至少调用一次 SetRTCDrift 功能 只能调用一次。每当新调用时,补偿值便会替换为新值。使用主电源或电池对 RTC 供电时,值保留在控制器硬件中。如果电池和电源都被移除,则 RTC 补偿值不可用。
若要查看 IL 或 ST 语言的一般表示形式,请参阅功能和功能块表示形式一章。
下表介绍输入参数:
输入 |
类型 |
注释 |
---|---|---|
RtcDrift |
SINT(-36...+73) |
每周按秒修正 (-36 ... +73)。 |
注意: 参数 Day、Hour 和 Minute 仅用于确保向后兼容。
注意: 如果为 RtcDrift 输入的值超过限制值,则控制器固件将该值设置为其最大值。
下表描述了输出变量:
输出 |
类型 |
注释 |
---|---|---|
SetRTCDrift |
如果命令正常运行,则返回 RTC_OK(十六进制的 00),否则返回检测到的错误的 ID 代码。 |
在此示例中,仅在第一个 MAST 任务循环期间调用此功能一次。它每周加快 RTC 4 秒(一个月 18 秒)。
VAR
MyRTCDrift : SINT (-36...+73) := 0;
MyDay : DAY_OF_WEEK;
MyHour : HOUR;
MyMinute : MINUTE;
END_VAR
IF IsFirstMastCycle() THEN
MyRTCDrift := 4;
MyDay := 0;
MyHour := 0;
MyMinute := 0;
SetRTCDrift(MyRTCDrift, MyDay, MyHour, MyMinute);
END_IF