/// <summary> /// 根据温度值算出电阻值。 /// </summary> /// <param name="temperature">温度值</param> /// <param name="rtdType">RTD类型(PT100/PT1000),该参数决定R0为100还是1000</param> /// <returns></returns> public static double ConvertTemperatureToResistance(double temperature, RTDType rtdType = RTDType.PT100) { double r0; //0℃时RTD的阻值 switch (rtdType) { case RTDType.PT100: r0 = 100; break; case RTDType.PT1000: r0 = 1000; break; default: r0 = 100; break; } if (temperature <= 0 && temperature >= MinTemperature) { return(r0 * (1 + A * temperature + B * Math.Pow(temperature, 2) + C * (temperature - r0) * Math.Pow(temperature, 3))); } else if (temperature > 0 && temperature <= MaxTemperature) { return(r0 * (1 + A * temperature + B * Math.Pow(temperature, 2))); } else { return(-1); } }
/// <summary> /// 根据电阻值算出温度值。 /// </summary> /// <param name="resistance">电阻值</param> /// <param name="rtdType">RTD类型(PT100/PT1000),该参数决定R0为100还是1000</param> /// <returns></returns> public static double ConvertResistanceToTemperature(double resistance, RTDType rtdType = RTDType.PT100) { double normalizeFactor = 1; //使用RTTable前需对传入的resistance进行归一化,具体描述见RTTable的注释 switch (rtdType) { case RTDType.PT100: normalizeFactor = 100; break; case RTDType.PT1000: normalizeFactor = 10; break; default: normalizeFactor = 100; break; } //将电阻归一化到TRTable描述的R值上 int resistanceNormalized = (int)(resistance * normalizeFactor); return(Interpolation.LinearInterpolation1D(TRTable, 1, MinTemperature, resistanceNormalized)); }
/// <summary> /// Convert Voltage Value of RTD into Temperature Value /// </summary> /// <param name="temperature">Temperature Value Measured(the default unit is ℃)</param> /// <param name="resValue">Resistance Value of RTD(Unit:Ohm)</param> /// <returns></returns> public static double Convert(double resValue, RTDType type) { return(RTD3851ValueConvertor.ConvertResistanceToTemperature(resValue, type)); }
/// <summary> /// Convert Voltage Array of RTD into Temperature Array /// </summary> /// <param name="temperature">Temperature Array Measured(the default unit is ℃) </param> /// <param name="resValues">Resistance Array of RTD(Unit:Ohm) </param> /// <returns></returns> public static double[] Convert(double[] resValues, RTDType type) { return(Array.ConvertAll(resValues, new Converter <double, double>(x => RTD3851ValueConvertor.ConvertResistanceToTemperature(x, type)))); }