Как использовать системное время в качестве триггера в лестнице Codesys? - PullRequest
0 голосов
/ 07 апреля 2020

Программирование Raspberry Pi с CodeSys, используя в основном Ladder, в основном мне нужно записать все данные, которые в настоящее время в паре массивов, в CSV-файл в полночь, поэтому я хотел бы иметь возможность использовать значение DT в качестве вызывать. Однако я не могу понять, как использовать это значение в лестнице. Я могу отображать местное время на визуализаторе, но если я хотел что-то вроде «if localTime = # value», тогда включается катушка «Запись», где находится фактическая переменная для системного времени?

1 Ответ

0 голосов
/ 08 апреля 2020

Насколько я знаю, вам нужно прочитать часы из локальной системы, используя функциональные блоки, например 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» будет ИСТИНА в течение всей секунды, поэтому вам, вероятно, следует использовать обнаружение нарастающего фронта.

enter image description here

...