Цитата Сообщение от petera Посмотреть сообщение
В начале макрос, который упаковывает стандартные дата_время в UNIX формат ( в кодесис это формат DATA_AND_TIME).
Захват-1.png
На выходе собственно упакованное DT и на двух дополнительных выходах - младший и старший WORD этого самого DT.
Выход DT можно использовать в самом ПР, например расчитывать интервалы для событий реального времени, например для вкл/выкл по расписанию. Ведь DT можно складывать, вычитать и сравнивать между собой, т.к. любое DT это всего лишь число секунд с 0 часов 1 января 1970г.
К выходам Lo_wDT и Hi_wDT нужно подключать две сетевые переменные с последовательными адресами, тогда панель или скада или ПЛК смогут прочитать DT как переменную DWORD.
Захват-F.png
ВНИМАНИЕ.
Т.к. в ПР не поддерживается работа со знаковыми целыми числами, макрос будет корректно работать только с даты "эры Unix" - с 0 часов 1 января 1970г. Зато не будет проблемы 2038г, когда 19 января 2038 многие системы сойдут сума и время у них потечет вспять. У нас, в макросе, эра Unix закончится 5 февраля 2106г.

Теперь макросы, которые позволяют использовать в программах это самое Unix-время.
Захват-6.png

Захват-7.png

ЗЫ.
Пришлось пост разбить на части. Больше 8 картинок прикрепить нельзя
То ли лыжи не едут то ли я. petera рассуди. Когда были написаны макросы - тестил в эмуляторе на СПК и ПЛК - всё было нормально. Сегодня залил проекты в реальные ПР и СПК - на выходе и DWORD_TO_DT и DTU.Split получаю 2058 год, месяц и день тоже неправлильные (точно не помню какие). Попробовал функцию извлечения года (petera ранее выкладывал на ПЛК) - то же самое. Вбиваю реальные значения даты-времени (также из фукции от petera) - получаю нормальные значения. Уже не знаю куда копать...