Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 25

Тема: Как работать с аппаратными часами ПЛК-100?

  1. #1

    По умолчанию Как работать с аппаратными часами ПЛК-100?

    Необходимо программно считывать показания аппаратных часов реального времени.SysLibRTC не работает.При использовании SysLibTime
    корректное время появляется один раз, после чего часы "стоят"(меняются только микросекунды).Как быть?
    Serhy

  2. #2

    По умолчанию

    Обратите внимание что переменная SystemTime имеет тип VAR_IN_OUT и обращаться к ней нужно через указатели.
    "...Обратите внимание, что переменные вход-выход (VAR_IN_OUT) передаются в экземпляр функцио-
    нального блока через указатели. Поэтому таким переменным нельзя присваивать константы при вызове...".
    Должно все работать.

  3. #3

    По умолчанию

    Для корректной работы SysLibTime, если вы хотите считать данные, то надо обнулить структуру, передаваемую ФБ, иначе будет происходить запись! Это описано в документации.
    Тролль-наседка, добрый, нежный и ласковый

  4. #4
    Пользователь
    Регистрация
    05.05.2007
    Адрес
    Барнаул->Москва
    Сообщений
    139

    По умолчанию

    пример простейший можно? что-то в доке написано как-то..... да и пример из доки у меня не заработал.

  5. #5

    По умолчанию

    Цитата Сообщение от Василий Куц Посмотреть сообщение
    пример простейший можно? что-то в доке написано как-то..... да и пример из доки у меня не заработал.
    Пожалуйста:
    FUNCTION_BLOCK DateAndTimeStr
    ...
    VAR_OUTPUT
    DateStr: STRING;
    ...
    END_VAR
    VAR
    CTimeEX: CurTimeEx;
    SystemTime: SysTime64;
    TimeDate: SystemTimeDate;
    StrTemp1: STRING;
    StrTemp0: STRING;
    END_VAR

    (* получение системного времени *)
    LD 0
    ST TimeDate.Milliseconds
    ST TimeDate.Second
    ST TimeDate.Minute
    ST TimeDate.Hour
    ST TimeDate.Day
    ST TimeDate.DayOfWeek
    ST TimeDate.Month
    ST TimeDate.Year
    ST SystemTime.ulLow
    ST SystemTime.ulHigh
    CAL CTimeEX(SystemTime:=SystemTime, TimeDate:=TimeDate)

    (* подготовка строки "дата" в формате DD Month YYYY (16) *)
    LD TimeDate.Year
    INT_TO_STRING
    ST StrTemp1
    LD DateFormat

    (* вывод названия месяца *)
    LD TimeDate.Month
    SUB 1
    MUX ' января ', ' февр. ', ' марта ', ' апреля ', ' мая ', ' июня ', ' июля ', ' авг. ', ' сент. ', ' окт. ', ' ноября ', ' дек. '
    CONCAT StrTemp1
    ST StrTemp1

    LD TimeDate.Day
    INT_TO_STRING
    INSERT '0', 0
    RIGHT 2
    CONCAT StrTemp1
    ST DateStr

    ну и т.д. для времени.
    Удачи.

  6. #6

    По умолчанию

    В примере выше время конвертируется в строку.
    А как перевести полученные INT-овые дату и время в формат DATE_AND_TIME (в секундах)?

  7. #7

    По умолчанию

    Цитата Сообщение от Vitaly K. Посмотреть сообщение
    В примере выше время конвертируется в строку.
    А как перевести полученные INT-овые дату и время в формат DATE_AND_TIME (в секундах)?
    При переводе целые числа становятся милисекундами.
    Домножаете на нужное значение(например на 100 для получения секунд) и переводите. Но способ, конечно, не слишком удобный.

  8. #8

    По умолчанию

    Время-то таким образом переводить можно. А вот как перевести дату? Нет чёткого алгоритма, на сколько умножать, например, месяцы. Потому что в месяце может быть разное количество дней.
    Или, может быть, кто-то подскажет другой способ получения текущих даты/времени в секундах от 01/01/1970.
    Последний раз редактировалось Vitaly K.; 18.06.2009 в 17:36.

  9. #9

    По умолчанию

    яндекс поможет, существуюет стандартный алгоритм

  10. #10

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    яндекс поможет, существуюет стандартный алгоритм
    Спасибо за исчерпывающий ответ!

    Пока просто строю строку с датой, а потом конвертирую её в тип DT.

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

Ваши права

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