да хоть недели. почему акцент на "нужно" ? я привел пример сохранения расширения интервала наработки) а сутки, недели или месяцы - хоть все сразу в отдельных переменных... в соответствии с требованиями.
да хоть недели. почему акцент на "нужно" ? я привел пример сохранения расширения интервала наработки) а сутки, недели или месяцы - хоть все сразу в отдельных переменных... в соответствии с требованиями.
В теме уже 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
Petera, разумеется можно реализовать функции ФБ Timer и TimeStatistic, так как Вы предлагаете.
Я всего лишь оформил подобную логику в ФБ, который можно использовать.
Потому что если Вам нужно это сделать один раз, то подойдет и так как предлагаете Вы. Если же у Вас задача во многих местах набрать статистику, то Ваш способ становится уже неудобным.
Так, например, свой блок статистики я хочу использовать при написании опроса модулей через библиотеку Modbus.lib.
Каждый раз писать предложенный Вами код или просто вставитить 2 вызова TimeStatistic. Мне кажется, мой вариант проще.
Плюс еще. Для меня не ясно что будет показывать стандартный блок статистики в случае многозадачности. В случае использования блока TimeStatistic - все ясно.
Последний раз редактировалось Спорягин Кирилл; 28.08.2015 в 11:20.
https://ru.wikipedia.org/wiki/Событи...ограммированиеЕгор, а что такое "десктопная однократность"?
Действия в 61131-3 не параметризуются (имеют пустую сигнатуру), а потому находясь в бесконечном цикле не могут напрямую включаться в выражения реакции и, следовательно, вызываться в безусловном режиме (вызывать можно, но в этом не будет практического смысла). Отсюда однократность — вам приходится выбирать момент, чтобы совершить действие один раз, и потом вновь ждать события. Можно, конечно, вызывать действие в течение длительного времени по какому-то условию, но само слово «действие» намекает, что в этом случае вы используете фичу не по назначению. Я считаю, что действия должны быть результатом обработки прерывания. А искусственные прерывания самому себе создавать лишний раз не стоит.
всего лишь подбиваю уйти от трещетки и работать с накоплением времени а не импульсов )