Фильтр сглаживания для аналогового сигнала в S7-1200
Фильтр сглаживания для аналогового сигнала в S7-1200
Имеется аналоговое значение (восьмизначное) от тензодатчика. Вторая цифра после запятой и далее этого анологового значения постоянно меняется и из-за этого постоянно "прыгает" вес на панели оператора от 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;
Сглаженное := (Сглаженное * 9.0 + Новое * 1.0) / 10.0;
Новое, это обработанное значение со входа. Сглаженное - результат для дальнейшего использования.
Новое значение будет влиять на результат в десять раз слабее.
* 1.0 - не обязательно, это я для понимания написал.
При необходимости можно выбрать любое другое соотношение, например
Сглаженное := (Сглаженное * 99.0 + Новое * 1.0) / 100.0;
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
Виктор интересное решение, даже не задумывался об этом.
У меня была задача, но там тензометрический модуль был внешний и общение с ним было по Modbus RTU (ПЛК не Siemens). Я сглаживание делал следующим образом: по каждому флагу, что данные приняты, новое значение прибавлял к имеющемуся и увеличивал значение количества отсчетов. Когда количество отсчетов равнялось 10, полученную сумму (она Real) делил на 10 и получал сглаженное значение. Но там сам тензометрический модуль измерял с частотой примерно 100 Гц, так что новые значения появлялись с частотой 10 Гц. Для процессов в которых надо быстро получать новые данные (например насыпание), такой способ может быть не оптимальным.
У меня была задача, но там тензометрический модуль был внешний и общение с ним было по Modbus RTU (ПЛК не Siemens). Я сглаживание делал следующим образом: по каждому флагу, что данные приняты, новое значение прибавлял к имеющемуся и увеличивал значение количества отсчетов. Когда количество отсчетов равнялось 10, полученную сумму (она Real) делил на 10 и получал сглаженное значение. Но там сам тензометрический модуль измерял с частотой примерно 100 Гц, так что новые значения появлялись с частотой 10 Гц. Для процессов в которых надо быстро получать новые данные (например насыпание), такой способ может быть не оптимальным.
-
- Любитель
- Сообщения: 36
- Зарегистрирован: 06 дек 2017, 11:18
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
Я это решение придумал еще лет 15 назад, и ему есть математическое обоснование, но сейчас я не найду быстро. Использовал уже в шести проектах.
Но надо учитывать, что он не только сглаживает в установившемся состоянии, но и затягивает фронты.
Но надо учитывать, что он не только сглаживает в установившемся состоянии, но и затягивает фронты.
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
Виктор
Прошу Вас по возможности дать пример проекта в котором реализваний ваш метод.
Заранее благодарен.
Прошу Вас по возможности дать пример проекта в котором реализваний ваш метод.
Заранее благодарен.
-
- Любитель
- Сообщения: 36
- Зарегистрирован: 06 дек 2017, 11:18
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
Я пишу в основном в SCL. В первом посту вся формула и комментарий.
А Вы в каком виде хотите?
А Вы в каком виде хотите?
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
SCL для мне за тяжело, но если Вы предоставите не только код, а как сама программа прописано со всеми входами и значениями тогда я попробую разобраться.
Моя программа под дозатор муки сделана на FBD.
Спасибо.
Моя программа под дозатор муки сделана на FBD.
Спасибо.
-
- Любитель
- Сообщения: 36
- Зарегистрирован: 06 дек 2017, 11:18
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
Пауза...
Мне нужно проверить на FBD. Ни разу его не использовал.
Мне нужно проверить на FBD. Ни разу его не использовал.
-
- Любитель
- Сообщения: 36
- Зарегистрирован: 06 дек 2017, 11:18
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
На SCL сделал минут за пять, а на FBD час ушел ...
NORM и SCALE это обычное преобразование аналогового входа во внутреннее значение сигнала.
А CALCULATE это собственно сглаживание.
В начале отлавливается передний фронт внутреннего сигнала контроллера с частотой 10 Гц. Это чтобы преобразование и суммирование выполнялось не чаще 10 раз в секунду. Часто уже этого достаточно чтобы сигнал не скакал (если взять другую частоту, меньше).NORM и SCALE это обычное преобразование аналогового входа во внутреннее значение сигнала.
А CALCULATE это собственно сглаживание.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Фильтр сглаживания для аналогового сигнала в S7-1200
Виктор большое спасибо за потраченное время на решение моей задачи. Теперь попробую реализовать на своем дозаторе. О результатах обязательно сообщу.
Еще раз спасибо.
Еще раз спасибо.