Показано с 1 по 10 из 738

Тема: Обсуждение макросов для OWEN Logic

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию Набор макросов для работы с временем UNIX

    В начале макрос, который упаковывает стандартные дата_время в 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; 11.09.2016 в 21:34.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #2

    По умолчанию

    Цитата Сообщение от 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) - получаю нормальные значения. Уже не знаю куда копать...

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    То ли лыжи не едут то ли я. petera рассуди. Когда были написаны макросы - тестил в эмуляторе на СПК и ПЛК - всё было нормально. Сегодня залил проекты в реальные ПР и СПК - на выходе и DWORD_TO_DT и DTU.Split получаю 2058 год, месяц и день тоже неправлильные (точно не помню какие). Попробовал функцию извлечения года (petera ранее выкладывал на ПЛК) - то же самое. Вбиваю реальные значения даты-времени (также из фукции от petera) - получаю нормальные значения. Уже не знаю куда копать...
    Для ПР см. описание http://ftp-ow.owen.ru/softupdate/OWE.../UNIX_TIME.pdf
    **- т.к. в программируемых реле значение года может принимать значение от 00 до
    99, то на вход макроса «Год» необходимо подавать значение с добавлением 2000,
    чтоб на входе иметь полный формат года 2016
    А в симуляторе, до недавнего времени, сервисная переменная Год была четырехзначная
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  2. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  3. ПО OWEN Logic !!!
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 11.10.2011, 16:33
  4. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  5. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 21:55

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •