Насколько я знаю, вам нужно прочитать часы из локальной системы, используя функциональные блоки, например GetDateAndTime
из CAA DTUtil Extern Library . Затем вам необходимо поддерживать его в актуальном состоянии, используя функциональный блок, например RTC
из Стандартная библиотека
. Далее читается системное местное время, а затем обновляется с помощью RTC
функциональный блок. Работает по крайней мере на Windows, не может тестировать с Raspberry. Обратите внимание, что если местное время по какой-то причине изменится, оно не будет обновляться снова. Таким образом, вам нужно время от времени запускать вызов GetDateAndTime
, например.
Сначала программа, которая обновляет и предоставляет местное время:
PROGRAM PRG_UpdateSystemTime
VAR_OUTPUT
SystemDateTime : DT;
END_VAR
VAR
ReadLocalTime : DTU.GetDateAndTime; //Reads local time from system
RtcBlock : RTC; //Real-time clock - updates the previously received local time
END_VAR
//NOTE: Output is UTC time
//The block that reads local time. NOTE: Error handling is missing
ReadLocalTime(xExecute:= TRUE);
//Running real-time clock
RtcBlock(
EN := ReadLocalTime.xDone AND NOT ReadLocalTime.xError,
PDT := ReadLocalTime.dtDateAndTime,
CDT => SystemDateTime
);
А затем один пример для лестница. Я думаю, что есть миллионы способов. Обратите внимание, что «DoSomething» будет ИСТИНА в течение всей секунды, поэтому вам, вероятно, следует использовать обнаружение нарастающего фронта.