import math def pt100(t): """ PT100, 温度到电阻转换公式 从0℃~850℃: Rt=R0(1+A*t+B*t^2) 从-200℃~0℃: Rt=R0[1+A*t+Bt^2+C(t-100)*t^3] 式中: Rt----温度为t时的铂电阻的阻值 R0----温度为0时的铂电阻的阻值,即100Ω A=3.9083*10^(-3)℃^(-1) B=-5.775*10^(-7) ℃^(-2) C=-4.183*10^(-12) ℃^(-4) """ A = 3.9083 * (10 ** -3) B = -5.775 * (10 ** -7) C = -4.183 * (10 ** -12) R0 = 100 if 0 <= t <= 850: Rt = R0 * (1 + A * t + B * t * t) return Rt elif -200 <= t < 0: Rt = R0 * (1 + A * t + B * t * t + C * (t - 100) * t ** 3) return Rt else: raise ValueError("温度超范围 -200 ~ 800 度") def TC_T(t): ''' https://max.book118.com/html/2018/0907/8061021016001123.shtm RTD_T 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -270 <= t <= 0: a0 = 0.000_000_000_0 * 10 ** 0 a1 = 3.874_810_636_4 * 10 ** 1 a2 = 4.419_443_434_7 * 10 ** -2 a3 = 1.184_432_310_5 * 10 ** -4 a4 = 2.003_297_355_4 * 10 ** -5 a5 = 9.013_801_955_9 * 10 ** -7 a6 = 2.265_115_420_5 * 10 ** -8 a7 = 3.607_115_659_3 * 10 ** -10 a8 = 3.849_393_988_3 * 10 ** -12 a9 = 2.821_352_192_5 * 10 ** -14 a10 = 1.425_159_477_9 * 10 ** -16 a11 = 4.876_866_228_6 * 10 ** -19 a12 = 1.079_553_927_0 * 10 ** -21 a13 = 1.394_502_706_2 * 10 ** -24 a14 = 7.979_515_392_7 * 10 ** -28 result = sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, a9 * t ** 9, a10 * t ** 10, a11 * t ** 11, a12 * t ** 12, a13 * t ** 13, a14 * t ** 14, ]) / 1000 elif 0 < t <= 400: a0 = 0.000_000_000_0 * 10 ** 0 a1 = 3.874_810_636_4 * 10 ** 1 a2 = 3.329_222_788_0 * 10 ** -2 a3 = 2.061_824_340_4 * 10 ** -4 a4 = -2.188_225_684_6 * 10 ** -6 a5 = 1.099_688_092_8 * 10 ** -8 a6 = -3.081_575_877_2 * 10 ** -11 a7 = 4.547_913_529_0 * 10 ** -14 a8 = -2.751_290_167_3 * 10 ** -17 result = sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, ]) / 1000 return result def TC_E(t): '''TC/E 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -270 <= t <= 0: a0 = 0.000_000_000_0 * 10 ** 0 a1 = 5.866_550_870_8 * 10 ** 1 a2 = 4.541_097_712_4 * 10 ** -2 a3 = -7.799_804_868_6 * 10 ** -4 a4 = -2.580_016_084_3 * 10 ** -5 a5 = -5.945_258_305_7 * 10 ** -7 a6 = -9.321_405_866_7 * 10 ** -9 a7 = -1.028_760_553_4 * 10 ** -10 a8 = -8.037_012_362_1 * 10 ** -13 a9 = -4.397_949_739_1 * 10 ** -15 a10 = -1.641_477_635_5 * 10 ** -17 a11 = -3.967_361_951_6 * 10 ** -20 a12 = -5.582_732_872_1 * 10 ** -23 a13 = -3.465_784_201_3 * 10 ** -26 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, a9 * t ** 9, a10 * t ** 10, a11 * t ** 11, a12 * t ** 12, a13 * t ** 13, ]) / 1000 elif 0 < t <= 100: a0 = 0.000_000_000_0 * 10 ** 0 a1 = 5.866_550_871_0 * 10 ** 1 a2 = 4.503_227_558_2 * 10 ** -2 a3 = 2.890_840_721_2 * 10 ** -5 a4 = -3.305_689_665_2 * 10 ** -7 a5 = 6.502_440_327_0 * 10 ** -10 a6 = -1.919_749_550_4 * 10 ** -13 a7 = -1.253_660_049_7 * 10 ** -15 a8 = 2.148_921_756_9 * 10 ** -18 a9 = -1.438_804_178_2 * 10 ** -21 a10 = 3.596_089_948_1 * 10 ** -25 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, a9 * t ** 9, a10 * t ** 10, ]) / 1000 def TC_S(t): '''TC/S 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -50 <= t <= 1064.18: a0 = 0.00000000000 * 10 ** 0 a1 = 5.40313308631 * 10 ** 0 a2 = 1.25934289740 * 10 ** -2 a3 = -2.32477968689 * 10 ** -5 a4 = 3.22028823036 * 10 ** -8 a5 = -3.31465196389 * 10 ** -11 a6 = 2.55744251786 * 10 ** -14 a7 = -1.25068871393 * 10 ** -17 a8 = 2.71443176145 * 10 ** -21 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, ]) / 1000 elif 1064.18 < t <= 1664.5: a0 = 1.32900444085 * 10 ** 3 a1 = 3.34509311344 * 10 ** 0 a2 = 6.54805192818 * 10 ** -3 a3 = -1.64856259209 * 10 ** -6 a4 = 1.29989605174 * 10 ** -11 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, ]) / 1000 elif 1664.5 < t <= 1768.1: a0 = 1.46628232636 * 10 ** 5 a1 = -2.58430516752 * 10 ** 2 a2 = 1.63693574641 * 10 ** -1 a3 = -3.30439046987 * 10 ** -5 a4 = -9.43223690612 * 10 ** -12 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, ]) / 1000 def TC_R(t): '''TC/R 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -50 <= t <= 1064.18: a0 = 0.00000000000 * 10 ** 0 a1 = 5.28961729765 * 10 ** 0 a2 = 1.39166589782 * 10 ** -2 a3 = -2.38855693017 * 10 ** -5 a4 = 3.56916001063 * 10 ** -8 a5 = -4.62347666298 * 10 ** -11 a6 = 5.00777441034 * 10 ** -14 a7 = -3.73105886191 * 10 ** -17 a8 = 1.57716482367 * 10 ** -20 a9 = -2.81038625251 * 10 ** -24 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, a9 * t ** 9, ]) / 1000 elif 1064.18 < t <= 1664.5: a0 = 2.95157925316 * 10 ** 3 a1 = -2.52061251332 * 10 ** 0 a2 = 1.59564501865 * 10 ** -2 a3 = -7.64085947576 * 10 ** -6 a4 = 2.05305291024 * 10 ** -9 a5 = -2.93359668173 * 10 ** -13 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, ]) / 1000 elif 1664.5 < t <= 1768.1: a0 = 1.52232118209 * 10 ** 5 a1 = -2.68819888545 * 10 ** 2 a2 = 1.71280280471 * 10 ** -1 a3 = -3.45895706453 * 10 ** -5 a4 = -9.34633971046 * 10 ** -12 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, ]) / 1000 def TC_B(t): '''TC/B 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if 0 <= t <= 630.615: a0 = 0.00000000000 * 10 ** 0 a1 = -2.4650818346 * 10 ** -1 a2 = 5.9040421171 * 10 ** -3 a3 = -1.3257931636 * 10 ** -6 a4 = 1.5668291901 * 10 ** -9 a5 = -1.6944529240 * 10 ** -12 a6 = 6.2990347094 * 10 ** -16 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, ]) / 1000 elif 630.615 < t <= 1820: a0 = -3.8938168621 * 10 ** 3 a1 = 2.8571747470 * 10 ** 1 a2 = -8.4885104785 * 10 ** -2 a3 = 1.5785280164 * 10 ** -4 a4 = -1.6835344864 * 10 ** -7 a5 = 1.1109794013 * 10 ** -10 a6 = -4.4515431033 * 10 ** -14 a7 = 9.8975640821 * 10 ** -18 a8 = -9.3791330289 * 10 ** -22 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, ]) / 1000 def TC_J(t): '''TC/J 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -210 <= t <= 760: a0 = 0.00000000000 * 10 ** 0 a1 = 5.0381187815 * 10 ** 1 a2 = 3.0475836930 * 10 ** -2 a3 = -8.5681065720 * 10 ** -5 a4 = 1.3228195295 * 10 ** -7 a5 = -1.7052958337 * 10 ** -10 a6 = 2.0948090697 * 10 ** -13 a7 = -1.2538395336 * 10 ** -16 a8 = 1.5631725697 * 10 ** -20 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, ]) / 1000 elif 760 < t <= 1200: a0 = 2.9645625681 * 10 ** 5 a1 = -1.4976127786 * 10 ** 3 a2 = 3.1787103924 * 10 ** 0 a3 = -3.1847686701 * 10 ** -3 a4 = 1.5720819004 * 10 ** -6 a5 = -3.0691369056 * 10 ** -10 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, ]) / 1000 def TC_N(t): '''TC/N 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -270 <= t <= 0: a0 = 0.00000000000 * 10 ** 0 a1 = 2.6159105962 * 10 ** 1 a2 = 1.0957484228 * 10 ** -2 a3 = -9.3841111554 * 10 ** -5 a4 = -4.6412039759 * 10 ** -8 a5 = -2.6303357716 * 10 ** -9 a6 = -2.2653438003 * 10 ** -11 a7 = -7.6089300791 * 10 ** -14 a8 = -9.3419667835 * 10 ** -17 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, ]) / 1000 elif 0 < t <= 1300: a0 = 0.00000000000 * 10 ** 0 a1 = 2.5929394601 * 10 ** 1 a2 = 1.5710141880 * 10 ** -2 a3 = 4.3825627237 * 10 ** -5 a4 = -2.5261169794 * 10 ** -7 a5 = 6.4311819339 * 10 ** -10 a6 = -1.0063471519 * 10 ** -12 a7 = 9.9745338992 * 10 ** -16 a8 = -6.0863245607 * 10 ** -19 a9 = 2.0849229339 * 10 ** -22 a10 = -3.0682196151 * 10 ** -26 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, a9 * t ** 9, a10 * t ** 10, ]) / 1000 def TC_C(t): '''TC/c 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if 0 <= t <= 630: a0 = 0.00000000000 * 10 ** 0 a1 = 1.3406032 * 10 ** 1 a2 = 1.1924992 * 10 ** -2 a3 = -7.9806354 * 10 ** -6 a4 = -5.0787515 * 10 ** -9 a5 = 1.3164197 * 10 ** -11 a6 = -7.9197332 * 10 ** -15 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, ]) / 1000 elif 630 < t <= 2315: a0 = 4.0528823 * 10 ** 2 a1 = 1.1509355 * 10 ** 1 a2 = 1.5696453 * 10 ** -2 a3 = -1.3704412 * 10 ** -5 a4 = 5.2290873 * 10 ** -9 a5 = -9.2082758 * 10 ** -13 a6 = 4.5245112 * 10 ** -17 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, ]) / 1000 def TC_A(t): '''TC/A 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if 0 <= t <= 2500: a0 = 0.00000000000 * 10 ** 0 a1 = 1.1951905 * 10 ** 1 a2 = 1.6672625 * 10 ** -2 a3 = -2.8287807 * 10 ** -5 a4 = 2.8397839 * 10 ** -8 a5 = -1.8505007 * 10 ** -11 a6 = 7.3632123 * 10 ** -15 a7 = -1.6148878 * 10 ** -18 a8 = 1.4901679 * 10 ** -22 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, ]) / 1000 def TC_K(t): '''TC/T 热电偶 温度转电动势 计算函数 输入 : t (摄氏度) 输出 : e (毫伏) ''' if -270 <= t <= 0: a0 = 0.000_000_000_0 * 10 ** 0 a1 = 3.945_012_802_5 * 10 ** 1 a2 = 2.362_237_359_8 * 10 ** -2 a3 = -3.285_890_678_4 * 10 ** -4 a4 = -4.990_482_877_7 * 10 ** -6 a5 = -6.750_905_917_3 * 10 ** -8 a6 = -5.741_032_742_8 * 10 ** -10 a7 = -3.108_887_289_4 * 10 ** -12 a8 = -1.045_160_936_5 * 10 ** -14 a9 = -1.988_926_687_8 * 10 ** -17 a10 = -1.632_269_748_6 * 10 ** -20 return sum([ a0 * t ** 0, a1 * t ** 1, a2 * t ** 2, a3 * t ** 3, a4 * t ** 4, a5 * t ** 5, a6 * t ** 6, a7 * t ** 7, a8 * t ** 8, a9 * t ** 9, a10 * t ** 10, ]) / 1000 elif 0 < t <= 1300: a0 = -1.760_041_368_6 * 10 ** 1 a1 = 3.892_120_497_5 * 10 ** 1 a2 = 1.855_877_003_2 * 10 ** -2 a3 = -9.945_759_287_4 * 10 ** -5 a4 = 3.184_094_571_9 * 10 ** -7 a5 = -5.607_284_488_9 * 10 ** -10 a6 = 5.607_505_905_9 * 10 ** -13 a7 = -3.202_072_000_3 * 10 ** -16 a8 = 9.715_114_715_2 * 10 ** -20 a9 = -1.210_472_127_5 * 10 ** -23 c0 = 1.185_976 * 10 ** 2 c1 = -1.183_432 * 10 ** -4 # return (sum([ # a0 * t ** 0 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a1 * t ** 1 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a2 * t ** 2 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a3 * t ** 3 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a4 * t ** 4 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a5 * t ** 5 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a6 * t ** 6 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a7 * t ** 7 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a8 * t ** 8 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # a9 * t ** 9 + c0 * math.exp(c1 * (t - 126.968_6) ** 2), # ]) + a0) / 1000 result = (((((((((a9 * t + a8) * t + a7) * t + a6) * t + a5) * t + a4) * t + a3) * t + a2) * t + a1) * t + a0) / 1000 if 0 < t <= 19: result += 0.02 elif 21 <= t <= 39 : result += 0.04 elif 40 <= t <= 49 : result += 0.05 elif 50 <= t <= 69 : result += 0.06 elif 70 <= t <= 79 : result += 0.07 elif 80 <= t <= 89 : result += 0.08 elif 90 <= t <= 99 : result += 0.09 elif 100 <= t <= 119 : result += 0.1 elif 120 <= t <= 149 : result += 0.11 elif 150 <= t <= 169 : result += 0.12 elif 170 <= t <= 179 : result += 0.11 elif 180 <= t <= 189 : result += 0.1 elif 190 <= t <= 199 : result += 0.08 elif 200 <= t <= 209 : result += 0.07 elif 210 <= t <= 219 : result += 0.06 elif 220 <= t <= 229 : result += 0.05 elif 230 <= t <= 239 : result += 0.03 elif 240 <= t <= 269 : result += 0.02 elif 270 <= t <= 299 : result += 0.01 return result def temToMv(varType, temValue): if varType == 'T': return TC_T(temValue) elif varType == 'E': return TC_E(temValue) elif varType == 'S': return TC_S(temValue) elif varType == 'R': return TC_R(temValue) elif varType == 'K': return TC_K(temValue) elif varType == 'J': return TC_J(temValue) elif varType == 'N': return TC_N(temValue) elif varType == 'C': return TC_C(temValue) elif varType == 'A': return TC_A(temValue) elif varType == 'B': return TC_B(temValue) elif varType == 'PT100': return pt100(temValue)