Содержание
Программа расчета линейной корреляции для сглаживания и дифференцирования зашумленных сигналов.
Программа &LinCorr предназначена для выполнения расчета линейной корреляции (Linear Correlation), то есть сглаживания и дифференцирования зашумленных сигналов с заданным окном.
Операция дифференцирования неустойчива к шуму, поэтому для неё сглаживание является необходимым.
Алгоритм расчета такой.
xb и точку xa=xb-SmootWind.[xa,xb] и вычисляем коэффициенты C0, C1 линейной регрессии y=C0+C1*(x-xc), где xc=(xb+xa)/2 - середина окна.Программа OVRTRIGGER (OverRange Trigger) - триггер диапазона - служит для отслеживания значения некоторой величины Y (в данном случае производной DERIVAT1) на входе AI0. В момент нажатия кнопки СТАРТ значение Y запоминается в Y0. После этого, пока нажата кнопка, выполняется расчет триггера по формуле TRIGGER.FORMULA, при этом любое ненулевое значение означает TRUE (триггер включен).
Например:
ge(y,y0*2)+le(y,y0/2) - триггер включается если значение Y выросло или упало в 2 раза от начального Y0
ge(y,800)+le(y,200) - триггер включается если значение Y вышло за пределы диапазона (200,800)
Если триггер сработал (TRUE), то выполняются команды CRON, заданные строками TRIGGER.COMMAND1,2,3.
Например:
@Speak Фазовый переход - произносит сообщение
@Run -hide unix tooltip-notifier text "Фазовый переход" delay 10000 - выводит всплывающее сообщение на 10 сек
@DevMsg &OVRTRIGGER @AssignTag TRIGGER.START 0 - посылает сообщение выключить кнопку START
Параметр TRIGGER.PERIOD задает период повторения выполнения команд при включенном триггере.
Кнопки SaveINI, LoadINI позволяют сохранить или загрузить параметры (формулы) OVRTRIGGER в INI файле.
Использование &LinCorr может принести пользу в следующих случаях:
&LinCorr позволяет сглаживать зашумленные данные в реальном времени.
&LinCorr позволяет дифференцировать зашумленные данные устойчивым к шуму алгоритмом в реальном времени.
Производные используются, например, для определения точки фазового перехода при нагревании.
AnalogInput[N] - входной сигнал номер N (0..AnalogInputs-1).AnalogOutput[2*N] - выходной сигнал усредненного (сглаженного) значения.AnalogOutput[2*N+1] - выходной сигнал значения сглаженной производной.tagGate или tagGateN - Integer тег разрешения обработки.tagSmoothWind или tagSmoothWindN - Real тег ширины окна сглаживания.[TagList]
SMOOTH_GATE = integer 1 ; Smoothing gate
SMOOTH_WINDOW = real 0.002777778 ; Smoothing window, 0.002(7)=10/3600=10 sec.
[]
[DeviceList]
&LinCorr = device software program
[&LinCorr]
Comment = Linear Correlation calculator
InquiryPeriod = 1
DevicePolling = 1000, tpNormal
ProgramSource = ..\DaqPas\_lincorr.pas
OpenConsole = 2
DebugFlags = 15
AnalogInputs = 2
Link AnalogInput 0 with curve SIGNAL1
Link AnalogInput 1 with curve SIGNAL2
AnalogOutputs = 4
Link AnalogOutput 0 with curve AVERAGE1 history 10000 ; Average (mean) value of SIGNAL1
Link AnalogOutput 1 with curve DERIVAT1 history 10000 ; Smoothed derivation of SIGNAL1
Link AnalogOutput 2 with curve AVERAGE2 history 10000 ; Average (mean) value of SIGNAL2
Link AnalogOutput 3 with curve DERIVAT2 history 10000 ; Smoothed derivation of SIGNAL2
tagSmoothWind = SMOOTH_WINDOW
tagGate = SMOOTH_GATE
[]
Желаем успешного использовния &LinCorr!
CRW-DAQ Copyright (c) 2001-2024 Alexey Kuryakin kouriakine@mail.ru.