Вход

Просмотр полной версии : Подсчет частоты вращения вала



IIeroniux
27.10.2014, 11:21
День добрый. Обращаюсь за помощью.

Стоит задача, используя ПЛК ОВЕН 160 и индуктивный датчик типа ВБИ (компании Сенсор) подсчитать частоту вращения вала двигателя и передать её в ПЛК, ну а далее по ПИД закону в виде уставки в преобразователь частоты.
Обороты двигателя от 0 до 2820 об/мин. Датчик устанавливается на валу двигателя, реагирует на установленную "родную" шпонку.

Написал программу подсчета частоты, ориентируясь на количество импульсов, пришедших на счетный вход за интервал времени (в моем случае 30 сек.) Метод работает прекрасно за исключением того, что при обнулении количества импульсов (а происходит это раз в 30 секунд) частота плавает в диапазоне +/- 30% первые 3 секунды, пока не наберется достаточно количество импульсов для точного подсчета.

Пробовал оценивать частоту с помощью измерения времени между импульсами. Но в связи с тем, что минимальная длительность импульса в CodeSys 1 мс, то время между импульсами постоянно плавает между 19 мс и 20 мс, или 70 мс и 71 мс. На 50 Гц это приводит к тому, что частота плавает между 50 Гц и 52,6 Гц.

Штатный блок из util.lib прыгает абсолютно также, только 48.6 Гц или 50 Гц.

Собственно каким образом можно усовершенствовать мой модуль подсчета частоты, опираясь на количество импульсов? Каким то образом усреднять выходное значение? Или поставить фильтр, не пропускающий частоту на выход, если она резко прыгнула на 5%, к примеру. Но на реальном объекте возможны такие прыжки, в таком случае не получится правильно подстроить скорость?

Проект прилагаю. Спасибо

lara197a
27.10.2014, 11:36
поставьте тахометр ТХ1
у него уже есть выход ток или напряжение.

lara197a
27.10.2014, 11:42
ну и пример в помощь

Newcomer
27.10.2014, 11:46
Все предельно просто. У любого нормального ПЧ есть управление скоростью по частотному входу. Вот туда и заведи сигнал с датчика.

lara197a
27.10.2014, 12:05
Блин пропустил, что у Вас ПЧ.
Прямо на него импульсы и заводите, как
Newcomer
Пользователь
советует.

IIeroniux
27.10.2014, 13:12
Итак. ПЧ у нас не нормальный, импульсного управления не имеет.
Внешний тахометр нормальный вариант + низкая стоимость. Иначе придется покупать модуль расширения для подключения энкодера, сам энкодер + работа механиков.
Блок частотомера посмотрел, столкнулся с тем же, что и у меня.
Для интервала измерения в 2 секунды счетчик один раз посчитает 95 импульсов, а иной раз 96. В связи с этим этим дискретность +/- 0,5 Гц. Если увеличивать время - увеличиться инерционность системы. Вообщем не вариант.
Всем спасибо за внимание.

ByuT
26.05.2015, 07:23
Пробовал оценивать частоту с помощью измерения времени между импульсами.
Подскажите, пожалуйста, как Вы измеряете время между импульсами?

Владимир Ситников
10.01.2016, 19:02
Блок частотомера посмотрел, столкнулся с тем же, что и у меня.
Для интервала измерения в 2 секунды счетчик один раз посчитает 95 импульсов, а иной раз 96. В связи с этим этим дискретность +/- 0,5 Гц. Если увеличивать время - увеличиться инерционность системы. Вообщем не вариант.

Сглаживать пробовали?

Например, так: http://www.owen.ru/forum/showthread.php?t=23057&p=192195&viewfull=1#post192195

Что-нибудь в духе "считать количество импульсов каждые 0.2 сек" (будет где-то 10штук), и обрабатывать экспоненциальным сглаживанием с нужной вам инерционностью.

rapucha
11.01.2016, 04:40
Ну вобщем да, вместо обнуления каждые 30 секунд лучше непрерывно вычислять "скользящее" среднее по последним N измерениям. Возможно по такому закону, чтобы более ранние измерения давали меньший вклад, а свежие -- больший.

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

Сергей0308
11.01.2016, 06:35
Всё самое хорошее уже насоветовали, остаётся предложить измерять время не между каждым импульсом, а время поступления например 50 импульсов, абсолютная погрешность останется 1 мс, а относительная уменьшится в 50 раз!

Scream
11.01.2016, 08:59
Вскользь прочел тему, делал на ПЛК 160 и индуктивном датчике на валу двигателя подсчет оборотов, у меня было 3 лопатки на валу, для точности.
Подключал к одному из первых четырех входов и эти входа переводил в режим Fast Counters, получаем число каждый цикл.

Каждый цикл в течении 1 секунды складывал это число, по истечению секунды по тригеру пересчитывал и получал обороты, тоже до 2800 у нас.
Таким образом мы имеем вполне хорошее число оборотов обновляемое каждую секунду.

p.s. покупать еще тахометр имея такой плк - глупо, имхо.