Фильтрация пиков или фильтрация малых изменений в канале INPUT
Линейное сглаживание и фильтрация малых изменений в канале OUTPUT
В измерительном тракте (в общем случае датчик=>УСО=>контроллер) происходит преобразование реальной физической величины (температуры, давления и т.п.) в один из следующих "инженерных" видов:
в число, соответствующее амплитуде некоторого электрического сигнала (в том числе унифицированного – 0-10V, 4-20mA и т.д.);
в число, соответствующее проценту от диапазона изменения некоторого электрического сигнала;
в двоичный код (после АЦП).
В управляющем тракте (в общем случае контроллер=>УСО=>исполнительный механизм) выполняется обратное преобразование.
При обработке данных, поступающих из измерительного тракта или передаваемых в управляющий, необходимо скорректировать различные погрешности трактов. Для отображения поступающих данных требуется переводить "инженерные" данные в реально измеряемые (например, если требуется отображать значение температуры в ее физических единицах – градусах). Управляющий сигнал во многих случаях требуется сглаживать. Для решения подобных задач канал FLOAT снабжен следующими встроенными алгоритмами обработки, параметры которых могут быть заданы как в редакторе, так и в реальном времени (см. Канал класса FLOAT ):
канал INPUT:
масштабирование;
фильтрация одиночных пиков;
фильтрация малых изменений (апертура);
экспоненциальное сглаживание;
канал OUTPUT:
экспоненциальное сглаживание;
линейное сглаживание;
фильтрация малых изменений (апертура);
клиппирование;
масштабирование.
При использовании экспоненциального сглаживания фильтрация малых изменений в канале FLOAT не выполняется.
Если встроенных алгоритмов обработки данных недостаточно, в каналах FLOAT может быть использована процедура трансляции (см. Числовые каналы ) – например, для корректировки нелинейности передаточной характеристики измерительного/управляющего тракта.
Атрибуты Входное значение (2, In), Аппаратное значение (1, A), Реальное значение (0, R) и Выходное значение (9, Q) задействованы во внутренних алгоритмах канала FLOAT следующим образом:
канал INPUT:
канал OUTPUT:
В указанных на рисунках формулах масштабирования KX и Z являются значениями атрибутов Множитель (33, KX) и Смещение (34, Z Дрейф нуля, МРВ – ZERO – см. Канал класса FLOAT ).
Все алгоритмы обработки (за исключением клиппирования реального значения в канале OUTPUT) выполняются в том случае, если для канала установлен флаг (50, PRS) Использовать – такой канал является каналом FLOAT с обработкой. В профайлере канал FLOAT с обработкой индицируется как C5_FloatExt (атрибут 126, TsT).
Если флаг (50, PRS) Использовать не установлен, монитор не загружает атрибуты, конфигурирующие соответствующие алгоритмы обработки, и, соответственно, не исполняет эти алгоритмы – в этом случае канал является каналом FLOAT без обработки. В профайлере канал FLOAT без обработки индицируется как C4_Float.
Клиппирование реального значения канала OUTPUT выполняется в том случае, если установлены флаги (83, BNDR) Использовать и (53, LMT) Контроль границ (т.е. BNDR=0 и LMT=1). Выполнение этой процедуры не зависит от флага (50, PRS) Использовать.
Если флаг PRS не установлен и в канале не используется трансляция, монитор не использует аппаратное значение канала.
В нижеприведенных формулах алгоритмов In, A, R, Q, KX, Z, APert, DSmoot и DPic обозначают соответствующие атрибуты канала.
Масштабирование в канале FLOAT выполняется по следующим законам (при PRS=1):
в канале типа INPUT:
A = In*KX + Z
в канале типа OUTPUT:
Q = (A + Z)*KX
При PRS=1 и DSmoot<>0 (0<DSmoot<=1) в канале FLOAT выполняется экспоненциальное сглаживание (индекс указывает номер такта пересчета):
в канале типа INPUT:
Rn= Resultn*(1 – DSmootn) + DSmootn*Rn-1
Resultn обозначает результат фильтрации пиков;
в канале типа OUTPUT:
RESULTn= Inn*(1 – DSmootn) + DSmootn*Rn-1
Результат экспоненциального сглаживания RESULTn далее обрабатывается процедурой линейного сглаживания.
При DSmoot<>0 фильтрация малых изменений в канале FLOAT не выполняется.
Фильтрация пиков или фильтрация малых изменений в канале INPUT
При PRS=1 в канале INPUT выполняется фильтрация пиков или фильтрация малых изменений (апертура).
Фильтрация пиков – это алгоритм, позволяющий игнорировать в течение одного такта пересчета изменение значения сверх установленной величины (DPic).
Фильтрация малых изменений – это алгоритм, позволяющий игнорировать изменение значения, если это изменение меньше заданной величины (APert).
При использовании экспоненциального сглаживания фильтрация малых изменений в канале FLOAT не выполняется.
При обработке значения в канале выполняется один из этих алгоритмов фильтрации (индекс указывает номер такта пересчета):
если |RESn– Rn-1| <= DPicn, то выполняется фильтрация малых изменений:
если |RESn– Rn-1| < APertn, то Resultn = Rn-1;
если |RESn– Rn-1| >= APertn, то Resultn = RESn;
если |RESn– Rn-1| > DPicn, то выполняется фильтрация одиночных пиков:
если на такте (n-1) фильтрация пиков не использовалась, Resultn = Rn-1(первый пик фильтруется);
если на такте (n-1) фильтрация пиков использовалась, Resultn = RESn(второй подряд пик не фильтруется).
Здесь RESn– результат процедуры трансляции или, в ее отсутствие, аппаратное значение канала; Resultn – результат описываемых алгоритмов (на n-ом такте пересчета).
Как следствие, APertn> DPicn не имеет смысла, поскольку не отрабатывается никогда.
Линейное сглаживание и фильтрация малых изменений в канале OUTPUT
При PRS=1 в канале OUTPUT выполняется линейное сглаживание и/или фильтрация малых изменений (индекс указывает номер такта пересчета):
если |RESULTn– Rn-1| <= DPicn, то выполняется фильтрация малых изменений:
если |RESULTn– Rn-1| <= APertn, то Resn= Rn-1;
если |RESULTn– Rn-1| > APertn, то Resn= RESULTn;
если |RESULTn– Rn-1| > DPicn, то вычисляется результат линейного сглаживания LINn = Rn-1 + DPicn (если RESULTn> Rn-1) или LINn = Rn-1 – DPicn (если RESULTn< Rn-1) и далее выполняется фильтрация малых изменений:
если |LINn– Rn-1| <= APertn, то:Resn= Rn-1;
если |LINn– Rn-1| > APertn, то:Resn= LINn;
RESULTn – результат предыдущей процедуры, Resn – результат описываемых алгоритмов на n-ом такте пересчета. Resnпри BNDR=0 и LMT=1 обрабатывается далее процедурой клиппирования.
При использовании экспоненциального сглаживания фильтрация малых изменений в канале FLOAT не выполняется.
Ограничение реального значения в канале FLOAT типа OUTPUT выполняется по следующим законам (при BNDR=0 и LMT=1):
если Res > HL, то R = HL;
если Res < LL, то R = LL;
если LL <= Res <= HL, то R = Res.
Здесь Res – результат предыдущей процедуры обработки (линейного сглаживания и/или фильтрации малых изменений).