
Сообщение от
sng21099
Здравствуйте! Помогите пожалуйста как можно проще решить задачу: Есть процесс, который может длиться несколько дней, а потом переключаться на другой процесс. Я должен сохранить дату и время старта процесса и проверять, прошёл ли срок процесса. Проблема в том, что я не могу никак оседлать syslibtime. Я тут на форуме находил функциональный блок, чтобы вытащить по отдельности часы, минуты, дни и т.д, но мне нужно сохранять именно полный формат Date_And_Time. А как этого добиться - не могу понять. При этом на Codesys 3.5 эту задачу решить можно за минуту. Очень надеюсь на вашу помощь
Из полученных времени и даты по отдельности собираете Дату-Время в формат UnixTime (UDINT или DWORD) , 1 Дата и время.jpg 1 Новое время.jpg
тут функция https://owen.ru/forum/showthread.php?t=37203
2) fDT_to_UT (Время в секундах в формате UNIX) и из него Дату-Время в формате DT
Всего 2 строки
Код:
t_ :=fDT_to_UT(Second,Minute,hour,day,month,year); (* собираете с помощью функции время UnixTime t_:UDINT; например 1730566628 *)
DT1:=DWORD_TO_DT (t_ ); (* Из времени t_:UDINT; получаете Дату и Время в формате DT1: DT; например DT#2024-11-02-16:57:30 *)
Из DT1, так же можно выделить TOD1 : TOD; (Время TOD), конвертация DT_TO_TOD
T2: TIME; (Время TIME ), конвертация TOD_TO_TIME
D1 : DATE; (Дату), конвертация например D1:=DT_TO_DATE(DT1);
Здесь пример работы с биб-кой SysLibTime
5) Работа с библиотекой SysLibTime. Получение реального времени из ПЛК. Задание даты и времени в ПЛК
https://owen.ru/product/codesys_v2/example_program