Пакет CRW-DAQ имеет развитую систему калибровки датчиков - как стандартных, так и пользовательских. Калибровки служат для описания характеристик самых разных типов датчиков - термопар, резистивных термодатчиков (RTD) и других. Они используют калибровочные преобразования (КП) и полиномы, вычисляемые по МНК (методу наименьших квадратов), для описания массива опорных калибровочных точек. Калибровочные преобразования - это функции, которые описывают типичное поведение всех датчиков данного типа, а полином МНК служит для учета индивидуальных особенностей конкретного датчика или измерительного канала.
В пакете есть большая библиотека калибровочных преобразований, описывающая характеристики стандартных датчиков, взятых из ГОСТ. Калибровочные преобразования описывают характерное поведение всех датчиков данного типа. Кроме того, в пакете имеется библиотека стандартных калибровок, которые построены по набору опорных точек, взятых из стандартных таблиц калибровок ГОСТ. Эти стандартные калибровки описывают поведение "идеального" датчика данного типа, без учета индивидуальных отклонений данного датчика и влияния измерительного канала. Стандартные калибровки используются в случае, когда измерительный канал хорошо откалиброван, а датчик гарантированно удовлетворяет стандарту с необходимой точностью - например, имеет соответствующий паспорт.
Прежде чем говорить о системе калибровки в целом, рассмотрим частный пример - типичную задачу измерения температуры термопарой. Допустим, имеется некоторый измерительный канал, который может содержать неизвестные нам коэффициенты (смещение c0 АЦП и его коэффициент пропорциональности c1), а также датчик (термопару известного типа), который может слегка отличаться от "идеального", описанного в ГОСТ (например, из-за отклонения химического состава материалов термопары от идеального). Согласно ГОСТ, термопары имеет существенно нелинейную характеристику, поэтому зависимость температуры от кода АЦП будет нелинейной. Однако можно ожидать, что зависимость термоЭДС, рассчитанная по температуре и стандартной характеристике данного типа термопары от кода АЦП будет линейной, так как АЦП - линейное устройство, а отличие реальной термопары от идеальной предполагается малым, и поэтому в первом приближении линейным. Коэффициенты линейной зависимости термоЭДС от кода АЦП можно оценить, выполнив калибровочные измерения, то есть зарегистрировав код АЦП при известной температуре. Температура во время калибровки берется из показаний эталонного термометра, либо из физических точек (например, точки замерзания и кипения воды). Таким образом, в процедуре калибровке можно выделить несколько этапов:
В общем случае калибровка измерительного канала (ИК) описывает параметрическую зависимость:
y = y(x,z,c)по которому аргумент х (например, измеряемое напряжение АЦП) преобразуется в физическую величину y (например, температуру термопары) при данном значении параметра z (например, температуры холодного спая). Зависимость от параметра z может отсутствовать. Набор подгоночных коэффициентов c={cn, n=0..M} учитывает индивидуальные особенности датчика и регистрирующей аппаратуры. Предполагается, что зависимость от x определяется типом датчика, зависимость от параметра z точно известна, а калибровочные коэффициенты c описывают свойства конкретного датчика и измерительного канала, и подлежат определению (калибровке).
Калибровка (определение оптимальных коэффициентов c) выполняется по массиву опорных точек калибровки (xi, yi), i=1..N. Опорные точки получаются в результате калибровочного измерения, в котором значения xi измеряются с помощь калибруемого измерительного канала, а значения yi измеряются с помощью альтернативного метода (например, по эталонному датчику или по точно известным физическим точкам).
Предположим также, что известна пара взаимно-однозначных функций (назовем их калибровочными преобразованиями - КП):
x'=Tx(x,z), x=Tx-1(x',z), Tx-1 - обратная функция Tx y'=Ty(y,z), y=Ty-1(y',z), Ty-1 - обратная функция Tyобладающих тем свойством, что в пространстве «преобразованных» переменных y'(x') не зависит от z и является гладкой функцией, которая может быть хорошо подогнана полиномом y'=p(x',c) небольшой степени с коэффициентами c. Калибровочные преобразования определяются типом калибруемого датчика и задаются аналитически (формулами) или таблицей (которая интерполируется, например, с помощью сглаживающих кубических сплайнов Рейнша), а коэффициенты c полинома y'=p(x',c) подгоняются по МНК в пространстве «преобразованных» (линеаризованных) переменных (x',y'). Для решения задачи МНК (которая в данном случае является линейной) используется решение линейной системы нормальных уравнений с симметричной положительно определенной матрицей модифицированным методом Гаусса с выбором главного элемента, хорошо описанным в литературе. Кроме того, в пакете также поддерживаются полиномы с фиксированными коэффициентами, если они известны.
Таким образом, при использовании линеаризующих калибровочных преобразований калибровочная зависимость приобретает вид
y = Ty-1(p(Tx(x,z),c),z)Здесь p(x',c) - полином, коэффициенты c которого подлежат определению. Конечно, зависимость от параметра z, а также калибровочные преобразования - необязательны. Если калибровочное преобразование не применяется, это эквивалентно использованию тождественного калибровочного преобразования x'=x или y'=y, которое в пакете идентифицируется именем Line (линейная шкала).
Для определения оптимальных калибровочных коэффициентов c используется метод наименьшик квадратов (МНК)
в пространстве преобразованных переменных (x',y') с некоторыми неотрицательными весовыми коэффициентами
wi, учитывающими статистический вес данного измерения.
При известной дисперсии измерения Di статистический вес измерения определяется
как обратная дисперсия: wi=1/Di.
Статистические веса определены с точностью до общего множителя, который может быть любым положительным числом.
Поэтому, если дисперсии неизвестны, но одинаковы для всех точек, можно просто принять wi=1.
Это наиболее распространенный на практике случай.
Теперь процедура калибровки приобретает такой вид:
1) Подготовка массива опорных точек калибровки:
(xi, yi), i=1..N
2) Линеаризующее калибровочное преобразование:
x'i=Tx(xi,z), xi=Tx-1(x'i,z)
y'i=Ty(yi,z), yi=Ty-1(y'i,z)
3) Оценка оптимальных коэффициентов c полинома по МНК:
N
c = arg min ∑wi∙(y'i - p(x'i,c))2
i=1
или, при использовании фиксированных коэффициентов:
c = const
здесь p - калибровочный полином с коэффициентами c:
M
p(t,c) = ∑ сn∙tn
n=0
4) Искомая калибровочная зависимость имеет вид:
y = Ty-1(p(Tx(x,z),c),z)
Проиллюстрируем сказанное несколькими примерами.
Ищется обычный полином y=p(x,c). Зависимость от параметра z отсутствует, а калибровочные преобразования Tx, Ty являются тождественными преобразованиями:
x'=Tx(x,z)=x, x=Tx-1(x',z)=x' y'=Ty(y,z)=y, y=Ty-1(y',z)=y'В пакете тождественное преобразование задается именем Line (линейная шкала).
Допустим, известно, что калибруемый канал имеет степенную зависимость вида
y=a∙xb.
Зависимость от z отсутствует.
Легко увидеть, что после логарифмирования зависимость линеаризуется:
lg(y)=lg(a)+lg(x)∙b или y'=c0+x'∙c1
с коэффициентами
c0=lg(a), c1=b
То есть мы имеем линеаризующие калибровочные преобразования:
x'=Tx(x,z)=lg(x), x=Tx-1(x',z)=10x' y'=Ty(y,z)=lg(y), y=Ty-1(y',z)=10y'В пакете логарифмическое преобразование задается именем Lg (логарифмическая шкала). В данном примере шкала дважды логарифмическая, т.к. применяется по обеим осям координат.
АЦП измеряет напряжение x термоЭДС термопары с температурой y при непостоянной температуре холодного спая z. Зависимости между температурой y термоЭДС y' и температурой холодного спая z термопары описывается как
y'=Ty(y,z) = F(y)-F(z), y=Ty-1(y',z) = F-1(y'+F(z))Здесь F(t) - стандартная температурная зависимость термоЭДС термопары при фиксированной температуре холодного спая 0 °C, взятая из стандартных таблиц ГОСТ. В пакете доступно 13 термопарных калибровочных преобразований для стандартных термопар типа R,S,B,T,J,K,E,N,A1,A2,A3,L,M. Например, калибровочное преобразование для термопары типа K (хромель-алюмель) имеет название GOST_TC_K (задана таблично, используется интерполяция сглаживающими сплайнами) или CALC_TC_K (задана аналитически). Таким образом, по оси Y используется термопарное калибровочное преобразование (CALC_TC_K), а по оси X - тождественное преобразование (Line).
Если один из каналов мультиплексируемого АЦП закорочен, можно сказать, что истинное значение напряжения y в интересующем канале равно y=x-z, где x - измеренное значение в интересующем канале, z - измеренное значение на закороченном канале. В этом случае линеаризующим будет калибровочное преобразование:
x'=Tx(x,z) = x-z, x=Tx-1(x',z) = x+zЭто калибровочное преобразование носит название SubS (subtract zero).
Уравнение Стейнхарта (Steinhart) описывает температурную зависимость сопротивления R(T) полупроводникового термистора (NTC sensor) от абсолютной температуры T. В первом, грубом приближении, эта зависимость имеет вид
R(T) = A·exp(-E/(k·T)), где E - ширина запрещенной зоны, k - постоянная Больцмана.
1/T = a + b·ln(R)с некоторыми подгоночными коэффициентами a, b. В общем случае используется расширенное уравнение Стейнхарта
1/T = a0 + a1·ln(R) + a2·ln(R)2 + a3·ln(R)3При использовании температуры t в градусах Цельсия (°C) уравнение перепишется в виде
1/(t+273.15) = a0 + a1·ln(R) + a2·ln(R)2 + a3·ln(R)3Легко заметить, что уравнение становится линейным (полиномиальным) при применении следующих линеаризующих калибровочных преобразований:
x'=Tx(x,z) = ln(x), x=Tx-1(x',z) = exp(x') y'=Ty(y,z) = 1/(y+273.15), y=Ty-1(y',z) = 1/y'-273.15Уравнение Стейнхарта может быть описано такими формульными калибровочными преобразованиями:
TransformX = EVAL(V):LN(V):EXP(V):1E-100:1E100 TransformY = EVAL(V):1/(V+273.15):1/V-273.15:-273:1E100
Калибровки описываются в текстовых файлах калибровки в секции вида [X-Y calibration],
где X,Y - названия аргумента и значения.
Параметр FitMethod = Polynom задает метод аппроксимации (в данном случае - полином).
Параметр TransformX задает вид калибровочного преобразования по X.
Параметр TransformY задает вид калибровочного преобразования по Y.
Параметры TransformX, TransformY допускают задание формульного преобразования, см. следующий раздел.
Полином p(x) описывается параметрами Power (степень полинома), Center (центр полинома),
Scale (масштабный коэффициент), то есть p(x)=C0+C1*t+C2*t^2+...+Cm*t^m, t=(x-Center)/Scale, m=Power
Параметр Bounds задает рабочие пределы аргумента X.
Параметр Fixed задает тип полинома: 0 = автоматический по МНК или 1 = с фиксированными (постоянными) коэффициентами.
Параметры Coeff[0], Coeff[1], .. Coeff[Power] задают коэффициенты полинома.
Блок Data ... End Data содержит таблицу опорных точек калибровки.
Блок Notice Text ... End Notice Text содержит текстовый комментарий к калибровке.
[U(mV)-T(°C) calibration] ; Секция калибровки
FitMethod = Polynom ; Метод аппроксимации
TransformX = Line ; Калибровочное преобразование по X (линейная шкала)
TransformY = GOST_TC_K ; Калибровочное преобразование по Y (термопара тип K)
Power = 1 ; Степень полинома
Center = 0 ; Центр полинома
Scale = 1 ; Масштабный коэффициент
Bounds = -6.458 54.886 ; Рабочие пределы аргумента X
Fixed = 1 ; 0 = МНК, 1 = фиксированные коэффициенты
Coeff[0] = 0 ; Коэффициент полинома при 0 степени
Coeff[1] = 1 ; Коэффициент полинома при 1 степени
Data U(mV) T(°C) Weight Tcj(°C) ; Блок данных опорных точек калибровки:
-6.458 -270 1 0 ; U(mV) - напряжение термоЭДС, mV
-6.404 -250 1 0 ; T(°C) - температура, °C
-5.891 -200 1 0 ; Weight - весовой статистический фактор
-4.913 -150 1 0 ; Tcj(°C) - температура холодного спая
-3.554 -100 1 0
-1.889 -50 1 0
0.000 0 1 0
10.153 250 1 0
20.644 500 1 0
31.213 750 1 0
41.276 1000 1 0
50.644 1250 1 0
54.886 1372 1 0
End Data ; Конец блока данных
Notice Text ; Блок комментария
Thermocouple type K ; Комментарий
End Notice Text ; Конец блока комментария
Система калибровки позволяет использовать калибровочные преобразования (TransformX, TransformY), заданные в формульном виде. Для этого надо задать тип шкалы EVAL(V), формулы для прямого:обратного преобразования и допустимые нижние:верхние пределы аргумента, разделив их символом : (двоеточия). Например, для описания сопротивления R термистора как функции абсолютной температуры T используется уравнение Стейнхарта:
1/T=a+b·ln(R)+c·ln(R)^2+d·ln(R)^3Это уравнение (при использовании температуры t в °C, т.е. T=t+273.15) можно описать в виде полинома, если использовать линеаризующие преобразования:
TransformX = EVAL(V):LN(V):EXP(V):1E-100:1E100
TransformY = EVAL(V):1/(V+273.15):1/V-273.15:-273:1E100
где
EVAL(V) - признак формульного преобразования с аргументом V и параметром P
LN(V) - прямое (линеаризующее) преобразование шкалы X (сопротивления R)
EXP(V) - обратное преобразование шкалы X' (в сопротивление R)
1E-100:1E100 - допустимые пределы шкалы X (сопротивления Ом)
1/(V+273.15) - прямое (линеаризующее) преобразование шкалы Y (температуры в °C)
1/V-273.15 - обратное преобразование шкалы Y' (в температуру в °C)
-273:1E100 - допустимые пределы шкалы Y (температуры в °C)
После линеаризации используется обычная подгонка МНК полиномом.