|
SMConstructor (вентиляция) Вопросы о работе Конструктора (Вентиляция и кондиционирование) |
|
Опции темы | Поиск в этой теме |
05.03.2020, 01:45 | #1 |
Новичок
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Вопрос по макросу Filter_bypass
Я новичок в программировании и поэтому выбрал путь изучения работающего кода. Скачал конструктор HVAC, сделал код и сижу, изучаю потихоньку. Макрос, который выдаёт мне температуру датчика включает в себя макрос Filter_bypass. Функцию макроса я понимаю, это так называемый цифровой фильтр. Но непонятна функция элементов, отмеченных на скриншоте. Зачем "ловить" нулевое значение на входе? Функция D-триггера также не ясна. Поясните кто сможет!
|
05.03.2020, 06:36 | #2 |
Senior Member
Регистрация: Nov 2017
Адрес: Новосибирск
Сообщения: 196
Благодарил(а): 15 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Предположу, что блок REG ждёт, пока не завершится работу блок spdelay.
Как можно узнать из справки комбинация блоков spdelay, add, div даёт нам усредняющий фильтр. Тем самым выходной сигнал с фильтра приходит на блок REG, который уже выполняет задержку на время фильтрации (признак окончания фильтрации это когда на out9 появляется значение). Поправьте, если наврал |
05.03.2020, 09:49 | #3 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 180
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
|
|
05.03.2020, 11:52 | #4 | |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 355
Благодарил(а): 0 раз(а)
Поблагодарили:
256 раз(а) в 252 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
__________________ Если ничто другое не помогает, прочтите, наконец, инструкцию |
|
06.03.2020, 00:25 | #5 | |
Новичок
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
С описанием блоков я разобрался, мне непонятно, почему именно такая реализация фильтра. Что изменится, если удалить обозначенные элементы ну и, соответственно, мультиплексор на выходе (он не влез просто)? Размещаю ещё один скриншот, чтобы прояснить картину для всех откликнувшихся. |
|
06.03.2020, 03:13 | #6 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 768
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
Если не смущают недостоверные данные в течении некоторого времени после старта программы, можете удалять отмеченные элементы. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. Последний раз редактировалось tvf, 06.03.2020 в 03:28 |
|
Благодарность от: |
06.03.2020, 11:32 | #7 | |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 355
Благодарил(а): 0 раз(а)
Поблагодарили:
256 раз(а) в 252 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
__________________ Если ничто другое не помогает, прочтите, наконец, инструкцию |
|
07.03.2020, 16:27 | #8 | |
Новичок
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
Да, я упустил состояние системы начиная с момента запуска и рассматривал её исключительно в некоем установившемся состоянии, следовало бы догадаться. Если говорить не упрощенно: 1) На выходе блока 3 получаем среднее значение последних 10-ти измеренных значений датчика, а в блоке 10 получаем среднее значение последних 5 средних значений. 2) Пока на выходе блока 4 не будет 1, значение датчика получаем с датчика напрямую. Как только есть 1 на выходе этого блока - получаем на выходе среднее значение последних 10 измерений. Как только получаем 5 средних значений 10-ти средних измерений - получаем это значение на выходе блока 11, ну и на выходе макроса соответственно. 3) Блок 8 нужен чтобы получить 0 на выходе как можно быстрее, если на входе пропали показания датчика, или было однократное пропадание показаний. За время не более 10 тиков, если быть точнее. Но зачем ждать 10 тиков, если можно блок 4 подключить к младшему разряду блока 2? 4) Не до конца понимаю функцию блока 6. Но могу предположить, что идея заключалась в следующем: получать на выходе более правдивые показания, если показания датчика пропадали. Хотя берут меня сомнения, в голове смоделировал пошагово такую ситуацию и по моему это не будет работать. 5) Насколько я понимаю, параметр dt блока 7 больше отвечает за скорость изменения показаний датчика на выходе макроса, а параметр dt блока 2 больше отвечает за точность измерений. Бездумно удалять я и не собирался, именно поэтому и открыл эту тему! |
|
08.03.2020, 08:44 | #9 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 768
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
Суть работы этого фильтра: пока не заполнился 1 буфер - просто трансляция с выхода на вход, если 1 буфер заполнен а 2 еще нет - среднее значение из 1 буфера, после заполнения 2 буфера - среднее значение из 2 буфера. Соотношения dt определяют характеристики фильтра. При соотношении 1-10 имеем среднее значение из 50 тиков. При соотношении 1-1 имеем дважды примененное усреднение (по 10 и 5 отсчетах) на 15 тиках. У фильтров будет разная передаточная характеристика, разное запаздывание, разная полоса пропускания, разный коэффициент подавления. Более подробно в рамках форума на этом останавливаться не имеет смысла. Для полного понимания нужно изучать теорию фильтров с конечной импульсной характеристикой. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
|
08.03.2020, 15:37 | #10 | |
Новичок
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Вопрос по макросу Filter_bypass
Цитата:
Наступил на те же грабли, не рассматривал состояние системы с начального момента времени, теперь функция блока 6 понятна. Теорию фильтров почитаю конечно же. |
|