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

Тема: Извленчение миллисекунд из модуля OwenRTC в ПЛК200

  1. #1

    По умолчанию Извленчение миллисекунд из модуля OwenRTC в ПЛК200

    Здравсвуйте
    Пытаюсь получить время из ПЛК 200 с точностью до миллисекунд, но в поле ms постоянно нули

    DateToStr := OSU.DT_TO_STRING_FORMAT (TargetVars.stRtc.dtDateAndTime, '%t[dd.MM.yyyy]');
    TimeToStr := OSU.DT_TO_STRING_FORMAT (TargetVars.stRtc.dtDateAndTime, '%t[HH:mm:ss.ms]');

    Возможно ли или нужно использовать другие функции?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,616

    По умолчанию

    Цитата Сообщение от Антон_Б Посмотреть сообщение
    Здравсвуйте
    Пытаюсь получить время из ПЛК 200 с точностью до миллисекунд, но в поле ms постоянно нули

    DateToStr := OSU.DT_TO_STRING_FORMAT (TargetVars.stRtc.dtDateAndTime, '%t[dd.MM.yyyy]');
    TimeToStr := OSU.DT_TO_STRING_FORMAT (TargetVars.stRtc.dtDateAndTime, '%t[HH:mm:ss.ms]');

    Возможно ли или нужно использовать другие функции?
    Добрый день.
    В библиотеке Util есть функции GetDateTime и GetLocalDateTime.
    Возвращаемое ими значение нужно домножить на 1000000 и привести к типу LDT.

  3. #3

    По умолчанию

    Спасибо за наводку. Не понятно зачем умножать? У меня так заработало:

    TTime : TIME;
    ulTime : ULINT;

    ulTime := GetDateTime();
    TTime := ULINT_TO_TIME (ulTime);
    TimeToStr := OSU.TIME_TO_STRING_FORMAT (TTime, '%t[HH:mm:ss.ms]');

    Ещё пользовал SysTimeRtcGet( udiResult ); но она без миллисекунд

    * Задача в отображении времени в таблице логирования с миллисекундами *
    Последний раз редактировалось Антон_Б; Вчера в 18:11.

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,616

    По умолчанию

    Не понятно зачем умножать?
    Судя по исходному вопросу - речь шла о системном времени.
    Описанный мной выше вариант подразумевает этот случай.

    ***

    Код:
    TTime := ULINT_TO_TIME (ulTime);
    // Происходит потеря данных - 64-битный ULINT превращается в 32-битный TIME
    // Полученное значение не имеет смысла
    // Но, действительно, разность двух таких значений между собой - это время, прошедшее между двумя вызовами данного фрагмента кода
    Если достаточно относительного времени (системного тика) - то можно использовать для его получения функцию TIME() или канал System Timer из OwenRTC, чтобы обойтись без лишних движений.

  5. #5

    По умолчанию

    Хотел бы получать текущее системное время в ПЛК, вида 19:05:10.389 и это время нужно преобразовать в строку

  6. #6

    По умолчанию

    Цитата Сообщение от Антон_Б Посмотреть сообщение
    Хотел бы получать текущее системное время в ПЛК, вида 19:05:10.389 и это время нужно преобразовать в строку
    Вот так примерно 1 Время с миллиСекундами.jpg

  7. #7

    По умолчанию

    Что интересно , мой вариант работает, а при умножении получается белиберда,да уж у меня время не соответствует
    Изображения Изображения
    Последний раз редактировалось Антон_Б; Вчера в 19:55.

  8. #8

    По умолчанию

    C0032: Cannot convert type 'LDATE_AND_TIME' to type 'DATE_AND_TIME'

    ldtTime : LDT;
    ulTime : ULINT;


    ulTime := GetDateTime() * 1000000;
    ldtTime := ULINT_TO_LDT (ulTime);
    TimeToStr := OSU.DT_TO_STRING_FORMAT (ldtTime, '%t[HH:mm:ss.ms]');

  9. #9
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,616

    По умолчанию

    DT_TO_STRING_FORMAT не поддерживает LDT.
    Можно сделать так:

    Код:
    TimeToStr := TO_STRING(ldtTime);
    и дальше другими функциями обработать строку (убрать префикс, заменить разделители и т. д.).

  10. #10

    По умолчанию

    OwenStringUtil не работает в этом случае?

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

Похожие темы

  1. Узел OwenRTC ПЛК200
    от Pavel_L в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 12.03.2025, 09:11
  2. ПЛК200 и SQL
    от Сема в разделе ПЛК2хх
    Ответов: 4
    Последнее сообщение: 28.11.2024, 15:25
  3. узлы OwenRTC, Watchdog....
    от Votrj1 в разделе СПК210, СПК1xx [М01]
    Ответов: 3
    Последнее сообщение: 27.12.2023, 15:55
  4. ПЛК200 OPC UA
    от evgeni85 в разделе ПЛК2хх
    Ответов: 5
    Последнее сообщение: 13.03.2022, 17:09
  5. Связь модуля вывода и модуля ввода.
    от Linker1989 в разделе Мх210
    Ответов: 27
    Последнее сообщение: 22.05.2020, 09:15

Ваши права

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