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

Тема: ПЛК100 миллисекунды

  1. #1

    По умолчанию ПЛК100 миллисекунды

    День добрый подскажите пожалуйста новичку.
    Есть ПЛК100 Р-М
    нужно узнать текущую дату время с точностью до миллисекунд

    Если сделать стандартный код(найденный на просторах форума)
    TimeAndDate.Day :=0;
    TimeAndDate.DayOfWeek :=0;
    TimeAndDate.dwHighMsec :=0;
    TimeAndDate.dwLowMSecs :=0;
    TimeAndDate.Milliseconds:=0;
    TimeAndDate.Minute :=0;
    TimeAndDate.Second :=0;
    TimeAndDate.Hour :=0;
    TimeAndDate.Year :=0;
    TimeAndDate.Month :=0;
    Sys_time.ulHigh :=0;
    Sys_time.ulLow :=0;
    GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

    миллисекунды (TimeAndDate.Milliseconds) всегда равны 0
    Последний раз редактировалось leming495; 02.12.2015 в 18:42.

  2. #2

    По умолчанию

    Миллисекунды необходимо высчитывать из переменной Sys_time.ulLow.

  3. #3

    По умолчанию

    Спасибо
    А значение Sys_time.ulLow начинает отсчет с какого времени ?

  4. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от leming495 Посмотреть сообщение
    Спасибо
    А значение Sys_time.ulLow начинает отсчет с какого времени ?
    с полуночи (00:00:00 UTC) 1 января 1970 года (четверг)
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5

    По умолчанию

    А подскажите пожалуйста, как лучше эти миллисекунды сконвертировать в число (int,Dint,Lint). Пробовал Dword_to_Dint, получал на выходе совсем не то, что показывает отладчик.

  6. #6

    По умолчанию

    1.jpg
    Что-то у меня не получается с 1970г. Получается от момента включения контроллера после долгого выключения(для наглядности в переменные скопировал значения чтоб ровно одно под другим было).
    Секунда бежит в 4й позиции слева, то есть прошло всего 1815 секунд.
    Причём, вчера выключал и сразу включал контроллер, данные не обнулялись. Сегодня контроллер ночь постоял выключенный и данные о миллисекундах обнулились. И вчера TimeAndDate.dwLowMSecs не были равны Sys_time.ulLow, а сегодня уже равны(за исключением того что Sys_time.ulLow более точно).

  7. #7

    По умолчанию

    все правильно, я Вас немного обманул )).
    Переменные структуры SysTime64 (ulLow и ulHigh) - это время работы ПЛК в мкс от включения. Т.к. после отключения питания программа в ПЛК100 продолжает выполняться до 10мин, эти переменные не обнуляются при кратковременном (менее 10 мин) отключении питания.
    Миллисекунды системного времени хранятся в структуре SystemTimeDate, извлечь их можно из переменной dwLowMSec:
    mms:=std.dwLowMSecs-(std.dwLowMSecs/1000)*1000;

  8. #8

    По умолчанию

    Спасибо большое за информацию (в том числе и о 10ти минутах) и за пример.

  9. #9
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Интересно, сколько мсек выполняется код для получения в строку времени с точностью до мсек

Похожие темы

  1. Соединение ПЛК100 с ПЛК100
    от maks-tver в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 09.06.2020, 16:05
  2. Продам ПЛК100-24.P-L и ПЛК100-220.P-L
    от victor_al в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 22.10.2013, 16:49
  3. ПЛК100 К-М и ПЛК100 Р-М перенос проекта
    от Malyshevsergey в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 05.09.2012, 00:13
  4. Миллисекунды в SysLibTime
    от Leonid в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 14.03.2010, 10:35
  5. ПЛК100-32 & ПЛК100-64
    от AVit в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 12.08.2008, 10:36

Ваши права

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