Причем здесь сутки, месяцы нужно рассматривать
Цитата:
Переполнение TIME() произойдет не при смене суток, а через 49d17h2m47s295ms
Вид для печати
да хоть недели. почему акцент на "нужно" ? я привел пример сохранения расширения интервала наработки) а сутки, недели или месяцы - хоть все сразу в отдельных переменных... в соответствии с требованиями.
В теме уже 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://ru.wikipedia.org/wiki/Событи...ограммированиеЦитата:
Егор, а что такое "десктопная однократность"?
Действия в 61131-3 не параметризуются (имеют пустую сигнатуру), а потому находясь в бесконечном цикле не могут напрямую включаться в выражения реакции и, следовательно, вызываться в безусловном режиме (вызывать можно, но в этом не будет практического смысла). Отсюда однократность — вам приходится выбирать момент, чтобы совершить действие один раз, и потом вновь ждать события. Можно, конечно, вызывать действие в течение длительного времени по какому-то условию, но само слово «действие» намекает, что в этом случае вы используете фичу не по назначению. Я считаю, что действия должны быть результатом обработки прерывания. А искусственные прерывания самому себе создавать лишний раз не стоит.