Показано с 1 по 9 из 9

Тема: Время в ПЛК

  1. #1

    По умолчанию Время в ПЛК

    Добрый
    Для ведения логов в БД использую системное время контроллера
    Беру его: stRtc.dtDateAndTime
    На каждом цикле делаю вот так, чтобы получить реальное время: GetCurDateTime_DT := DINT_TO_DT(DT_TO_DINT(stRtc.dtDateAndTime) - 10800);
    Видимо, это смещение UTC
    Но несколько десятков раз в сутки всё равно это время уходит на 3 часа меньше, чем на самом деле
    Если бы я просто выводил это время на экран - проблем нет, что 100мс время на экране неверное. Этого даже никто не заметит
    Но я пишу БД - и у меня постоянно выскакивают эти даты на 3 часа меньше, чем нужно.
    Так какое время брать, чтобы всё было нормально?
    1.png
    2.png

    Спасибо

  2. #2

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.

    1. Выполняется ли данное требование?

    2026-09-28_12-37-05.png

    2. Используется ли в проекте компонент OwenArchiver?
    2. Нет
    1. Видимо, нет. MainTask 100мс, ModbusTask 5мс. Время пытаюсь получить в программе внутри MainTask
    3.png
    Последний раз редактировалось aaaSashaMGGU; Вчера в 13:39.

  4. #4

    По умолчанию

    Попробуйте получать время в контексте ModbusTask.
    Если нужно использовать его и в контексте MainTask - то в контексте ModbusTask копируйте его в промежуточную глобальную переменную, и уже ее используйте в других задачах.

  5. #5

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Попробуйте получать время в контексте ModbusTask.
    Если нужно использовать его и в контексте MainTask - то в контексте ModbusTask копируйте его в промежуточную глобальную переменную, и уже ее используйте в других задачах.
    Да, я это по описанию уже понял...
    Проблема в том, что у меня это не код в таске, а функция. И эта функция вызывается и из MainTask, и из мнемосхем, и ещё не пойми откуда, где я уже даже и не помню
    Если "Date And Time" имеет такую особенность со сноской - то можно ведь использовать Format date + Format time?

  6. #6

    По умолчанию

    В общем, сделал пока так, буду наблюдать:
    Код:
    FUNCTION GetCurDateTime_DT: DT //Функция получения значения текущей даты-времени в виде переменной даты-времени
    
    //Внутренние параметры
    VAR
    	Год   : STRING(4); //Год
    	Месяц : STRING(2); //Месяц
    	День  : STRING(2); //День
    	Время : STRING(8); //Время
    END_VAR
    
    //Год, месяц, день, время
    Год   := Right(stRtc.sGetFormatDate, 4);
    Месяц := USINT_TO_STRING(stRtc.usiGetMonth);
    День  := USINT_TO_STRING(stRtc.usiGetDay);
    Время := stRtc.sGetFormatTime;
    
    //Вычисляем итоговый DT
    GetCurDateTime_DT := STRING_TO_DT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT(CONCAT('DT#', Год), '-'), Месяц), '-'), День), '-'), Время));

  7. #7

    По умолчанию

    Цитата Сообщение от aaaSashaMGGU Посмотреть сообщение
    Да, я это по описанию уже понял...
    можно ведь использовать Format date + Format time?
    Да, можно.

  8. #8

    По умолчанию

    Цитата Сообщение от aaaSashaMGGU Посмотреть сообщение
    GetCurDateTime_DT := DINT_TO_DT(DT_TO_DINT(stRtc.dtDateAndTime) - 10800);
    Почему вы использовали знаковое DINT вместо беззнаковых UDINT (DWORD ) в присвоении ?

  9. #9

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Почему вы использовали знаковое DINT вместо беззнаковых UDINT (DWORD ) в присвоении ?
    В 2038м году поменял бы на UDINT
    Ну а так-то, конечно, это было неправильно, согласен

Похожие темы

  1. Ответов: 5
    Последнее сообщение: 23.11.2025, 22:56
  2. СП-315 Время - 00.01.01 00:00 - WTF?
    от Parhelia в разделе СП3хх, СП270
    Ответов: 3
    Последнее сообщение: 19.06.2020, 13:37
  3. Время на ПЛК 150
    от KRUG в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.01.2014, 07:12
  4. логи во время время старта плк
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 26.08.2010, 10:17
  5. Ответов: 21
    Последнее сообщение: 03.03.2009, 16:27

Ваши права

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