Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя
Показано с 31 по 40 из 42

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

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    при большом желании при превышении интервала более суток можно плюсовать счетчик суток, а из дворда интервала времени вычитать t#1d
    Причем здесь сутки, месяцы нужно рассматривать
    Переполнение TIME() произойдет не при смене суток, а через 49d17h2m47s295ms
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #32

    По умолчанию

    да хоть недели. почему акцент на "нужно" ? я привел пример сохранения расширения интервала наработки) а сутки, недели или месяцы - хоть все сразу в отдельных переменных... в соответствии с требованиями.

  3. #33
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,257

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Причем здесь сутки, месяцы нужно рассматривать
    есть еще фишечка накопленный результат хранить в реале, это увеличит продолжительность подсчета
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  4. #34

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    есть еще фишечка накопленный результат хранить в реале, это увеличит продолжительность подсчета
    а на фишечку в #18 и не глянули)

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    а на фишечку в #18 и не глянули)
    А покурочил-ли то навставляв real'ов ? В смысле в исходном усе было на целых числах ?
    Чего накурочили сами то поняли ?
    Последний раз редактировалось Валенок; 27.08.2015 в 17:41.

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

    По умолчанию

    В теме уже 35 сообщений, хотя просмотров моего примера только 2. Забавно.
    Сделал на основании своего таймера небольшой блок статистики.
    ФБ TimeStatistic позволяет измерять последнее, среднее, минимальное и максимальное время между двумя точками программы.
    Для того чтобы это сделать в первой точке нужно вызвать:
    TimeStatistic.FirstPoint();
    во второй вызвать
    TimeStatistic.SecondPoint();
    В прикрепленном примере измеряется время скана при этом следует обратить внимание, что сначала вызвается SecondPoint, а затем FirstPoint.

    Преимущества данного блока перед блоком статистики, который встроен в конфигуратор ПЛК ОВЕН, в том что он измеряет не только время последнего скана, но также минимально, максимальное и среднее. К тому же в многозадачной системе можно измерять времена скана для каждой задачи.
    Вложения Вложения
    • Тип файла: pro Timer.pro (35.7 Кб, Просмотров: 26)

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

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    А действия в ФБ тяготеют к десктопной однократности, и из-за них приходится ставить IF'ы. В результате растёт цикломатическая сложность программы. И хоть она становится в какой-то мере более читаемой, но читать-то приходится воду. Так что не очень мне по нраву такой подход.
    Егор, а что такое "десктопная однократность"?

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

    По умолчанию

    Цитата Сообщение от SKV Посмотреть сообщение
    В теме уже 35 сообщений, хотя просмотров моего примера только 2. Забавно.
    Сделал на основании своего таймера небольшой блок статистики.
    ФБ TimeStatistic позволяет измерять последнее, среднее, минимальное и максимальное время между двумя точками программы.
    Для того чтобы это сделать в первой точке нужно вызвать:
    TimeStatistic.FirstPoint();
    во второй вызвать
    TimeStatistic.SecondPoint();
    В прикрепленном примере измеряется время скана при этом следует обратить внимание, что сначала вызвается SecondPoint, а затем FirstPoint.

    Преимущества данного блока перед блоком статистики, который встроен в конфигуратор ПЛК ОВЕН, в том что он измеряет не только время последнего скана, но также минимально, максимальное и среднее. К тому же в многозадачной системе можно измерять времена скана для каждой задачи.
    Измерить время цикла можно и без навороченных таймеров
    Код:
    (*Время цикла*)
    t1:=TIME();
    tCycle:= t1 - tmp;    (*Время цикла*)
    tmp:= t1;
    (*КОНЕЦ ВЫЧИСЛЕНИЯ ВРЕМЕНИ ЦИКЛА*)
    (*
    Здесь строки
    прогграммы
    *)
    tProg:=TIME()-t1;    (*Время выполнения программы*)
    Последняя строка вычисляет время выполнения программы.
    Для вычисления ср, мин, макс. значения можно просто использовать ФБ "STATISTICS_INT" на вход ему подать "Cycle time in 100 mks" из модуля статистики.
    И не будет "Преимущества данного блока перед блоком статистики, который встроен в конфигуратор ПЛК ОВЕН, в том что он измеряет не только время последнего скана, но также минимально, максимальное и среднее".
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #39

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А покурочил-ли то навставляв real'ов ? В смысле в исходном усе было на целых числах ?
    Чего накурочили сами то поняли ?
    Рилы и были. переделал интегратор электроэнергии/объема/или_чего_еще под счет ровно 1й единицы в час) если бы не поняли, то это бы не работало, а так - работает. Считает себе наработку насосов.

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

    По умолчанию

    Егор, а что такое "десктопная однократность"?
    https://ru.wikipedia.org/wiki/Событи...ограммирование

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

Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя

Похожие темы

  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

Ваши права

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