Страница 5 из 5 ПерваяПервая ... 345
Показано с 41 по 42 из 42

Тема: Свой таймер

  1. #41
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Измерить время цикла можно и без навороченных таймеров
    Код:
    (*Время цикла*)
    t1:=TIME();
    tCycle:= t1 - tmp;    (*Время цикла*)
    tmp:= t1;
    (*КОНЕЦ ВЫЧИСЛЕНИЯ ВРЕМЕНИ ЦИКЛА*)
    (*
    Здесь строки
    прогграммы
    *)
    tProg:=TIME()-t1;    (*Время выполнения программы*)
    Последняя строка вычисляет время выполнения программы.
    Для вычисления ср, мин, макс. значения можно просто использовать ФБ "STATISTICS_INT" на вход ему подать "Cycle time in 100 mks" из модуля статистики.
    И не будет "Преимущества данного блока перед блоком статистики, который встроен в конфигуратор ПЛК ОВЕН, в том что он измеряет не только время последнего скана, но также минимально, максимальное и среднее".
    Petera, разумеется можно реализовать функции ФБ Timer и TimeStatistic, так как Вы предлагаете.
    Я всего лишь оформил подобную логику в ФБ, который можно использовать.
    Потому что если Вам нужно это сделать один раз, то подойдет и так как предлагаете Вы. Если же у Вас задача во многих местах набрать статистику, то Ваш способ становится уже неудобным.
    Так, например, свой блок статистики я хочу использовать при написании опроса модулей через библиотеку Modbus.lib.
    Каждый раз писать предложенный Вами код или просто вставитить 2 вызова TimeStatistic. Мне кажется, мой вариант проще.

    Плюс еще. Для меня не ясно что будет показывать стандартный блок статистики в случае многозадачности. В случае использования блока TimeStatistic - все ясно.
    Последний раз редактировалось Спорягин Кирилл; 28.08.2015 в 11:20.

  2. #42
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    https://ru.wikipedia.org/wiki/Событи...ограммирование

    Действия в 61131-3 не параметризуются (имеют пустую сигнатуру), а потому находясь в бесконечном цикле не могут напрямую включаться в выражения реакции и, следовательно, вызываться в безусловном режиме (вызывать можно, но в этом не будет практического смысла). Отсюда однократность — вам приходится выбирать момент, чтобы совершить действие один раз, и потом вновь ждать события. Можно, конечно, вызывать действие в течение длительного времени по какому-то условию, но само слово «действие» намекает, что в этом случае вы используете фичу не по назначению. Я считаю, что действия должны быть результатом обработки прерывания. А искусственные прерывания самому себе создавать лишний раз не стоит.
    Егор, спасибо. Доходчиво.

Страница 5 из 5 ПерваяПервая ... 345

Похожие темы

  1. Как оценить свой труд?
    от a_gricaj в разделе Master SCADA 3
    Ответов: 30
    Последнее сообщение: 12.07.2015, 13:20
  2. Ответов: 2
    Последнее сообщение: 18.03.2015, 16:04
  3. Таймер
    от Deoxes в разделе СПК1хх
    Ответов: 8
    Последнее сообщение: 16.07.2014, 12:19
  4. Таймер(ы)
    от AntoNechayuk в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 23.08.2011, 20:39

Ваши права

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