Модуль PhysRtdTc содержит функции, относящиеся к термопарам (TC, ThermoCouple)
и резистивным температурным датчикам (RTD, Resistive Temperature Detectors).
Функции соответствуют ГОСТ Р 8.585—2001 (термопары) и ГОСТ 6651-2009 (датчики RTD).
_con_PhysRtdTc.inc константы
_var_PhysRtdTc.inc переменные
_fun_PhysRtdTc.inc функции
Константы:
Следующие константы идентифицируют тип idn термопары или датчика RTD:
Имя Значение Тип датчика Диапазон [°C] Документ
thermocouple_R 82 Термопара type R -50 .. 1768 ГОСТ Р 8.585—2001
thermocouple_S 83 Термопара type S -50 .. 1768 ГОСТ Р 8.585—2001
thermocouple_B 66 Термопара type B 0 .. 1820 ГОСТ Р 8.585—2001
thermocouple_J 74 Термопара type J -210 .. 1200 ГОСТ Р 8.585—2001
thermocouple_T 84 Термопара type T -270 .. 400 ГОСТ Р 8.585—2001
thermocouple_E 69 Термопара type E -270 .. 1000 ГОСТ Р 8.585—2001
thermocouple_K 75 Термопара type K -270 .. 1372 ГОСТ Р 8.585—2001
thermocouple_N 78 Термопара type N -270 .. 1300 ГОСТ Р 8.585—2001
thermocouple_A1 16689 Термопара type A1 0 .. 2500 ГОСТ Р 8.585—2001
thermocouple_A2 16690 Термопара type A2 0 .. 1800 ГОСТ Р 8.585—2001
thermocouple_A3 16691 Термопара type A3 0 .. 1800 ГОСТ Р 8.585—2001
thermocouple_L 76 Термопара type L -200 .. 800 ГОСТ Р 8.585—2001
thermocouple_M 77 Термопара type M -200 .. 100 ГОСТ Р 8.585—2001
rtd_id_pt100_385 385 Датчик RTD Pt100 a=0.00385 -200 .. 850 ГОСТ 6651-2009
rtd_id_pt100_391 391 Датчик RTD Pt100 a=0.00391 -200 .. 850 ГОСТ 6651-2009
rtd_id_cu100_428 428 Датчик RTD Cu100 a=0.00428 -180 .. 200 ГОСТ 6651-2009
rtd_id_cu100_426 426 Датчик RTD Cu100 a=0.00426 -50 .. 200 ГОСТ 6651-2009
rtd_id_ni100_617 617 Датчик RTD Ni100 a=0.00617 -60 .. 180 ГОСТ 6651-2009
Примечания:
1)Для термопар x=R,S,B,J,T,E,K,N,L,M справедливо равенство thermocouple_x = Ord('x'),
Для термопар x=A1,A2,A3 справедливо равенство thermocouple_x = Ord('A')*256+Ord('x),
Например: thermocouple_R=Ord('R'); thermocouple_A1=Ord('A')*256+Ord('1');
2)Датчики RTD идентифицируются фактически по значению параметра alfa
Переменные:
Имя Тип НачальноеЗначение Комментарий thermocouple_cnt Real 0 Число вызовов функции thermocouple_emf для контроля производительности thermocouple_eps Real macheps Значение машинной точности (epsilon) при расчете thermocouple_ttc thermocouple_tol Real macheps*10 Значение допустимой точности (tolerance) при расчете thermocouple_ttc thermocouple_met Integer 1 Метод поиска нуля 1=ZeroIn 2=Bisection при расчете thermocouple_ttc thermocouple_mit Integer 128 Максимальное число итераций поиска нуля при расчете thermocouple_ttc restemperdet_cnt Real 0 Число вызовов функции restemperdet_ohm для контроля производительности restemperdet_eps Real macheps Значение машинной точности (epsilon) при расчете restemperdet_ttc restemperdet_tol Real macheps*10 Значение допустимой точности (tolerance) при расчете restemperdet_ttc restemperdet_met Integer 1 Метод поиска нуля 1=ZeroIn 2=Bisection при расчете restemperdet_ttc restemperdet_mit Integer 128 Максимальное число итераций поиска нуля при расчете restemperdet_ttc Здесь macheps - значение машинной точности, равное 2-52 ≈ 2.22E-16 для используемого типа Real (IEEE 754 double)
Функции:
thermocouple_xxx(..) - относятся к термопарам.
restemperdet_xxx(..) - относятся к датчикам RTD.
function thermocouple_emf(t:Real; idn:Integer):Real;
Вычисляет ТермоЭДС термопары в зависимости от температуры t и типа термопары idn.
Возвращает ТермоЭДС (EMF, ElectroMotive Force) термопары, [mV].
Возвращает NaN при неверном значении idn.
Аргумент t задает температуру термопары в градусах Цельсия [°C].
Аргумент idn задает тип термопары, см. константы.
При расчете thermocouple_emf предполагается температура холодного спая 0 [°C].
При температуре холодного спая tcj [°C] EMF расчитывается как:
emf:=thermocouple_emf(t,idn)-thermocouple_emf(tcj,idn);
function thermocouple_ttc(emf:Real; idn:Integer):Real;
Вычисляет температуру термопары в зависимости от ТермоЭДС и типа термопары idn.
Возвращает температуру термопары в градусах Цельсия [°C].
Возвращает NaN при неверном значении idn или ошибке расчета.
Аргумент emf задает ТермоЭДС (EMF, ElectroMotive Force) термопары, [mV].
Аргумент idn задает тип термопары, см. константы.
thermocouple_ttc вычисляется решением уравнения thermocouple_emf(t,idn)-emf=0 относительно переменной t.
Контролировать расчеты можно с помощью переменных thermocouple_cnt, thermocouple_eps, thermocouple_tol, thermocouple_met, thermocouple_mit.
По умолчанию расчет ведется с высокой точностью. При этом решение уравнения требует в среднем 12 вычислений thermocouple_emf.
Понижение точности расчета может понизить объем вычислений.
При расчете thermocouple_ttc предполагается температура холодного спая 0 [°C].
При температуре холодного спая tcj [°C] температура термопары t расчитывается как:
t:=thermocouple_tcc(emf+thermocouple_emf(tcj,idn),idn);
function thermocouple_lot(idn:Integer):Real;
function thermocouple_hit(idn:Integer):Real;
Вычисляют для типа термопары idn номинальный диапазон температуры t, [°C].
thermocouple_lot возвращает нижний номинальный диапазон термопары, [°C].
thermocouple_hit возвращает верхний номинальный диапазон термопары, [°C].
Возвращает NaN при неверном значении idn.
Аргумент idn задает тип термопары, см. константы.
function thermocouple_idn(ids:String):Integer;
function thermocouple_ids(idn:Integer):String;
Вычисляют числовой или строковый идентификатор термопары.
thermocouple_idn возвращает числовой идентификатор idn по строковому идентификатору ids термопары.
thermocouple_ids возвращает строковый идентификатор ids по числовому идентификатору idn термопары.
Возвращает 0 или пустую строку при неверном значении idn или ids.
Аргумент ids задает тип термопары в виде строки (R,S,B,J,T,E,K,N,A1,A2,A3,L,M).
Аргумент idn задает тип термопары, см. константы.
function thermocouple_tst:Integer;
Выполняет тестирование расчетного модуля термопар, возвращает число найденных ошибок.
function restemperdet_ohm(t:Real; idn:Integer):Real;
Вычисляет сопротивление датчика RTD в зависимости от температуры t и типа idn.
Возвращает сопротивление датчика RTD, [Ом].
Возвращает NaN при неверном значении idn.
Аргумент t задает температуру датчика RTD в градусах Цельсия [°C].
Аргумент idn задает тип датчика RTD, см. константы.
При вычислении restemperdet_ohm за границами номинального диапазона используется линейная экстраполяция
с сохранением непрерывности значения функции и её первой производной в крайней точке диапазона.
Это позволяет надежно расчитывать значение при небольшом (1-2 °C) выходе температуры за номинальный диапазон,
однако при значительном выходе за номинальный диапазон температур точность расчета не гарантируется.
function restemperdet_ttc(ohm:Real; idn:Integer):Real;
Вычисляет температуру датчика RTD в зависимости от сопротивления ohm и типа idn.
Возвращает температуру датчика RTD в градусах Цельсия [°C].
Возвращает NaN при неверном значении idn или ошибке расчета.
Аргумент ohm задает сопротивление датчика RTD, [Ом].
Аргумент idn задает тип датчика RTD, см. константы.
restemperdet_ttc вычисляется решением уравнения restemperdet_ohm(t,idn)-ohm=0 относительно переменной t.
Контролировать расчеты можно с помощью переменных restemperdet_cnt, restemperdet_eps, restemperdet_tol, restemperdet_met, restemperdet_mit.
По умолчанию расчет ведется с высокой точностью. При этом решение уравнения требует в среднем 10 вычислений restemperdet_ohm.
Понижение точности расчета может понизить объем вычислений.
function restemperdet_lot(idn:Integer):Real;
function restemperdet_hit(idn:Integer):Real;
Вычисляют для типа датчика RTD idn номинальный диапазон температуры t, [°C].
restemperdet_lot возвращает нижний номинальный диапазон датчика RTD, [°C].
restemperdet_hit возвращает верхний номинальный диапазон датчика RTD, [°C].
Возвращает NaN при неверном значении idn.
Аргумент idn задает тип датчика RTD, см. константы.
function restemperdet_idn(ids:String):Integer;
function restemperdet_ids(idn:Integer):String;
Вычисляют числовой или строковый идентификатор датчика RTD.
restemperdet_idn возвращает числовой идентификатор idn по строковому ids идентификатору датчика RTD.
restemperdet_ids возвращает строковый идентификатор ids по числовому идентификатору idn датчика RTD.
Возвращает 0 или пустую строку при неверном значении idn или ids.
Аргумент ids задает тип датчика RTD в строковом виде (PT100_385,PT100_391,CU100_428,CU100_426,NI100_617).
Аргумент idn задает тип датчика RTD в числовом виде, см. константы.
function restemperdet_tst:Integer;
Выполняет тестирование расчетного модуля RTD, возвращает число найденных ошибок.
Example:
idn := Ord('K'); // choose thermocouple type K
emf := getEMF; // read electromotive force, mV
tcj := getTCJ; // read temperature of cold junction, °C
t := thermocouple_ttc(emf+thermocouple_emf(tcj,idn),idn); // calculate temperature of thermocouple, °C
idn := 385; // choose RTD sensor Pt100 with alfa=0.00385
ohm := getOHM; // read RTD resistance, ohm
t := restemperdet_ttc(ohm,idn); // calculate temperature of RTD, °C