工控网首页
>

应用设计

>

温度压力计的标定算法及软件实现

温度压力计的标定算法及软件实现

2007/11/6 13:23:00
1.引言 存储式井温压力计是一种高精度、高分辨率的井下温度和压力测试系统。它可以完成对井下温度和压力情况的长时间持续监测,尤其适用于测试油井流压、静压和压力恢复的任务中。但是国内存储试压力计的大都采用最小二乘法标定仪器,精确度不高,万分之5也很难达到。本文从压力计的标定算法入手,采用离散点数据逼近的原理,利用更高次的数值逼近的算法,提高压力计的测量精度。 2.存储式井温压力计简介 存储式井温压力计系统(以后简称压力计系统)可以相对独立的分为硬件系统和软件系统两部分。 软硬件系统之间是基于特定的通讯协议并通过串口进行数据交换。 软件系统负责标定硬件系统,对硬件系统设置参数,读取硬件采集的数据并进行数据解释处理。串口通讯程序是整个软件的最底层,数据处理、图形绘制和仪器标定都是通过它与硬件仪器交换数据的,这段程序与通讯协议有关。 硬件系统工作于井下,由PIC单片机芯片控制压力、温度传感器采样数据,并将数据存储于存储芯片中或直接发送给软件系统,该单片机的程序严格按照通讯协议编写,与软件系统的串口通讯程序进行互操作。 在数据处理过程中有下列名词。测量数据就是原始数据,是直接由硬件仪器采集的通过二进制转化为十进制的计数值数据。工程数据,就是将原始数据带入一定的公式计算后,得到的与原始数据对应的一个数据。标准数据则是在标定过程中使用的,如标准压力,标准温度等。在数据处理过程中,我们测量的工程数据都是标准数据的逼近值。 3.压力计系统的数据处理公式 仪器采集的数据是原始数据,原始数据向工程数据的转化是软件的主要任务,转化过程利用数学公式表示为:
 表示原始值;  表示工程值; ( )表示函数关系式。 通过实验数据来确定上述公式的函数关系式f()的过程就是仪器标定的过程。将试井中测量的原始数据利用函数关系式 f()计算出工程数据的过程就是数据解释的过程。 通常温度传感器的稳定性比较好,受外界干扰的因素少,通过实验温度原始数据与工程数据的对应关系满足线性关系。
(公式1) 根据上述公式,试验只需要从试验数据中选取两组值,即可计算出关系式中的常数系数K和B得值。因此对温度的标定非常简单。 压力的标定是比较复杂的。由于压力传感器的一般采用电气特性的设计原理,不管采用电位器的特性,还是电阻应变片的特性,在高温下,都会随温度的升高而使恒定的压力在经过传感器采集后产生飘移,这就是温飘现象。这种现象的存在,如果不对其进行补偿,肯定会影响到压力测量的准确度以及精度。 表1中的数据是已实现的标定软件在标定过程中记录的测量数据,首行首列都是标定用到的标准数据,表中为试验采集的测量数据。表中数据可以看出压力传感器采集的数据受到温度的影响,产生温飘现象。所以在计算压力工程值的过程中必须考虑到温度对工程值的影响,需要温度对其进行补偿。 利用离散数据的最佳平方逼近理论, 当 ( 是未知数的个数, 是参与运算的向量的维数)时的最佳平方逼近公式: 温度值(。C) 30.0000 50.0000 80.0000 100.0000 120.0000 压力(MPa) 频率1(KHz) 频率2(KHz) 频率3(KHz) 频率4(KHz) 频率5(KHz) 0.0000 2.0052 1.9960 1.9790 1.9667 1.9550 5.0000 2.1103 2.1037 2.0892 2.0782 2.0670 10.0000 2.2203 202133 2.2007 2.1915 2.1812 20.0000 2.4387 2.4325 2.4238 2.4170 2.4100 30.0000 2.6560 2.6527 2.6475 2.6432 2.6390 40.0000 2.8740 2.8718 2.8697 2.8683 2.8665 50.0000 3.0910 3.0910 3.0938 3.0942 3.0957 55.0000 3.2000 3.2008 3.2050 3.2067 3.2095 60.0000 3.3080 3.3100 3.3158 3.3190 3.3232 表1 压力标定实验数据表
利用矩阵的运算可以计算出系数
的值。最后得出:
, 就是压力值Y的最佳平方逼近。因此在压力数据处理中,测量并利用公式2计算出的 值来近似表示标准的压力值,因此公式中 的取值越接近 , 对Y的逼近程度越高,但同时对逼近离散点之间的值的逼近有一定的负面影响,因此 的取值应该综合考虑这方面的影响。而标定的过程就是利用公式2确定 系数的过程。 4.算法描述 4.1标定算法描述 根据“离散情况的最佳平方逼近”理论对数据进行拟合,最常用的方法就是最小二乘法。由于从应用精度的要求考虑,实现过程采用更高次的拟合。可以使在每个固定温度点上的压力原始数据向压力标准数据进行4次方逼近。则标准压力数据向量Y和压力原始数据的各次方向量 表示为:
代入公式2,可计算最佳逼近系数为 。为了便于存储设数组GG[5],HH[5],II[5],JJ[5],KK[5],将温度为30℃原始数据对标准数据的4次方逼近系数存入到数组中:GG[0] = ;HH[0] = ;II[0] = ;JJ[0] = ;KK[0] = 。同理运用同样的算法可求出温度分别固定在50℃,80℃,100℃,120℃时的原始压力数据向工程压力数据的逼近系数,如表2所示分别存储与数组GG[],HH[],II[],JJ[],KK[]中。 压力原始数据各列对标准压力数据列的4次方逼近产生的系数如表2中所示。为使温度对压力起到补偿的作用,我们再次运用最佳平方逼近使第一行中的温度工程数据向各行中的系数进行3次方逼近。首先将温度对0次方系数逼近计算出的4个系数按对应指数由小到大顺序存放在数组G[4]中,同理对其余的逼近系数分别存放在数组H[4],I[4],J[4],K[4]中,这些系数就是最后标定结果,也就是从原始数据向工程数据转化的函数关系式的系数项。 4.2数据解释算法描述 设采集的一组原始数据为 ,所谓一组数据是指在硬件仪器采集数据时同时采集到的温度和压力原始数据。由公式1,可将温度原始数据转化为温度工程数据
; 同理由压力的标定方法及所计算出的标定系数,压力原始值向压力工程值转化公式:
注明: 是对该点标准压力值 的最佳平方逼近,其与标准压力值之间存在一定的误差。所以为了描述采用该标定方法达到的精确程度,可以利用该逼近的相对误差来描述:相对误差 =
。为了提高精度可以在 情况下适当的提高平方逼近的次方数。 5.软件实现 5.1串口通讯 用串口通讯类直接继承Vc++环境提供的串口通讯控件Microsoft Communication Control 生成的类。用控件类提供的串口读写方法GetInPut(),SetOutPut()实现软硬件信息的传送。信息的格式按照一定的协议规定,软件与硬件之间的一次通讯传递的数据我们称为一帧,一帧的数据格式如表3。
对表3的协议格式几点说明: 1) 前导码,一个固定的字符串,用来表明一帧数据的首标。 2)命令码,用二进制位表示的命令类型,它总共支持64种命令,目前实现17种,常用的命令根据命令发送方的不同分两种,一是软件向硬件发送的命令,有实时采集,读存储器,写存储器等;其二是硬件向软件发送的命令,有发送实时数据,发送存储器数据,操作完成命令等。 3)响应标识,表示该帧数据是对哪一个命令码进行响应,该命令码就是该帧数据的响应标识。 4)数据起始地址,该字段用于对硬件仪器的存储器进行操作的命令码中。 5)数据长度,对于存储器读的命令,数据长度为从数据起始位开始,将要读取的数据长度;对于存储器写命令,则表示将要写入存储器起始位置的数据长度;非存储器读写的命令,则表示后面的数据的长度。 6)数据,由数据长度字段指定长度的数据。对于存储器读命令,该数据位为空。 通常,软件与硬件之间的交互有两种模式: 一种是标定模式,软件向硬件发送实时采集命令使硬件进入该模式,硬件仪器每隔一秒采样一组数据,并立即通过发送实时数据命令将这组原始数据发送给软件。软件使用ontimer()定时方法每隔一秒接收一次串口数据。通常在标定硬件仪器时采用这种模式。 另一种模式是数据解释模式,硬件通过一段时间的工作,将采集到的数据按组存在自身的存储器中,软件向硬件发送读存储器命令,硬件立即将存储器中指定地址段中的数据通过发送存储器数据命令送给软件。软件接收到数据后修改读存储器命令数据字段中的起始地址再次发送该命令,如此反复循环直到所有需要读取的数据读完为止。通常一次读取数据长度限制在256个字节以内。这种模式是存储式压力计系统正常工作的模式。 5.2 标定算法实现 软件通过标定模式将采集的原始压力数据存放在m_Hz[5][9]的数组中,并且数组m_pre[9]中存放标定的标准压力值,m_tem[5]中存放标定的标准温度值,数据如表2所示。计算标定系数的程序部分代码如下所术,并最终将标定系数存于G[4],H[4],I[4],J[4],K[4]数组中。 double X[100],Y[100]; double COEFF[20][20]; double GG[5],HH[5],II[5],JJ[5],KK[5],G[4],H[4],I[4],J[4],K[4];
投诉建议

提交

查看更多评论