Цитата Сообщение от Валенок Посмотреть сообщение
Я. Просто я.
Хоть я и программист, но не забыл физику и математику.
Обратите внимание на размерность частоты : Гц. Они же с^-1
Теорему Котельникова помните?

Теорема Котельникова: ...Разумеется, реальные сигналы (например, звук на цифровом носителе) не обладают такими свойствами, так как они конечны по времени и обычно имеют разрывы во временно́й характеристике. Соответственно, ширина их спектра бесконечна.
Перевожу с русского на русский: в реальном сигнале бесконечно много частотных гармоник.
И их там много не из-за того, что "не бывает источника постоянной частоты", а из-за того, что невозможно измерить сигнал бесконечной длительности.


Цитата Сообщение от Валенок Посмотреть сообщение
А в какой момент мы получаем информацию об очередном герце ? только по фронту импульса.
В другие моменты мы может только фантазировать.
Не существует способа <<получить информацию "о герце">>.
Спектр сигнала можно выяснять математически, но "напрямую снимать герцы" невозможно.
Проблема выяснения плотности вероятности является фундаментальной проблемой в науке: https://en.wikipedia.org/wiki/Kernel_density_estimation
Если бы был известен способ "напрямую снимать герцы", он непременно появился бы в этой статье.


Цитата Сообщение от Валенок Посмотреть сообщение
-------------------------------------
Вот Вам генератор
t(in:=not t.q, pt := t#1s);

...просто прямую частоты. Прям в визуализации. Прям в эмуляции. (на незначительные колебания глаза закрою ессно, всеж нг только/только)))
Увеличим время раза в два - поищем снижение прямой примерно на столько же.
Вот что получается у меня в эмуляторе.
Исходный вариант.
усреднение_60с_1Гц.png

Ну, ждать несколько минут "выхода на режим у меня терпения нет", поэтому на двух следующих я показываю 10с-усреднение.

Вот генератор "1Гц"
усреднение_10с_1Гц.png

Вот генератор "2Гц"
усреднение_10с_2Гц.png

Зоркий глаз заметит, что "1Гц" при усреднении получается 0.9Гц (см первую и вторую картинку -- там last1m равно 0.9).
Как же так? А всё просто: глючит CoDeSys -- неправильно работают таймеры.
На графиках красные линии идут раз в минуту.

1-ая картинка: за чуть большее чем 5 минут время насчиталось 289 импульсов.
Т.е. реальная частота заведомо меньше, чем -- 289/(5*60) == 0.96. Результат усреднения -- 0.9

2-ая картинка: за 4 минуты 225 импульсов. 225/(4*60) == 0.93Гц максимум. Результат усреднения -- 0.9

3-я картинка: за 4 минуты 404 импульса. 404/(4*60) == 1.68Гц. Результат усреднения -- 1.6.


Во всех случаях показатель last1m сошёлся к "delta". Переменная delta -- это количество импульсов за "последние 10 секунд".
Тут я опираюсь на то, что если указал T#10s в task configuration, то считаю, что задача раз в 10 секунд и будет выполняться.
Возможно, не стоит доверять task configuration'у, а при усреднениях явно получать текущее время.