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