PDA

Просмотр полной версии : Цифровой фильтр аналогового сигнала,измерение веса



skinnbatter
01.06.2017, 21:28
Доброго времени суток всем!
Собираю весовой терминал и столкнулся с некоторыми проблемами. Есть ПЛК, готовая платформа с тензодатчиком и модуль измерения аналогового сигнала. При написании программы возникла следующая проблема, при внешних вибрация измеренная величина постоянно прыгает во втором знаке после запятой :mad:, а точность нужна до сотых грамма.Как понимаю необходим программный фильтр по входу сигнала. Подскажите может быть какой то готовый блок или пример на ST. Пробовал усреднять скользящим средним, набегает ошибка и сотый разряд постоянно скачет(((
Заранее всем спасибо!

sergeykrylov
02.06.2017, 21:08
какой такой модуль измерения аналогового сигнала?

mf_
03.06.2017, 20:56
точность нужна до сотых грамма.Как понимаю необходим программный фильтр по входу сигнала.
Все что вы будете делать программно - искуственное ограничение точности. Разбирайтесь с железом, чтобы не вибрировало и не прыгало.

skinnbatter
04.06.2017, 11:42
Датчик: 1-канальный модуль аналогового ввода для мостов резисторов (тензометрический датчик).
Да вибраций особых нет, но очень большая чувствительность, поэтому при написании программы не могу точно выставить ноль. Пробовал фильтры среднего скользящего и FIW фильтр всёравно не помогает. Может какой вариант подскажите как искусственно загрубить эти скачки, чтобы система не чувствительна была к ним, т.к числа после десятого разряда постоянно меняются, хотя платформа в покое находится.

lazy
05.06.2017, 12:09
на сколько делений тензодатчик и как он откалиброван? если 3000 делений и НПН, скажем, 100 кг естественно, ни а каких "сотых грамма" не может быть и речи.

Дмитрий Вилесов
05.06.2017, 13:59
Выясните частоту Ваших пульсаций для начала. От этой цифры можно уже плясать.

Irgy
06.06.2017, 09:39
https://habrahabr.ru/post/166693/

любая фильтрация так или иначе приносит в жертву точность, для начала исключите все возможные физические факторы, влияющие на стабильность сигнала

petera
06.06.2017, 11:43
Датчик: 1-канальный модуль аналогового ввода для мостов резисторов (тензометрический датчик).
Да вибраций особых нет, но очень большая чувствительность, поэтому при написании программы не могу точно выставить ноль. Пробовал фильтры среднего скользящего и FIW фильтр всёравно не помогает. Может какой вариант подскажите как искусственно загрубить эти скачки, чтобы система не чувствительна была к ним, т.к числа после десятого разряда постоянно меняются, хотя платформа в покое находится.
Попробуйте в Real уменьшить число знаков после запятой до двух.
В библиотеке OSCAT есть ф-ция ROUND(in,N), выгядит она почти так:


FUNCTION ROUND : REAL
VAR_INPUT
in : REAL;
N : INT;
END_VAR
VAR
X: REAL;
DECADES : ARRAY[0..8] OF REAL := 1.0,10.0,100.0,1000.0,10000.0,10000.0,100000.0,100 0000.0,10000000.0;
END_VAR

X :=DECADES[LIMIT(0,N,8)];
ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;

in - входной сигнал
N - число знаков после запятой (0 ... 8)

Пример до "сотых" :
Y = ROUND(X, 2);

skinnbatter
06.06.2017, 16:14
на сколько делений тензодатчик и как он откалиброван? если 3000 делений и НПН, скажем, 100 кг естественно, ни а каких "сотых грамма" не может быть и речи.

Более подробно по оборудованию, весы (платформа и тензодатчтк без терминала просто выходы с платформы) ТЕНЗО М ВПА-100-1: https://www.tenso-m.ru/jelektronnye-vesy/platformennye-napolnye-vesy/22/#1

нагрузка MAX=100..MIN=0.4;
e=d 0,02кг;
значение предельной нагрузки 125кг;
пределы допускаемой абсолютной погрешности +\- 0,04 Кг
Класс точности 3

Тензодатчик "Тензо М" T40A-0.15C3

По поводу округления пробовал не помогает...так как третья цифра меняется постоянно ,соотвественно и результат окгругления то же.

Сема
16.10.2017, 16:49
Добрый день, коллеги.

А где находятся фильтры скользящего среднего, да и вообще? Просто нужно программно фильтровать сигнал. Где искать, подскажите пожалуйста.

lazy
18.10.2017, 22:54
нагрузка MAX=100..MIN=0.4;
e=d 0,02кг;

У вас дискрета 20 грамм - это в принципе разряшающая способность датчика, все вычисления до третьего знака и далее не имеет смысла и показывацо по всем правилам не должно. и даже во втором знаке вес должен изменяцо (показывацо вами) кратно двойке. Пишите скользящее среднее а выход с него округляйте до дискреты. если нужна бОльшая точность копайте в сторону многодиапазонных (многоинтервальных) весов. в смысле как их на этом тензодатчике сваять )

LogikASUTP
12.06.2025, 16:30
Добрый день коллеги всех с праздником. Слава России!

Есть необходимость отфильтровать аналоговый сигнал от датчика давления, скачет ужасно. Нашёл в библиотеке oscat фильтр "FILTER_WAV " и не могу понять что подключать на вход "W", что за массив, где его взять и как подключить ко входу. У кого был аналогичный опыт поделитесь будьте любезны.

84321

Спасибо.

kondor3000
12.06.2025, 17:49
Добрый день коллеги всех с праздником. Слава России!

Есть необходимость отфильтровать аналоговый сигнал от датчика давления, скачет ужасно. Нашёл в библиотеке oscat фильтр "FILTER_WAV " и не могу понять что подключать на вход "W", что за массив, где его взять и как подключить ко входу. У кого был аналогичный опыт поделитесь будьте любезны.
Спасибо.
Для начала выложите в цифрах, сколько должно быть и сколько показывает и сколько прыгает. Подозреваю, что тут дело вообще не в фильтрах.
Кроме того вы пишите в раздел CoDeSys V2.3 с вопросами из CoDeSys V3.5


W : ARRAY [0..15] OF REAL:=10000000,1000000,100000,10000,1000,100,10,1, 0,0.1,0.01,0.001,0.0001,0.00001,0.000001,0.0000001 ;

LogikASUTP
12.06.2025, 18:13
Для начала выложите в цифрах, сколько должно быть и сколько показывает и сколько прыгает. Подозреваю, что тут дело вообще не в фильтрах.
Кроме того вы пишите в раздел CoDeSys V2.3 с вопросами из CoDeSys V3.5

я не могу знать сколько должно быть к сожалению, мне для этого датчик и нужен.
Датчик абсолютного давления ПД-Р -1.....5 bar

сигнал пропускаю через блок "SCALE_R", на выходе из блока показания сильно скачут 1, 5, 0, 8 хотя по идее должно быть 1 bar атмосферное давление.
а почему CoDeSys V3.5? я в 2.3 делаю

kondor3000
12.06.2025, 18:28
я не могу знать сколько должно быть к сожалению, мне для этого датчик и нужен.
Датчик абсолютного давления ПД-Р -1.....5 bar

сигнал пропускаю через блок "SCALE_R", на выходе из блока показания сильно скачут 1, 5, 0, 8 хотя по идее должно быть 1 bar атмосферное давление.
а почему CoDeSys V3.5? я в 2.3 делаю

Скрин похож на 3.5
Датчика такого нет в Овене, что за датчик и как вы его читаете? По RS485 ?
Скрином покажите, в работе. Данные нужны на датчике и на на Scale.

LogikASUTP
12.06.2025, 18:51
Скрин похож на 3.5
Датчика такого нет в Овене, что за датчик и как вы его читаете? По RS485 ?

скрин взял из описания библиотеки
датчик (преобразователь давления) не помню чьего производства, помню что -1 до 5 bar с сигналом 4-20
rs нет на нём, два провода
типа такого
84322

на прямую в плк на аналоговый вход

kondor3000
12.06.2025, 18:57
скрин взял из описания библиотеки
датчик (преобразователь давления) не помню чьего производства, помню что -1 до 5 bar с сигналом 4-20
rs нет на нём, два провода
типа такого
на прямую в плк на аналоговый вход

Ну и как там может быть 1,2 или 8, если в переменной Float должно быть числом типа 0.02113 или 2.1е-02.
Вот сегодняшняя тема https://owen.ru/forum/showthread.php?t=26216&page=424
Для этого и прошу скрин в работе, вы даже толком ответить не можете.

LogikASUTP
12.06.2025, 19:02
Ну и как там может быть 1,2 или 8, если в переменной Float должно быть числом типа 0,02113 или 2.1е-02.
Вот сегодняшняя тема https://owen.ru/forum/showthread.php?t=26216&page=424

я цифры после запятой не пишу потому что не помню, но целые числа менялись так как написал

LogikASUTP
12.06.2025, 19:09
Ну и как там может быть 1,2 или 8, если в переменной Float должно быть числом типа 0.02113 или 2.1е-02.
Вот сегодняшняя тема https://owen.ru/forum/showthread.php?t=26216&page=424
Для этого и прошу скрин в работе, вы даже толком ответить не можете.

в работе скрин к сожалению не могу сейчас предоставить, нет возможности подключиться к железу.

kondor3000
12.06.2025, 19:11
я цифры после запятой не пишу потому что не помню, но целые числа менялись так как написал

Короче, нужны данные, какой ПЛК, как настроен вход, как подключён датчик (схема подключения) и скрин работы.
Подозреваю, что где то вы накосячили и фильтр вам не нужен.
Максимум что может прыгать, это сотые и тысячные после запятой.

LogikASUTP
12.06.2025, 19:20
Короче, нужны данные, как настроен вход, как подключён датчик (схема подключения) и скрин работы.
Подозреваю, что где то вы накосячили и фильтр вам не нужен.
Максимум что может прыгать, это сотые и тысячные после запятой.

вот схема подключения
84323

вот настройки входа
84324

скрин работы сейчас не могу сделать

kondor3000
12.06.2025, 19:29
вот схема подключения

скрин работы сейчас не могу сделать

На схеме не указан + и - питания, но похоже, что
схема подключения датчика сделана по минусу, а должна быть по плюсу, так как минусы у всех входов общие.

Вход настроен на 4-20 мА, но можно сделать так, сразу задать диапазон датчика, -1.. +5 бар, вместо 4-20 мА. Будете получать сразу давление и Scale не понадобиться.

LogikASUTP
12.06.2025, 19:33
На схеме не указан + и - питания, но похоже, что
схема подключения датчика сделана по минусу, а должна быть по плюсу, так как минусы у всех входов общие.
Вход настроен на 4-20 мА, но можно сделать сразу задав диапазон датчика, -1.. +5 бар, вместо 4-20 мА. Будете получать сразу давление.

84325

чуть зарезал придыдущий скрин

LogikASUTP
12.06.2025, 19:37
Вход настроен на 4-20 мА, но можно сделать сразу задать диапазон датчика, -1.. +5 бар, вместо 4-20 мА. Будете получать сразу давление и Scale не понадобиться.

спасибо за совет, да весьма логично как это я сразу не догадался.

и всё таки хотелось бы узнать что подключать на вход W в фильтре "FILTER_WAV"

kondor3000
12.06.2025, 19:42
84325

чуть зарезал придыдущий скрин

Схема то правильная, а датчик включен наоборот! Контакт 1 это плюс питания. Вот и вся проблема.
И не нужен вам фильтр никакой.
Кстати фильтр встроен на входе, постянную фильтра 10 мс можно изменить, хотя я им никогда не пользовался

Eugene.A
12.06.2025, 19:54
Датчик абсолютного давления ПД-Р -1.....5 bar
Если этот датчик:
https://rizur.ru/catalog/datchiki-davleniya-i-temperatury/preobrazovateli-izbytochnogo-davleniya-pd-r/
, то это датчик относительного (избыточного) давления.
Это во-первых. Во-вторых, плюс у него на 1 контакте разъёма.

LogikASUTP
13.06.2025, 10:43
Если этот датчик:
https://rizur.ru/catalog/datchiki-davleniya-i-temperatury/preobrazovateli-izbytochnogo-davleniya-pd-r/
, то это датчик относительного (избыточного) давления.
Это во-первых. Во-вторых, плюс у него на 1 контакте разъёма.

в инструкции к датчику написано что диапазон измерений от -1 до 5 бар, поэтому я решил что это датчик абсолютного давления
ну контакты я местами менял при неверной комутации он перестаёт выдавать показания

kondor3000
13.06.2025, 10:46
в инструкции к датчику написано что диапазон измерений от -1 до 5 бар, поэтому я решил что это датчик абсолютного давления
ну контакты я местами менял при неверной комутации он перестаёт выдавать показания

В таком случае уже надо датчик проверять заменой и вход проверять тоже. Мультиметром измерять ток и смотреть показания.
Подключать в обратной полярности не рекомендуется, без защиты входа, а у вас её и нет.

А вам надо было начинать со схемы подключения, а не писать целый день про фильтр.

Сергей0308
13.06.2025, 23:29
в инструкции к датчику написано что диапазон измерений от -1 до 5 бар, поэтому я решил что это датчик абсолютного давления
ну контакты я местами менял при неверной комутации он перестаёт выдавать показания

Тогда это датчик избыточно-вакуумметрического давления, совсем недавно про такой речь заходила в соседней теме: https://owen.ru/forum/showthread.php?t=41460&p=465637&viewfull=1#post465637

Короче, это явно не датчик(преобразователь) абсолютного давления, в смысле, изучите этот вопрос, хотя бы поверхностно, чтобы не путаться в трёх соснах!