Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: СПК207. Системное время. Функции "GetDateAndTime" и "SetDateAndTime". Ошибка 5802.

  1. #11

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Время с выхода .dtDateAndTime можно забирать только когда .xDone=TRUE.
    Считывание времени занимает не один цикл, а несколько.

    Код:
    IF GDaT.xDone THEN
       SysTime:=GDaT.dtDateAndTime;
    END_IF;
    Проблема в том что пока IF сработает, у меня произойдет несколько проходов программы, а мне надо несколько 2-4 раза в одном проходе программы вызывать это время. Получается этот проход идет меньше одной секунды и пока .Done<>TRUE , он мне выплевывает ноль.

  2. #12

    По умолчанию

    В пределах одного прохода программы значение времени не изменяется с точки зрения контроллера. Каждый проход обычно занимает 10-20 миллисекунд, у вас время в таблице отображается с точностью до секунд. Вероятно, вам надо в пределах программы в нескольких местах использовать значение времени? Но для этого достаточно считать его один раз за проход.

    Я еще раз рекомендую посмотреть пример из документа СПК. Визуализация - возможно, он решит ваши вопросы.

  3. #13

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Рекомендую пример 11.2.5 из документа СПК. Визуализация - он как раз соответствует вашей задаче.
    Ок, Спасибо!
    Я с него начинал. Дело в том что там 1 запрос в 2 секунды, а у меня 4 запроса в менее чем 1 сек. Я похоже решил проблему. Буду сравнивать с нулевым временем и присваивать предыдущее значение если оно равно нулю.
    Еще раз спасибо! 2 дня пучил мозг, с Вашей помощью дело сдвинулось с мертвой точки!

  4. #14

    По умолчанию

    Подскажите пожалуйста как корректно объявить переменную типа DT?
    NullDateTimeT:='DT#1970-00-00-00:00:00';
    пишет что константа NullDateTime слишком велика для DT.

  5. #15

    По умолчанию

    NullDateTime: DT:=DT#1970-00-00-00:00:00;

  6. #16

    По умолчанию

    Надо так:

    Код:
    nullDateTime: DT:=DT#1970-01-01-00:00:00;
    Нулября и нуледельника не существует же.

    Но, на самом деле, можно переменную типа DT просто сравнивать с 0 - результат будет тем же.

  7. #17

    По умолчанию

    Блин, точно! Спасибо! Глаза замылились совсем очевидных вещей не замечаю...

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Ответов: 49
    Последнее сообщение: 06.08.2015, 14:38
  2. Ответов: 20
    Последнее сообщение: 15.04.2015, 11:02
  3. Ответов: 7
    Последнее сообщение: 27.02.2013, 19:08
  4. как выбрать управление "прямое" или "обратное"
    от maxmore в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2010, 10:13

Ваши права

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