PDA

Просмотр полной версии : Работа с импульсами f менее 1 Гц



SkyCatcher
13.04.2025, 14:45
Здравствуйте!
Есть два крыльчатых счетчика воды с импульсным выходом (геркон), заведены каждый на свой дискретный вход ПР100. Требуется подсчитать частоту импульсов на обоих, суммировать и выдать на дискретный выход импульсы с суммарной частотой. Ожидаемая частота от 0,2 до 0,3 Гц у одного и другого. Пытался применить разные макросы частотомеров от форумчан, но на такой низкой частоте (задавал BLINK-ом и тестил в симуляторе) показания сильно плавают. Каким путём посоветуете идти к решению? До генерации импульсов на выходе по вычисленной частоте пока не дошел.

kondor3000
13.04.2025, 15:51
Здравствуйте!
Есть два крыльчатых счетчика воды с импульсным выходом (геркон), заведены каждый на свой дискретный вход ПР100. Требуется подсчитать частоту импульсов на обоих, суммировать и выдать на дискретный выход импульсы с суммарной частотой. Ожидаемая частота от 0,2 до 0,3 Гц у одного и другого. Пытался применить разные макросы частотомеров от форумчан, но на такой низкой частоте (задавал BLINK-ом и тестил в симуляторе) показания сильно плавают. Каким путём посоветуете идти к решению? До генерации импульсов на выходе по вычисленной частоте пока не дошел.

На такой частоте, достаточно поставить R_Trig и счётчик CTN, а выходы сложить. 83071
Или вот проект с 32 битным счётчиком, частотомером и измерением периода

EFrol
13.04.2025, 16:01
Меня когда-то устроил вот такой вариант:
Здесь результат деления записывается в Tl блока BLINK2.
В Th записывается нужная длина выходного импульса.
Получается подсчитывает число импульсов за секунду c обоих входов и задается период между импульсами для генератора,
который выдает подсчитанную сумму на выходе за следующую секунду.

SkyCatcher
13.04.2025, 16:37
Спасибо. Подскажите новичку, какие нужны настройки ОЛ, чтобы float выводились не в экспоненциальной записи, а как у Вас, в десятичной дроби? И макрос Freq из менеджера компонентов?

SkyCatcher
13.04.2025, 16:41
Благодарю. А при настройке Th = 0 в блинке импульс будет? И почему задержка на выходе из SEL, а не на входе?

EFrol
13.04.2025, 16:44
Благодарю. А при настройке Th = 0 в блинке импульс будет? И почему задержка на выходе из SEL, а не на входе?

Th лучше оставить в 0-е, а вот на выход BLINK2 повесить TP с нужной длительностью импульса на выходе.
А также период подсчета взять не 1 сек, а 5 сек, чтобы хотя-бы 1 импульс проскочил (тогда для DIV константу 5000 поставить).

kondor3000
13.04.2025, 16:48
Спасибо. Подскажите новичку, какие нужны настройки ОЛ, чтобы float выводились не в экспоненциальной записи, а как у Вас, в десятичной дроби? И макрос Freq из менеджера компонентов?

Всегда float выводится в экспоненциальном виде, просто у меня в примере получились всего 1 или 2 знака после запятой.
Это можно сделать и самому, умножить на 100, конвертировать в целое (отрежет остальные знаки), конвертировать обратно во float и разделить на 100
Макросы и ФБ на ST в примере , все самописные, с форума или мои.

Тут много примеров на ST https://owen.ru/forum/showthread.php?t=37203&p=426133&viewfull=1#post426133