×
嵌入式 > 技术百科 > 详情

智能仪表非线性自动校正方法探讨

发布时间:2020-06-13 发布时间:
|
引言

  智能仪表的模拟输入通道一般由传感器、前置放大电路、有源滤波器、采样保持电路(S/H)、A/D转换器和微机系统等电路组成[1]。由于电子元器件性能参数的离散性、稳定性和温度敏感性等问题,目前还得不到根本的解决。因此,从传感器到A/D 转换之间的任何一个环节都存在非线性的问题,使得A/D转换值n与被测量x不成线性关系,即n≠ax+b(a、b为常数)[2]。如果不解决这种非线性问题,将会严重影响智能仪表的测量精度。常用的非线性校正方法有校正函数法、查表法和模型校正法[s]。

  ① 校正函数法要求传感器的输入/输出特性能用数学解析式表示,且输入通道的其它环节可认为是线性的。事实上,很多传感器的输入/输出特性很难用解析式表示,并且如果解析式计算太复杂,还会严重影响测量速度。因此,校正函数法的应用受到较大的局限[4]。

  ② 查表法必须针对每一个传感器进行校正,而且需要把大量的校正数据制成表格存入仪表内存。而一般的智能仪表的内存非常有限;当因故更换传感器时,需要重新校正、修订内存中的表格数据,应用起来也非常不方便[5]。

  ③ 模型校正法的基本原理是设法找到一个近似函数g1(x)或多个分段近似函数g1(x)、g2(x)、g3(x)、g4(x)等来代替原函数f(x)。模型校正法的关键是如何求出既能满足精度要求,又能满足计算简单的校正模型。通常校正模型计算太复杂会影响测量速度,所以采用模型校正法进行非线性校正时,往往采用离线处理的方式[6]。

  针对智能仪表不便于进行复杂计算、内存有限和实时性要求高等特点,在比较了几种常用的非线性校正方法的基础上,通过对智能仪表的非线性特性曲线的一般性分析,运用分段直线逼近曲线的方法,给出了一种通用的智能仪表非线性自动校正算法。

  1 非线性自动校正算法

  采用分段直线方程的非线性校正原理如图l所示。设仪表的被测量用X表示,仪表中对应的灯D转换值用N表示,则曲线OM表示仪表的非线性特性曲线。现将曲线分成若干段,如果分段点的位置和分段数选取合适,则每一段曲线可近似看成是一直线段。这样,曲线OM就可看成是由若干直线段组成。如图中虚线段AB、BC可分别近似表示曲线AB和曲线BC。

  

 

  图1中:曲线OM分段后各段端点对应的被测信号分别为X0, X1,X2,…,Xi-1, Xi, Xi+1,…,Xm;仪表中对应的A/D转换值分别为N0, N1, N2,…,Ni, Ni+1, … ,Nm。其中,x0为被测量的最小值,Xm为被测量的最大值。显然线段AB的斜率为:

  

 

  曲线段AB上的点(n,f(n)),可用直线段AB上的点P(n,x)近似表示,而点P满足:

  

 

  式(2)、式(3)就是得到的分段直线校正方程。其中式(2)可称为点斜式校正方程,因为校正方程由线段上的端点(从Ni-1,Xi-1)和斜率ki决定;式(3)可称为两点式校正方程,因为校正方程由线段上的两端点(Ni-1, Xi-1)和(Ni,Xi)决定。

  在校准时,若采用点斜式校正方程,则依次把校正方程参数(Ni-1,Xi-1)和ki(其中i=1,2,3,…,m)存入仪表的内存;若采用两点式校正方程,则依次把校正方程参数(Ni,Xi)(其中i=0,1,2,3,…,m)存入仪表的内存。在实际测量时只要先用程序判断仪表当前的A/D转换值N位于哪一个直线段,再从仪表内存中取出相应直线段的校正方程参数,则可由校正方程求出相应的测量值X。

  从校正方程可以看出,测量值只与校正点的测量数据有关,而与包括传感器在内的模拟输入通道的各环节的非线性并无直接关系。因此,只要仪表的重复性或稳定性较好,即在不同时刻测量同一被测量X时,得到的A/D转换值N始终或基本保持不变,不论非线性是由于传感器还是因为模拟输入通道的其它环节引起的,都可以达到非线性校正的目的,从而保证仪表的测量精度。理论上讲,分的段数越多,仪表的测量精度就越高,但相应地,占用仪表的内存也越多,测量速度也会有少许影响,校准时也会稍微复杂。

  需要指出的是,各种智能仪表存在较大的差异,实际应用中要视具体情况对非线性校正方程进行必要的修正。

  2 在称重仪表中的应用

  在电子衡器中,广泛采用的称重传感器是压力或拉力传感器。不论传感器的量程多大,其满度输出一般为2mV左右,因此,对于同一种类型(静态或动态)的电子衡器而言,往往可以采用通用的称重仪表。

  电子衡器尤其是商用电子衡器,不仅对称重精度有很高的要求,而且对实时性也有较高的要求。因此,称重仪表的非线性校正必须采用在线方式。

  2.1 非线性自动校正方程的修正

  在称重仪表中,最小测量值x0=0kg,对应的零点值N0≠0,而且会随着环境温度的变化而变化,实际测量时,各校正点Xi对应的A/D转换值Ni(i=1,2,3,…)也会因零点的变化而相应发生变化。也就是说,环境温度变化后,实际测量时,当被测量为 Xi时,仪表内部获取的A/D转换值不再是校正时的Ni,从而使得按上述校正方程式(2)或式(3)求取的测量校正值是错误的或不准确的。

  实验证明,称重仪表的零点值N0受环境温度的影响较大,而其非线性特性曲线受环境温度的影响较小[7]。如图1中所示,N0发生变化后,可以近似认为非线性特性曲线OM只是适当左移或右移。也就是说,尽管N0是变化的,而Ni-N0(i=1,2,3,… )可以认为是不变的。

  一般来说,每天的不同时刻都会存在一定的温差,但每天的温度变化都非常缓慢,称重仪表的零点在使用过程中的变化也非常缓慢。根据这个特点,我们完全可以用软件的方法实现零点跟踪,即在某个较短的时间段(如0.5s)内,若采样到的A/D值n与之前的零点N0之差的绝对值不超过某个较小的数值,则令N0=n。

  鉴于仪表的零点值N0受环境温度的影响较大,非线性校正方程要作相应的修正:不管是校正时还是实际测量时,均把得到的A/D转换值减去零点值N0。此时,点斜式校正方程修正为:

  

[page]
2.2 校正方程参数的存储结构

  对于点斜式校正方程式(4)而言,要存入仪表内存的校正方程参数为:Mi-1、Xi-1和ki(i=l,2,3,…m;M0=X0=0),可用一个三维数组形式的表格存放。

  对于两点式校正方程式(5)而言,要存入仪表内存的校正方程参数为:Mi、Xi(i=0,1,2,3,…,m;M0=x0=0),可用一个二维数组形式的表格存放。

  考虑到M0=x0=0,故M0和X0不必保存,但应在表首位置存储校正点数j。两个校正方程的校正参数在仪表内存中的存储结构分别如图2所示,其中Tab.l和Tab.2分别表示内存参数表首地址。

  

 

  2.3 非线性自动校正

  从两个校正方程可以看出,点斜式只要做一次乘法运算,而两点式要做一次乘法运算和一次除法运算。考虑到:计算斜率ki时,为了保证测量精度,小数点后需要保留足够的位数,视具体情况而定;而智能仪表中采用的微控制器通常不方便做小数乘法运算,而且位数越多、运算越耗时;另外,当分段数大于3时,点斜式比两点式所需内存空间要多。因此,对于在线实时校正的智能仪表来说,采用两点式校正方程往往更合适一些。这里选用式(5)作为校正方程。为了描述时区分校正方程中的变量和仪表内存中存储的校正参数,对校正方程做如下变量代换,令a=Xi-1,b=Xi,C=Mi-1,d=Mi,则校正方程式(5)变为:

  

 

  称重计量时的非线性校正要解决以下三个问题。

  ①如何找出N位于哪一个直线段,考虑到校正点数不会太多,可采用简单的顺序查找法。

  ②在没有进行校正前,仪表如何显示实测重量。

  按全量程线性处理,即把量程的最大值Xm作为唯一校正点,但校正点数j记为0,表示未进行过校正。因此,仪表内存参数表初始化时,j处保存0、M1处保存Nm-N0、X1处保存Xm和Xm是可以预知的,而N0也可以估算出来或通过实测获得。

  ③当实际称量物体的重量超过最大校准点重量时,仪表如何显示实测重量。

  按最大校准点求得的校正参数进行校正。因此,称重仪表(电子衡器)称重计量和校准时的非线性自动校正程序流程分别如图3和图4所示。

  

 

  

 

  称重仪表(电子衡器)的校准过程如下:

  ①在称重仪表预热后,按功能键(为安全起见,可要求输入一串验证码),进入校准状态,此时仪表按原校准参数显示重量值;

  ②称量重。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题