|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
08.08.2016, 12:20 | #1 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Усредняющий фильтр аналогового сигнала
Здравствуйте!
Помогите пожалуйста начинающему изучать среду разработки SMLogix. Меня интересует алгоритм работы усредняющего фильтра аналогового сигнала, реализованного на блоке "Spdelay". Запутался в тиках и циклах. Например, если я задам цикл работы системы = 100 мс., а на входе "dt" блока задержки установлю значение = 10, то сигнал со входа "in" на выход "Out0" будет передаваться с временной задержкой примерно равной = 1 секунде (1000 мс), образуя тем самым что-то вроде кольцевого буфера? И значение со входа "in" дойдет до выхода "Out9" примерно за 10 секунд? То есть примерно каждую секунду на выход "Out0" будет передаваться значение со входа блока? |
08.08.2016, 12:42 | #2 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
08.08.2016, 12:47 | #3 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Всё правильно.
Но для проектов, такое усреднение, лично я бы не использовал. RC-фильтр с загрузкой при старте - гораздо лучше будет. __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
08.08.2016, 14:32 | #4 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Спасибо большое за помощь!
Я возможно этот фильтр и не буду использовать, в проектах для систем вентиляции, мне просто не совсем понятен алгоритм его работы. У меня еще вопрос: если в моем случае, сигнал будет обновляться раз в 10 секунд, то с какой задержкой будут производиться математические операции (сложение и деление), как я понимаю это вычисление среднего арифметического числа? Если я правильно понял, то получается, что если значение на входе "in" не будет изменяться как минимум 10 секунд, и будет равно "25", то на выходе блока "ADD" получится значение суммы = "250" ? |
08.08.2016, 14:37 | #5 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Усредняющий фильтр аналогового сигнала
Да, получится, только спустя 10 циклов программы после установления 25 на входе.
То есть, на протяжении 10 секунд после, например, включения и загрузки - значение на выходе add будет увеличиваться с 0 до 250 по 25 в секунду. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
08.08.2016, 15:25 | #6 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Спасибо за более подробное объяснение!
Все равно до конца никак не въеду. Получается, что блок "ADD" пока не сложит все свои входные значения, то не выдаст общую сумму? То есть блок будет как бы накапливать (аккумулировать) входные значения в течении 10 секунд, пока все его входные переменные не получат свои значения, и только тогда выдаст общую сумму и блок "DIV" поделит ее на 10 ? |
08.08.2016, 15:53 | #7 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
в первом цикле программы - блок задержки имеет все нули, соответственно, блок add складывает 10 нулей. Блок div делит 10 нулей на 10, на выходе - ноль. Затем, после прошествия задержки dt - подаётся переменная на 1 выход блока delay. теперь блок add складывает 25 и 9 нулей. div поделит и получит 2.5. И так далее, по времени dt будет добавлять ещё по 25 на выход.. А вообще - вам бы на реальном контроллере потрогать это дело. Сразу вопросы снимутся. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
08.08.2016, 16:40 | #8 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Огромное спасибо!!!
Вроде более менее понял. Согласен, что на реальном контроллере проще понять алгоритм. Я так понимаю в режиме отладки? Просто я некоторое время работал в среде CoDeSyS, а там есть режим эмуляции. Контроллер я заказал, будет только через 3-4 недели. Захотел заранее, так сказать теоретически подготовиться. А может вы посоветуете, какой фильтр обработки аналогового сигнала лучше применить в реальном проекте? Например: приточная система вентиляции с водяным калорифером, датчики типа PT1000, трехходовой клапан с аналоговым управлением, пид-регулятор. Может есть готовый макрос фильтра? |
08.08.2016, 16:58 | #9 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
http://forum.segnetics.com/showthread.php?t=314 А по поводу эмуляции в вышеуказанной программе - почти бесполезная штука. Реальные величины в ней имитировать крайне проблематично. Индикацию в ней имитировать невозможно. Сам несколько раз сталкивался с тем, что режим эмуляции работал не так, как работал потом контроллер, приходилось на объекте код переписывать. На мой взгляд, эмуляция должна быть либо идеальная и 100% честная, либо никакая. Достичь первого варианта почти невозможно, либо очень трудо/финансово затратно А вообще, что касается разработки ПО для вентиляции - есть прекрасная штука, называется Конструктор. http://segnetics.com/smconstructor_hvac - вот здесь качается. Там же и инструкция к нему. Это программное решение сократит время разработки программы в сотни раз. Готовую вентиляцию удастся создать минут за 15. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
08.08.2016, 17:05 | #10 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Согласен с вами. Просто я не знаком с режимом отладки и не знаю на сколько он хорош или наоборот. Вот придет контроллер, тогда и попробуем. Спасибо еще раз, что потратили на меня свое время.
|
08.08.2016, 19:43 | #11 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Кстати это часть макроса который называется "Filter_bypass". Его мне как раз предложил SMConstructor_HVAC. Набросок макроса приложил к сообщению. Рисовал карандашом поэтому не очень хорошо видно.
Последний раз редактировалось av242736, 08.08.2016 в 19:58 |
09.08.2016, 11:40 | #12 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
А ещё и вверх ногами
SMConstructor_HVAC ставит по умолчанию именно усредняющий фильтр. Помимо того что он будет выдавать данные с задержкой, так ещё и фильтрация у него плохая. Категорически советую заменить на RC-фильтр. __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
09.08.2016, 12:06 | #13 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Да ладно думать, ещё и вводить в заблуждение других... PS. По ссылке http://forum.segnetics.com/showthread.php?t=314 есть и RC-фильтр, называется filter-e. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
09.08.2016, 13:12 | #14 | |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Если загружать значение входа на выход - то нет. И данная ссылка была приведена ранее. И я не писал, что там нет RC фильтра. Просто скинул свои (и не только ) варианты данных фильтров. __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
|
09.08.2016, 13:40 | #15 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Публикуйте каждый раз "дисклеймер" (c), говорящий о том, что макросы проверяли только вы и они никакого отношения к Сегнетиксу не имеют и применять человек их будет на свой страх и риск - у меня пропадут к вам претензии.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
09.08.2016, 15:45 | #16 | |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Filter RC (Lite).msl - © - проверен и дополнено описание внутри лично мной. Никакого отношения к Сегнетиксу не имеет и применять их на свой страх и риск. Filter RC (Lite)_v2.msl - © - проверен и дополнено описание внутри лично мной. Никакого отношения к Сегнетиксу не имеет и применять их на свой страх и риск. Есть какие-нибудь претензии? Да и когда они были? Ведь я же не Ваш сотрудник, а альфа, бета и прочая тестер __________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
|
09.08.2016, 16:15 | #17 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Т.е. "ложечки находятся, но осадочек остаётся" (с) __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
09.08.2016, 16:24 | #18 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
__________________ Всё, что нельзя выразить в цифрах — это не наука, это — мнение. |
09.08.2016, 17:09 | #19 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
В плане? Какие именно макросы? Я их в любом случае удаляю с форума, если проверка показывает, что они неработоспособны.
Если чужой макрос не удалён, значит я его либо не проверял, либо с ним всё ок. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
Благодарность от: |
10.08.2016, 23:04 | #20 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Добрый вечер всем!
Если я правильно понял, то в моем случае обрабатывать аналоговый сигнал лучше RC-фильтром, чем усредняющим, значит буду копать в сторону RC-фильтров. Непонятно только почему SMConstructor по умолчанию предлагает использовать усредняющий, более медленный фильтр? За рисунок простите, я его как только не крутил, а он все равно вверх ногами встал, не получается перевернуть. Ну да ладно. |
11.08.2016, 09:22 | #21 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
У каждого из предложенных решений есть свои недостатки. А что касается конструктора - он разрабатывался для управления обычной вентиляцией. И он с этим отлично справляется. Можете использовать конструкторские решения - они подкреплены огромным опытом внедрения на разных объектах. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
11.08.2016, 10:59 | #22 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Если перейти к конкретным реализациям, то "заводской" фильтр имеет возможность ускориться при сильном изменении измеряемой величины. Этого свойства лишены RC-фильтры. Другими словами, используйте то, что я вам показал и не забивайте себе голову всякой чепухой __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
18.08.2016, 23:50 | #23 |
Новичок
Регистрация: Dec 2015
Сообщения: 8
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Доброй ночи!
Спасибо за помощь. Рассмотрел все варианты фильтров по вашим ссылкам. Пока остановился на "заводском" варианте. |
02.09.2022, 02:13 | #24 |
Member
Регистрация: Feb 2021
Сообщения: 54
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Получение усредненного значения аналогового сигнала на входе в течении заданного времени. Определение массы продукта.
Время измерения массы может варьироваться. Время перевожу в целое число тиков. Затем каждый тик прибавляю текущий аналоговый сигнал к накопленной сумме за уже прошедшие тики. Суммарное значение делю на число прошедших тиков. Тем самым получаю среднее значение массы Пример: Тик 100 мс, заданное время измерения 0,5 с. Получаем усреднение по пяти значениям. Как это реализовать на FBD в SMLogix наиболее просто и корректно? |
02.09.2022, 05:51 | #25 | |
Senior Member
Регистрация: Nov 2008
Адрес: Алтайский край
Сообщения: 136
Благодарил(а): 2 раз(а)
Поблагодарили:
7 раз(а) в 7 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Фильтация аналоговых сигналов |
|
02.09.2022, 10:18 | #26 | |
Member
Регистрация: Feb 2021
Сообщения: 54
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Необходимо задавать время усреднения показаний от которого будет зависеть количество точек усреднения. |
|
02.09.2022, 10:30 | #27 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Можно даже на дополнительном сумматоре или счётчике считать время и непрерывно делить накопленное аналогое значение на накопленное значение времени c последующем вычитанием среднего, получив скользящее среднее, а не усреднение "от сих до сих". __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
02.09.2022, 13:10 | #28 |
Member
Регистрация: Feb 2021
Сообщения: 54
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Усреднение производится при наличии сигнала на входе On. В конце измерения фиксируется среднее значение на выходе Out.
Корректная конструкция? ИМП.png |
02.09.2022, 13:50 | #29 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
02.09.2022, 14:43 | #30 | |
Member
Регистрация: Feb 2021
Сообщения: 54
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Усредняющий фильтр аналогового сигнала
Цитата:
Получается интеграл измеряемой величины / на время интегрирования = среднее значение. Плюс еще избавляемся от деления на ноль. Через обратные связи получаем сигнал на втором входе сумматора из предыдущего цикла. Может и проще можно, поэтому и спросил... Добавлено через 6 минут Типа блока "statistics_real" из CoDeSys пытаюсь реализовать |
|