You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

599 lines
17 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import math
def pt100(t):
"""
PT100, 温度到电阻转换公式
从0℃~850℃
Rt=R01+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)