Archived
Этот пост заблокирован, редактирование отключено
Программное обеспечениеМакросы и библиотекиМакрос фильтрации аналогового сигнала
Исходное сообщение:
mike, 27.10.2015, 13:15
Макрос фильтрации аналогового сигнала
Вход ini - подать лог. 1 после инициализации АЦП контроллера
Вход Ain - фильтруемый параметр, например, температура
Вход Kf - постоянная фильтра. При 0 фильтр отключен. Максимальное значение 100. При максимальном значении происходит максимальное сглаживание входного сигнала. Для температуры постоянную фильтра целесообразно выбирать из диапазона 35-65.
Вход Ain - фильтруемый параметр, например, температура
Вход Kf - постоянная фильтра. При 0 фильтр отключен. Максимальное значение 100. При максимальном значении происходит максимальное сглаживание входного сигнала. Для температуры постоянную фильтра целесообразно выбирать из диапазона 35-65.
Ответы:
mike, 27.10.2015, 14:57
Макрос фильтрации аналогового сигнала
Написал простой пример использования макроса фильтра.
Код АЦП со всех аналоговых каналов (в данном случае 3 канала) поступает на аналоговый мультиплексор-преобразователь.
После мультиплексора-преобразователя целое значение температуры поступает на вход блоков фильтрации.
С выходов блоков фильтрации получают отфильтрованное и округленное до десятой значение температуры.
Код АЦП со всех аналоговых каналов (в данном случае 3 канала) поступает на аналоговый мультиплексор-преобразователь.
После мультиплексора-преобразователя целое значение температуры поступает на вход блоков фильтрации.
С выходов блоков фильтрации получают отфильтрованное и округленное до десятой значение температуры.
mike, 27.10.2015, 15:46
Макрос фильтрации аналогового сигнала
Устройство блока мультиплексора-преобразователя.
Мультиплексирование каналов нужно для более рационального использования памяти программ контроллера.
В этом блоке происходит преобразование кода АЦП в температуру и линеаризация показаний каналов. Если не использовать мультиплексор, то потребуется в три раза бо'льший объем памяти программ, т.к. преобразование кода АЦП в температуру производится по таблице, которая "отъедает" значительный объем памяти.
На счетчике и мультиплексоре построен последовательный сканер. Счетчик тактируется от внутреннего цикла контроллера (напомню, что цикл контроллера переменный и в любой момент времени цикл не может быть определен). Тактирование от внутреннего цикла имеет преимущество над тактированием от внешнего генератора: сканирование будет происходить с максимально возможной скоростью в каждый момент исполнения программы.
Далее сигнал со сканера подается на блок линеаризации в котором происходит преобразование кода АЦП в температуру.
Для оптимизации нагрузки на ЦПУ контроллера выбран "щадящий" тип данных выхода - знаковый два байта целый.
Для минимизации потерь значащих данных значения в таблицу заносились с множителем 100 (об этом есть статья на сайте).
С выхода блока линеаризации значение температуры одновременно подается на входы трех триггеров, выполненных на переменных temp1 - temp3.
Сигнал разрешения записи в триггеры формируется магистральным дешифратором, выполненным на основе демультиплексора с логическим типом данных. Дешифратор синхронизирован с мультиплексором каналов.
Аналогичным образом построены каналы определения обрыва / замыкания температурных датчиков.
Мультиплексирование каналов нужно для более рационального использования памяти программ контроллера.
В этом блоке происходит преобразование кода АЦП в температуру и линеаризация показаний каналов. Если не использовать мультиплексор, то потребуется в три раза бо'льший объем памяти программ, т.к. преобразование кода АЦП в температуру производится по таблице, которая "отъедает" значительный объем памяти.
На счетчике и мультиплексоре построен последовательный сканер. Счетчик тактируется от внутреннего цикла контроллера (напомню, что цикл контроллера переменный и в любой момент времени цикл не может быть определен). Тактирование от внутреннего цикла имеет преимущество над тактированием от внешнего генератора: сканирование будет происходить с максимально возможной скоростью в каждый момент исполнения программы.
Далее сигнал со сканера подается на блок линеаризации в котором происходит преобразование кода АЦП в температуру.
Для оптимизации нагрузки на ЦПУ контроллера выбран "щадящий" тип данных выхода - знаковый два байта целый.
Для минимизации потерь значащих данных значения в таблицу заносились с множителем 100 (об этом есть статья на сайте).
С выхода блока линеаризации значение температуры одновременно подается на входы трех триггеров, выполненных на переменных temp1 - temp3.
Сигнал разрешения записи в триггеры формируется магистральным дешифратором, выполненным на основе демультиплексора с логическим типом данных. Дешифратор синхронизирован с мультиплексором каналов.
Аналогичным образом построены каналы определения обрыва / замыкания температурных датчиков.
mike, 27.10.2015, 15:53
Макрос фильтрации аналогового сигнала
После преобразований не отфильтрованное значение температуры подается на блок "чистовой" обработки.
Блок фильтрации аналогового сигнала осуществляет фиксирование аварийного состояния и, собственно, фильтрацию значения температуры.
Фиксация аварии и работа апериодического фильтра разрешается только после инициализации АЦП контроллера (на входе ini присутствует уровень лог. 1)
Блок фильтрации аналогового сигнала осуществляет фиксирование аварийного состояния и, собственно, фильтрацию значения температуры.
Фиксация аварии и работа апериодического фильтра разрешается только после инициализации АЦП контроллера (на входе ini присутствует уровень лог. 1)