Segnetics

Вернуться   Segnetics > Форум Segnetics > SMConstructor (вентиляция)

SMConstructor (вентиляция) Вопросы о работе Конструктора (Вентиляция и кондиционирование)

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2020, 01:45   #1
dm101
Новичок
 
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Вопрос по макросу Filter_bypass

Я новичок в программировании и поэтому выбрал путь изучения работающего кода. Скачал конструктор HVAC, сделал код и сижу, изучаю потихоньку. Макрос, который выдаёт мне температуру датчика включает в себя макрос Filter_bypass. Функцию макроса я понимаю, это так называемый цифровой фильтр. Но непонятна функция элементов, отмеченных на скриншоте. Зачем "ловить" нулевое значение на входе? Функция D-триггера также не ясна. Поясните кто сможет!
Миниатюры
Нажмите на картинку для увеличения

Название:  seg1.jpg
Просмотров: 55
Размер:  137.7 Кбайт  
dm101 вне форума   Ответить с цитированием
Старый 05.03.2020, 06:36   #2
Pushin
Senior Member
 
Аватара для Pushin
 
Регистрация: Nov 2017
Адрес: Новосибирск
Сообщения: 196
Благодарил(а): 15 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Предположу, что блок REG ждёт, пока не завершится работу блок spdelay.

Как можно узнать из справки комбинация блоков spdelay, add, div даёт нам усредняющий фильтр. Тем самым выходной сигнал с фильтра приходит на блок REG, который уже выполняет задержку на время фильтрации (признак окончания фильтрации это когда на out9 появляется значение).

Поправьте, если наврал
Pushin вне форума   Ответить с цитированием
Старый 05.03.2020, 09:49   #3
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата
Сообщение от dm101 Посмотреть сообщение
Я новичок в программировании и поэтому выбрал путь изучения работающего кода. Скачал конструктор HVAC, сделал код и сижу, изучаю потихоньку. Макрос, который выдаёт мне температуру датчика включает в себя макрос Filter_bypass. Функцию макроса я понимаю, это так называемый цифровой фильтр. Но непонятна функция элементов, отмеченных на скриншоте. Зачем "ловить" нулевое значение на входе? Функция D-триггера также не ясна. Поясните кто сможет!
нуль на старшем регистре ловят для того чтобы сразу получить корректное усредненное значение.


__________________
C уважением, LordN
LordN вне форума   Ответить с цитированием
Старый 05.03.2020, 11:52   #4
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили: 254 раз(а) в 250 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата
Сообщение от dm101 Посмотреть сообщение
Я новичок в программировании и поэтому выбрал путь изучения работающего кода. Скачал конструктор HVAC, сделал код и сижу, изучаю потихоньку. Макрос, который выдаёт мне температуру датчика включает в себя макрос Filter_bypass. Функцию макроса я понимаю, это так называемый цифровой фильтр. Но непонятна функция элементов, отмеченных на скриншоте. Зачем "ловить" нулевое значение на входе? Функция D-триггера также не ясна. Поясните кто сможет!
Уточните, вам непонятно назначение блоков(то, что можно узнать из справки нажатием F1) или почему такая реализация аналогово фильтра?


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 06.03.2020, 00:25   #5
dm101
Новичок
 
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата:
Сообщение от Ilya J. Посмотреть сообщение
Уточните, вам непонятно назначение блоков(то, что можно узнать из справки нажатием F1) или почему такая реализация аналогово фильтра?
Спасибо за ответ!
С описанием блоков я разобрался, мне непонятно, почему именно такая реализация фильтра. Что изменится, если удалить обозначенные элементы ну и, соответственно, мультиплексор на выходе (он не влез просто)? Размещаю ещё один скриншот, чтобы прояснить картину для всех откликнувшихся.
Миниатюры
Нажмите на картинку для увеличения

Название:  seg2.jpg
Просмотров: 39
Размер:  123.9 Кбайт  
dm101 вне форума   Ответить с цитированием
Старый 06.03.2020, 03:13   #6
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата Что изменится, если удалить обозначенные элементы
Это усредняющий фильтр. Если очень упрощенно, то усредняет он по 10*5=50 значениям. Если убрать обозначенные элементы, то в течении первых 50 тиков, а это 50*0,1=5 с на выходе фильтра будут некорректные значения. На самом деле число значений, а соответственно и время заполнения буфера фильтрации для усреднения может варьироваться в зависимости от настроек фильтра, оно может быть и меньше и больше. Будут меняться и характеристики фильтрации.

Если не смущают недостоверные данные в течении некоторого времени после старта программы, можете удалять отмеченные элементы.


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.

Последний раз редактировалось tvf, 06.03.2020 в 03:28
tvf вне форума   Ответить с цитированием
Благодарность от:
Старый 06.03.2020, 11:32   #7
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили: 254 раз(а) в 250 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата
Сообщение от dm101 Посмотреть сообщение
Спасибо за ответ!
С описанием блоков я разобрался, мне непонятно, почему именно такая реализация фильтра. Что изменится, если удалить обозначенные элементы ну и, соответственно, мультиплексор на выходе (он не влез просто)? Размещаю ещё один скриншот, чтобы прояснить картину для всех откликнувшихся.
В принципе я согласен с tvf, с оговоркой, что эти решения проверены временем и бездумно удалять не нужно)


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 07.03.2020, 16:27   #8
dm101
Новичок
 
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата
Сообщение от tvf Посмотреть сообщение
Это усредняющий фильтр. Если очень упрощенно, то усредняет он по 10*5=50 значениям. Если убрать обозначенные элементы, то в течении первых 50 тиков, а это 50*0,1=5 с на выходе фильтра будут некорректные значения. На самом деле число значений, а соответственно и время заполнения буфера фильтрации для усреднения может варьироваться в зависимости от настроек фильтра, оно может быть и меньше и больше. Будут меняться и характеристики фильтрации.

Если не смущают недостоверные данные в течении некоторого времени после старта программы, можете удалять отмеченные элементы.
Спасибо за ответ!
Да, я упустил состояние системы начиная с момента запуска и рассматривал её исключительно в некоем установившемся состоянии, следовало бы догадаться.
Если говорить не упрощенно:
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 больше отвечает за точность измерений.

Цитата:
Сообщение от Ilya J. Посмотреть сообщение
В принципе я согласен с tvf, с оговоркой, что эти решения проверены временем и бездумно удалять не нужно)
Бездумно удалять я и не собирался, именно поэтому и открыл эту тему!
dm101 вне форума   Ответить с цитированием
Старый 08.03.2020, 08:44   #9
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата Не до конца понимаю функцию блока 6.
Этот блок предотвращает запись величины отличной от 0 во второй буфер, пока не заполнился первый буфер.

Суть работы этого фильтра: пока не заполнился 1 буфер - просто трансляция с выхода на вход, если 1 буфер заполнен а 2 еще нет - среднее значение из 1 буфера, после заполнения 2 буфера - среднее значение из 2 буфера.

Соотношения dt определяют характеристики фильтра. При соотношении 1-10 имеем среднее значение из 50 тиков. При соотношении 1-1 имеем дважды примененное усреднение (по 10 и 5 отсчетах) на 15 тиках. У фильтров будет разная передаточная характеристика, разное запаздывание, разная полоса пропускания, разный коэффициент подавления. Более подробно в рамках форума на этом останавливаться не имеет смысла. Для полного понимания нужно изучать теорию фильтров с конечной импульсной характеристикой.


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 08.03.2020, 15:37   #10
dm101
Новичок
 
Регистрация: Mar 2020
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Вопрос по макросу Filter_bypass

Цитата
Сообщение от tvf Посмотреть сообщение
Этот блок предотвращает запись величины отличной от 0 во второй буфер, пока не заполнился первый буфер.

Суть работы этого фильтра: пока не заполнился 1 буфер - просто трансляция с выхода на вход, если 1 буфер заполнен а 2 еще нет - среднее значение из 1 буфера, после заполнения 2 буфера - среднее значение из 2 буфера.

Соотношения dt определяют характеристики фильтра. При соотношении 1-10 имеем среднее значение из 50 тиков. При соотношении 1-1 имеем дважды примененное усреднение (по 10 и 5 отсчетах) на 15 тиках. У фильтров будет разная передаточная характеристика, разное запаздывание, разная полоса пропускания, разный коэффициент подавления. Более подробно в рамках форума на этом останавливаться не имеет смысла. Для полного понимания нужно изучать теорию фильтров с конечной импульсной характеристикой.
Спасибо за ответ!
Наступил на те же грабли, не рассматривал состояние системы с начального момента времени, теперь функция блока 6 понятна. Теорию фильтров почитаю конечно же.
dm101 вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по макросу счетчика моточасов khrustalik Вопросы о программировании 17 20.03.2019 16:43
Почему техподдержка не может ответить на мой простейший вопрос? Arsie ЧаВо - Часто задаваемые Вопросы 6 23.11.2018 11:26
По стандартному проекту вопрос starmos SMConstructor (вентиляция) 17 21.04.2016 17:06
Технический вопрос автоматика на Pixel-2511 вентиляция oleg_dz Форум Segnetics 7 27.11.2013 15:45
Вопрос о питании SMH2010 AlekSir Вопросы о SMH2010 19 09.04.2012 12:15


Часовой пояс GMT +4, время: 17:11.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023