智能温度变送器信号处理软件算法与软件设计

2016/12/8 19:27:05 人评论 次浏览 分类:变送器  文章地址:http://yunrun.com.cn/tech/1175.html

针对热电偶传感器电偶热电势与温度之间的非线性以及热电阻传感器阻值与温度间的非线性特征,设计一种通用智能温度变送器,并对现在广泛应用的线性化算法进行了改进。通过引入牛顿迭代法及Horner算法等对其进行分段的线性化拟合,提高智能温度变送器测量的精度,同时有效降低对存储空间的要求。 
智能温度变送器 yr-er-213
 
热电偶和热电阻温度变送器是工业上常用的温度测量设备,对其在通用性、精确度和成本方面的研究和改进具有很大的现实意义。本文所依托的硬件采用通用型的数据接口,基于热电偶和热电阻温度传感器相应的转化为电势/电阻和温度之间的非线性关系的物理特性,采用通用型的数据接口有利于产业标准化和降低成本。此次算法优化是考虑到仪表智能化趋势,利用牛顿迭代法和Horner算法等提高测量精度,同时降低空间复杂度,节约存储空间。本文通过函数计算实现热电偶、铜电阻和铂电阻的高精度测量,程序中涉及的系统常量存储于智能温度变送器RAM中,具有很高的可移植性。

1、软件流程方案
本文方案基于C语言,并且在软件设计上尽量减少其与硬件的关联性,增强可移植性,有利于此类算法的推广应用。在程序执行中,处理传感器采集的数据需要调用大量的常量数据,以数组的形式存储,是实现高精度非线性拟合所必不可少的。

此次智能温度变送器设计相对于温度传感器来说通用型的,首先要在接受到传感器温度转换请求之后辨别其类型,然后才能根据其型号进行数据信号的处理。若传感器类型为热电阻,则转入根据电阻与温度之间的非线性关系求温度的程序中,此时利用牛顿迭代法对非线性曲线进行分段拟合,进而处理采集数据求出温度值并显示;如传感器类型为热电偶,则一般要进行冷端温度补偿,冷端电阻根据温度反求补偿电动势。基于冷端温度相对稳定和环境的可控性,根据热电阻所反求的补偿电动势精度在允许范围内。冷端温度测定传感器程序调用软件中固有的热电阻测温子程序,降低了通用型温度变送器的程序复杂度。

2、热电阻传感器算法
本文以铜电阻和铂电阻为例进行分析,如若电阻型号不一致,只需重新载入参数和电阻分度号,其算法是一致的。首先通过strcmp()函数确定电阻分度号,示例如下:
Strcmp(category,″pt10″)==0;//category[]是电阻类型数组。

确定热电阻传感器类型之后,根据不同的温度区间赋予数组para[]不同的数组参数并确定其数组长度。

牛顿迭代法是最常用的将非线性方程线性化求解的方法之一。在非线性化的拟合中,用牛顿迭代法在算法设计中对热电阻分段经验方程即非线性方程f(t)=0进行求解,算式为t1=t0-[f(t0)/f′(t0)]。若满足|t1-t0|<X,则输出满足精度X的根t1;否则将t1赋值给t0,继续迭代计算t1,直到满足要求的解t1为止。但是考虑到空间复杂度和时间复杂度,一般应用中不会超过两次迭代。

程序设计中利用传感器热电阻的相关标准参数和分段经验方程作为算法应用的基础。算法时间复杂度为(3n),n为迭代次数。算法中程序的空间复杂度为30Byte。

3、热电偶冷端补偿算法
热电偶测温需要冷端补偿,因为将热电偶冷端保持0℃附近缺乏实际的可操作性。本算法设计通过热电阻测温法确定冷端温度,然后根据其非线性特性反求出热电偶补偿电势。热电偶冷端补偿电动势由独立子程序来求,参数为冷端温度值和冷端电阻类型,冷端温度值由以上所述的热电阻传感器求温程序得到,冷端电阻类型为预先设定的函数常量。被测冷端温度设定在现实环境下的取值范围为-50~100℃,完全符合现实情况并留出了足够的余量。

Horner算法是计算多项式函数值的标准化算法,程序设计中由冷端温度值推算出冷端补偿电势的过程中,使用Horner规则节省多项式的计算量。

4、热电偶传感器综合算法
热电偶类型传感器测温首先应根据冷端温度和智能温度变送器所需要的测量精度来确定是否需要冷端电势补偿。若得到需要补偿的参数确认,则调用冷端补偿程序以冷端温度值和热电偶分度号为参数反求补偿电动势,联合热电偶电动势参数获得补偿后的电动势,否则可直接调用热电偶电动势作为形参导入。系统工作顺序流程如图1所示。


图1 热电偶传感器系统流程图

由于热电偶传感器根据分度号的不同,其热电势和温度间的非线性曲线有相当大的差异,所以对不同分度号的热电偶传感器要分别进行非线性拟合,其线性化算法是一致的。在函数文件中应导入大量的数据常量,可以在头文件中进行声明,相应地,对其每种分度号的经验标准函数公式也是程序算法运算的基础,必须清晰而准确。基于某一种特定的分度号热电偶传感器非线性化特性的不同特点,为了准确拟合,需要根据精确度的要求进行分段线性化,以达到本设计所期望的精确度和时间空间复杂度。热电偶测温总调用程序示例如下:
If(compensate==1)
{
Ctemp=resistanceTemp(ccategory,rcvalue);
Cpotential=coldCompensate(ctemp,ccatego-ry);
Value+=cpotential;
}
Temp=(float)couple2Temp(category,value);
Returntemp;
算法亦采用Horner规则节省多项式运算的计算量,时间复杂度为O(n),其中n为系数的长度。系统基于以上算法同时节省了存储空间,在空间复杂度上系统所占用的空间统计如表1所示。
                                  表1  空间统计

输入信号类型

系数个数

占用空间/Byte

R

 11+10+6+5=32

 256

S

 10+10+6+5=31

 248

B

 9+9=18

 144

J

 9+8+6=23

 184

T

 8+7=15

 120

E

 9+10=19

 152

K

 9+10+7=26

 208

N

 10+8+6=24

 192

合计

 188

 1504


5、结束语
本文智能温度变送器方案兼容热电偶和热电阻两种传感器,显著提高了其通用性和可移植性。在算法优化设计中使用了牛顿迭代法和Horner算法等被广泛应用的算法技巧,在原有条件下提高了测量精度并降低其时间/空间复杂度。文件函数包包含两个文件con-vert2Temp.h和convert2Temp.c文件。Con-vert2Temp.h文件为头文件,声明了实现高精度温度测量的常量和所需要的子函数。Convert2Temp.c文件为C语言的源代码文件,包含了在Covert2Temp.h中声明的所有函数的实现。本算法实现只是一种途径,重点在于对算法的不断改进以及通用性和可移植性不断探索。

在实际的智能温度变送器中,误差不仅仅来源于数据处理线性化拟合所带来的误差,接线阻值的影响、电源电压的影响、电子元器件噪声的影响等各种误差因素叠加在一起,综合表现为系统测量误差。所以,在实际的工业应用中,考虑成本及稳定性、反应时间等,以把数据处理的线性化误差降到对系统整体误差而言可以忽略的程度为最终标准。 
智能温度变送器信号处理软件算法与软件设计》作者上海理工大学光电信息与计算机工程学院 欧阳玉东,男,硕士研究生,研究方向:智能仪表

共有访客发表了评论 网友评论

  客户姓名:
邮箱或QQ:
验证码: 看不清楚?