Подскажите тогда, если не сложно. Пользуясь этим флагом, как прочитать текущее время только 1 раз при старте программы? В конечном счете хочу инициализировать часы реального времени.
Я попробовал таким образом:
Код:
PROGRAM PLC_PRG
VAR
(* флаг подачи питания *)
START: BOOL:= FALSE;
InternalRTC: RTC; (* часы реального времени *)
Error: DTU.ERROR;
GetTime: DTU.GetDateAndTime;
CurrentDateTime: DT;
RT_TIME:R_TRIG;
Set:BOOL;
END_VAR
(*Получаем системное время в формате DATE_AND_TIME*)
RT_TIME(CLK:=GetTime.xDone);
IF NOT START THEN
GetTime(xExecute:= NOT(GetTime.xDone));
START:=TRUE;
END_IF;
IF RT_TIME.Q AND GetTime.xBusy=FALSE AND GetTime.xError=FALSE AND GetTime.eError=0 THEN
CurrentDateTime:=GetTime.dtDateAndTime;
END_IF
InternalRTC(EN:=START, PDT:=CurrentDateTime(*DT#2006-03-30-14:00:00*), Q=>VarBOOL2, CDT=>VarTimeCur);
Но CurrentDateTime не меняется.