Страница 351 из 1049 ПерваяПервая ... 251301341349350351352353361401451851 ... ПоследняяПоследняя
Показано с 3,501 по 3,510 из 10486

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #3501
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    код на выходе которого будет показывать время в секундах от начала события
    Меня интересует событие: "Наступил 1970-й год, товарищи!"
    То есть, начальное значение этого счетчика нужно установить, зная кол-во секунд от того "события" до момента установления этого счетчика. А если мы умеем узнавать, сколько же секунд прошло, то зачем нам счетчик?

    2 petera: в тех функциях для двух месяцев ошибочка. Не зря я не люблю такие хитрые вычисления...
    Да, и еще есть ошибочки. Ща буду проверять.

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

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Ну так и фиг с ним.
    Попробую изложить, как я понял:
    В ПЛК100 (говорю только о нем, ибо понимаю, что все очень разнится) есть реальные часики, тикающие от аккумулятора. Обращения к ним на уровне библиотек я знаю только одни: через ФБ CurTime и CurTimeEx из SysLibTime.lib. При нулевом наборе аргументов время-дата считывается, при ненулевом - записывается.
    И всьо... Время в ПЛК таким образом есть. Оно доступно из структуры SystemTimeDate в "человеческом" формате. Для получения "асболютного времени" (в формате POSIX), безусловно более удобном для операций сравнения, вычитания, упорядочения, необходимо что-то предпринимать.
    Один способ - реализация RTC, имеющего прямо выход CDT в нужном формате. На ПЛК100 это не работает (или у меня кривые руки). Если ее делать на основе ФБ TON, то это значит - сначала установить время-дату из энергонезависимых часиков, а потом отмерять его на таймере. На мой непросвещенный взгляд это ничем не лучше прямого пересчета из данных структуры SDT из ФБ CurTimeEx.
    Доклад окончил
    Вложение 16604
    Обратите внимание: данные функции работают синхронно. В определенных целевых системах операция чтения часов реального времени может быть достаточно длительной.
    Используйте функциональный блок RTC, включенный в стандартную библиотеку CoDeSys. RTC отсчитывает дату и время на основании явно заданного при его инициализации значения.
    Значит использование RTC из стандартной библиотеки или самописного разницы нет. Стандартный RTC тоже нужно инициализировать после включения ПЛК. Наверно он тоже не обращается напрямую к системным часам, а использует другой механизм, например, как у функции TIME()

    А для получения значения "асболютного времени" нужна библиотека SysLibRtc.lib, а такой для ОВЕНа нет. По этому придется использовать SysLibTime.lib и ручками собирать такое время из структуры SystemTimeDate в "человеческий формат".
    ЗЫ.
    ФБ CurTimeEx, выполняющий у нас роль RTC, не принимает эту дату. Легко установил, что этот ФБ не принимает дату с годом менее 2000
    Есть у этого ФБ ограничения и на максимальный год, не помню точно значение, когда делал ввод времени с панели http://www.owen.ru/forum/showthread....l=1#post156821, то пришлось задать пределы ввода для года 2000-2100
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3503
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Хорош страдать. Вот TimeExp2.lib с функцией DATETIME, которая возвращает текущее время и дату в DT (юних-тайм в случае ПЛК1xx).

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

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Хорош страдать. Вот TimeExp2.lib с функцией DATETIME, которая возвращает текущее время и дату в DT (юних-тайм в случае ПЛК1xx).
    И что в ней такого особенного?
    Внутри те же функции и ф.блоки, что и в приведенной выше статье http://prolog-plc.ru/docs/TimeExperience.pdf, только коментарии на английском.
    Даже fbRTC один в один. А функция DATETIME, которая возвращает текущее время и дату в DT (юних-тайм в случае ПЛК1xx), использует выше приведенные вычисления по упаковке времени из структуры SystemTimeDate в "человеческий формат".
    А
    drvlas, хотел обойтись без оных вычислений и получать системное время сразу в формате DT из аппаратных часов, пологая, что стандартный фб. RTC так и делает.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #3505

  6. #3506
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    И что в ней такого особенного?
    Внутри те же функции и ф.блоки, что и в приведенной выше статье
    Ну... Не скажите, коллега.
    Во-первых, авторитет Yegor-а заставил меня повнимательнее посмотреть все эти примеры. оказалось, что полезно. Например, полная и сокращенная версии определения високосного года - от меня как-то раньше ускользнуло. Хотя, канешна, меня вполне устраивает и работоспособность с 2000 по 2100 годы
    Кроме того, посмотрел, что дни в целом количестве месяцев текущего года там считаются именно так, как я хотел - по таблице. Правда, я тупо сделал 2 таблицы, а там вызывается функция IsLeapYear.
    А вот функция DaysToYear сделана красивше, чем в той SOCAT (где сплошные подвыверты) и чем сделал я. Ща проверю и возьму на вооружение.
    Ну, и код из ссылки Yegor-а мне еще предстоит понять.

    И хотя модуль RТC мне таки да не нужен, как говорят в нашей Одессе, но пересчет данных структуры SystemTimeDate в POSIX-time віглядит все лучше и лучше. Так что, спасибо за подсказку и Yegor-у тоже!

  7. #3507
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    TimeExp2.lib с функцией DATETIME, которая возвращает текущее время и дату в DT
    А ка ей на вход чтой-то подать? Не вижу VAR_INPUT

  8. #3508
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    А ей не надо ничего на вход подавать. Она только текущее дату-время возвращает.
    Код:
    now := DATETIME(); (* где now: DT *)

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

    По умолчанию

    Не знаю, почему у drvlas стандартный RTC не работает

    У меня работает, причем как я и предполагал DT на выходе RTC ни как не связано с часами ПЛК.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #3510
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    А ей не надо ничего на вход подавать
    Подумал об этом, но не успел проверить. Загрузил сначала первую либу, потом накатил вторую, а они конфликтуют...
    Ну, в общем да, это оно. Теперь у меня бегут 4 варианта этого "абсолютного времени", и что интересно - все показывают одно и то же. Кстати, об ошибках в оскате я поспешил заявить Сам табличку дней в месяцах с ошибкой сделал - кто ж ее смотрел, по памяти...
    Осталось сделать выбор. В общем-то, подгрузить либу TomeExp2.lib не так уж и расходно, поэтому метод DATETIME() рулит по простоте использования.
    С вами очень весело, коллеги, но пора заняться работой У нас сейчас много чего меняется в налоговом поле, народ ошалел от всего этого, юристы впихивают в договора совершенно невпихуемые дурости. Приходится заниматься словоблудием до боли в зубах...

    Всего хорошего, успехов всем в мирном труде!

Страница 351 из 1049 ПерваяПервая ... 251301341349350351352353361401451851 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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