Фильтр сглаживания для аналогового сигнала в S7-1200

Инженерное программное обеспечение
Ответить
Аватара пользователя
Volodymyr
Дилетант
Сообщения: 8
Зарегистрирован: 11 дек 2017, 23:59

Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Volodymyr »

Имеется аналоговое значение (восьмизначное) от тензодатчика. Вторая цифра после запятой и далее этого анологового значения постоянно меняется и из-за этого постоянно "прыгает" вес на панели оператора от 700грамм. Как в программе контроллера S7-1200 написать так называемый фильтр сглаживания, который бы сглаживал это меняющиеся значение? В настройки контроллера поставил Smoothing /Strong (32 cycles), но этого недостаточно. Прошу кто может помочь примером программы для решения данной задачи.

Бардичев Виктор
Любитель
Сообщения: 36
Зарегистрирован: 06 дек 2017, 11:18

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Бардичев Виктор »

По формуле

Сглаженное := (Сглаженное * 9.0 + Новое * 1.0) / 10.0;

Новое, это обработанное значение со входа. Сглаженное - результат для дальнейшего использования.
Новое значение будет влиять на результат в десять раз слабее.
* 1.0 - не обязательно, это я для понимания написал.

При необходимости можно выбрать любое другое соотношение, например
Сглаженное := (Сглаженное * 99.0 + Новое * 1.0) / 100.0;

Борисыч
Любитель
Сообщения: 41
Зарегистрирован: 20 дек 2017, 17:01

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Борисыч »

Виктор интересное решение, даже не задумывался об этом.
У меня была задача, но там тензометрический модуль был внешний и общение с ним было по Modbus RTU (ПЛК не Siemens). Я сглаживание делал следующим образом: по каждому флагу, что данные приняты, новое значение прибавлял к имеющемуся и увеличивал значение количества отсчетов. Когда количество отсчетов равнялось 10, полученную сумму (она Real) делил на 10 и получал сглаженное значение. Но там сам тензометрический модуль измерял с частотой примерно 100 Гц, так что новые значения появлялись с частотой 10 Гц. Для процессов в которых надо быстро получать новые данные (например насыпание), такой способ может быть не оптимальным.

Бардичев Виктор
Любитель
Сообщения: 36
Зарегистрирован: 06 дек 2017, 11:18

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Бардичев Виктор »

Я это решение придумал еще лет 15 назад, и ему есть математическое обоснование, но сейчас я не найду быстро. Использовал уже в шести проектах.
Но надо учитывать, что он не только сглаживает в установившемся состоянии, но и затягивает фронты.

Аватара пользователя
Volodymyr
Дилетант
Сообщения: 8
Зарегистрирован: 11 дек 2017, 23:59

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Volodymyr »

Виктор
Прошу Вас по возможности дать пример проекта в котором реализваний ваш метод.
Заранее благодарен.

Бардичев Виктор
Любитель
Сообщения: 36
Зарегистрирован: 06 дек 2017, 11:18

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Бардичев Виктор »

Я пишу в основном в SCL. В первом посту вся формула и комментарий.
А Вы в каком виде хотите?

Аватара пользователя
Volodymyr
Дилетант
Сообщения: 8
Зарегистрирован: 11 дек 2017, 23:59

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Volodymyr »

SCL для мне за тяжело, но если Вы предоставите не только код, а как сама программа прописано со всеми входами и значениями тогда я попробую разобраться.
Моя программа под дозатор муки сделана на FBD.
Спасибо.

Бардичев Виктор
Любитель
Сообщения: 36
Зарегистрирован: 06 дек 2017, 11:18

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Бардичев Виктор »

Пауза...
Мне нужно проверить на FBD. Ни разу его не использовал.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Михайло »

https://ru.m.wikipedia.org/wiki/Скользящая_средняя

Смотрите скользящее среднее EMA.

Бардичев Виктор
Любитель
Сообщения: 36
Зарегистрирован: 06 дек 2017, 11:18

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Бардичев Виктор »

На SCL сделал минут за пять, а на FBD час ушел ...
Снимок.PNG
В начале отлавливается передний фронт внутреннего сигнала контроллера с частотой 10 Гц. Это чтобы преобразование и суммирование выполнялось не чаще 10 раз в секунду. Часто уже этого достаточно чтобы сигнал не скакал (если взять другую частоту, меньше).
NORM и SCALE это обычное преобразование аналогового входа во внутреннее значение сигнала.
А CALCULATE это собственно сглаживание.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Volodymyr
Дилетант
Сообщения: 8
Зарегистрирован: 11 дек 2017, 23:59

Re: Фильтр сглаживания для аналогового сигнала в S7-1200

Сообщение Volodymyr »

Виктор большое спасибо за потраченное время на решение моей задачи. Теперь попробую реализовать на своем дозаторе. О результатах обязательно сообщу.
Еще раз спасибо. :)

Ответить