Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

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

  1. #1

    По умолчанию Сравнение времени

    Подскажите пожалуйста, новичку - можно ли оператором IF сравнивать дату и время, записанную в массиве (в виде dt#2011-02-20-18:00:00)с текущей датой и временем? Я не найду, как текущую дату и время можно получить одной строкой в таком же виде, как у меня в массиве, а есть только отдельно день, час, и т.д. (sys_t.Day:=0);

  2. #2

    По умолчанию

    Найдите пример... все встанет на места.
    Я сравнивал день, если да, то часы и минуты.
    Все по отдельности...

  3. #3

    По умолчанию

    Андрей, спасибо, пытаюсь найти.

  4. #4

    По умолчанию

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

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

    Цитата Сообщение от 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

  7. #7
    Пользователь Аватар для 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.

  8. #8

    По умолчанию

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

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

    По умолчанию

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

  10. #10

    По умолчанию

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

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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