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

Тема: Сравнение времени

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Из собственного примера для вентиляции (была SCADA задействована и панель).
    Определение времени включения\выключения вент. установки от часов.
    Надо в Вашем проекте выполнить команду Импорт из меню Проект и указать путь к разархивированному файлу
    Вложения Вложения
    • Тип файла: rar regim.rar (932 байт, Просмотров: 107)

  2. #2

    По умолчанию

    Спасибо, Андрей. Я немного по-другому сформулирую вопрос: у меня есть массив данных в формате DATE_AND_TIME, (dt#2011-02-21-20:00:00) и я хочу сравнить текущее время (до секунды) с числом в массиве. Я пытаюсь оператором IF сравнить число в массиве с текущим. Вот и вопрос такой - не пойму как сравнить. (Надо брать и сравниваю отдельно текущий системный час с часом в моей константе, забитой в массиве, затем минуте, затем сек. или можно как-то иначе?). Дело в том, что на мое выражение "IF (sys_time.Hour) > massiv[sys_time.Hour]" мне выдается ошибка ( "невозможно преобразовать DT в UINT"). Не пойму в чем ошибаюсь....

  3. #3

    По умолчанию

    Цитата Сообщение от Georgiy Посмотреть сообщение
    Дело в том, что на мое выражение "IF (sys_time.Hour) > massiv[sys_time.Hour]" мне выдается ошибка ( "невозможно преобразовать DT в UINT"). Не пойму в чем ошибаюсь....
    Попробуйте так:
    sys_time.Hour > massiv[wdCounter].sys_time.Hour
    где wdCounter - вордовская переменная указывающая на элемент массива
    и не забываем что по умолчанию нумерация массива начинается с нуля.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  4. #4

    По умолчанию

    Ребята, всем спасибо, разобрался.

  5. #5
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Georgiy Посмотреть сообщение
    Ребята, всем спасибо, разобрался.
    А в ответ рассказать?
    Т.е. сравниваешь по частям (минуты-секунды) или уже знаешь, как из часиков ПЛК получать текущее время в DT?

  6. #6

    По умолчанию

    Долго не мог ответить - времени небыло. Отвечаю своим получившимся фунциональным блоком. Я сначала делаю массив со всему днями года (мне так нужно), потом выбираю из массива сегодняшний день, определяю текущее время (в формате TOD), перевожу его в миллисекунды (DWORD) и беру выбранное из массива время. Тоже перевожу его в миллисекунды и сравниваю. Смотрите мой фунциональный блок.
    Вложения Вложения
    Последний раз редактировалось Georgiy; 06.03.2011 в 20:44.

  7. #7
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Ну, вариант, конечно. Сравниваются, по сути, TOD-константы, записанные в массив, с j - величиной, равной текущему TOD. Для сравнения константы переводятся в формат DWORD.

    И все же, не понимаю, как же из системных часиков, (из sys_t в данном примере) получить время в DT-формате...

  8. #8
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Georgiy Посмотреть сообщение
    я хочу сравнить текущее время (до секунды) с числом в массиве
    +1
    Я тоже с этим столкнулся. Работать со структурами SystemTimeDate и SysTime64 научился, а вот преобразование данных из этих структур пока хромает.

    Сделал специально примерчик, прилагаю, в котором беру время из часиков ПЛК и пробую его преобразовать из "человеко-ориентированного" в "програмно-ориентированный".
    Я называю человеко-ориентированным форматом структуру, в которой есть отдельно данные по секундам, минутам и т.д. А для програмной обработки товарищу Georgiy понадобилось представление в виде DT (фактически, внутренее представление в КДС - DWORD).
    Вот и пробуем.

    Как я понял, структура SysTime64 - именно "програмно-ориентированная. Она ведет отсчет (микросекунды) в огромной 64-битной структуре. Причем отсчет ведется от включения питания ПЛК. Во всяком случае, у меня именно так получается, а нигде в чудесной документации по КДС я иного не нашел.
    Эту структуру (в примере st64) в формат DT преобразовать легко, ибо она "одной крови" с DT - два DWORD и один DWORD.

    А структура std, содержащая настоящее время от 1970 года - как ее красиво преобразовать в формат DT? В моем примерчике, в последней строке поставлен знак вопроса. Хотелось бы от знатоков получить строчку, которая идет за моим знаком вопроса. Или иные правки в моем примере.
    Или - где читать, на худой конец

    Спасибо!
    Вложения Вложения
    Последний раз редактировалось drvlas; 06.03.2011 в 23:46.

Ваши права

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