气压补偿方法 - 技术细节
本节详细介绍压力值的计算方法,以及如何根据用户提供的信息将压力和温度值转换为水位或传感器深度。在相关讨论中,会包含公式。
术语表
Traw 记录仪的原始12位温度值
Treal 通过传递函数处理后的温度值
Tref 参考时间的温度值
Praw 记录仪的原始14位压力值
Preal 通过传递函数处理后的压力值,该传递函数是原始压力和原始温度的函数。
Pbaro0 用户选择的参考时间的气压
Pconst 气压恒定值
Dref 参考时间的计算参考水深,从井下压力数据中提取
Dbaro0 参考时间的计算气压“深度”,从气压数据中提取
Dreal[] 实际计算的传感器深度值数组
Lmeas 从固定参考点(如井盖或海平面)手动测量的参考水位
Lreal[] 实际计算的水位值数组
ρ 密度
k 气压补偿常数
压力计算
气压补偿由一组Java类执行,这些类封装了将压力值转换为真实深度读数的过程。在进行气压补偿之前,必须将记录仪的原始值转换为实际压力。HOBOware的通信接口负责从记录仪中提取原始A/D压力和温度数据(原始计数),并进行初始处理以得到实际压力和温度,具体如下。
1. 从记录仪中提取原始12位温度值(Traw)。
2. 从记录仪中提取原始14位压力值(Praw)。
3. 从记录仪内部的EEPROM中提取传递函数/校准常数(Kn……K2、K1、K0以及Jn……J2、J1、J0)。
4. 对Traw数据应用传递函数以生成Treal。
5. 对Praw数据应用传递函数以生成Preal。
6. 将Treal和Preal值存储在结果数据集的不同通道中。
然后将结果数据集传递给HOBOware用户界面,以便在BCA中进行后处理。下面介绍这种后处理。
水位/深度计算
计算水位或传感器深度有多种选项,可分为两类:使用参考水位和不使用参考水位。推荐的方法是使用测量的参考水位,因此首先介绍该方法。
使用参考水位
注意,此选项计算的是相对于固定参考点的水位,而非流体深度。
首先,计算经过温度和密度校正的深度数组。此深度假设所有压力均来自水头(无气压)。
要计算此数组,首先计算流体密度。流体密度可由用户选择的密度确定,或通过参考时间的温度计算得出,公式如下:
ρ = (999.83952 + 16.945176 Tref - 7.9870401e-03 Tref2 - 46.170461e-06 Tref3 + 105.56302e-09 Tref4 - 280.54253e-12 Tref5) / (1 + 16.879850e-03 Tref) [1]
密度转换为磅/立方英尺(lb/ft3)的公式为:
ρ = 0.0624279606 ρ [2]
然后,通过以下公式将井下压力值数组P转换为与密度相关的流体深度数组D[]:
D[]= FEET_TO_METERS * (KPA_TO_PSI * PSI_TO_PSF * P) / ρ [3]
其中,
FEET_TO_METERS = 0.3048
KPA_TO_PSI = 0.1450377
PSI_TO_PSF = 144.0
然后从数组中提取参考时间的密度相关深度值:
Dref = D[参考时间]
计算水位值的其余步骤可通过以下三种方式之一完成:
使用气压数据文件
如果用户选择使用气压数据文件进行补偿,将执行以下步骤。
确定气压数据集中与所选参考时间最接近的压力值。如果气压通道中没有与参考时间一致的时间点,则通过线性插值确定该值。此参考压力称为Pbaro0。
接下来,确定参考时间的流体密度。该密度可以是用户输入的密度,也可以通过公式1和2计算得出,结果为ρref。
使用公式3将参考时间的压力转换为气压“深度”,结果为Dbaro0。
补偿常数k通过以下公式确定:
k = Lmeas - (Dref - Dbaro0) [4]
此时,将补偿常数应用于数组D中的每个井下气压深度读数。此处的重要步骤是确定要使用的正确气压值。由于BCA不要求气压通道与井下压力通道具有相同的采样时间,因此有时可能需要在与井下压力值最接近的点之间对气压值Pbaro进行插值。
遍历整个井下通道,将补偿常数应用于上述计算的与密度相关的流体深度值。此步骤用于调整与密度相关的深度值,以补偿气压波动。通过以下公式确定:
Lreal[]= D[] – Dbaro[] + k [5]
其中,Lreal[] 是实际水位值数组(相对于固定参考点),D是前面计算的与密度相关的流体深度数组,Dbaro是数组中对应时间点的气压深度(使用公式3计算),k是补偿常数。Lreal的值存储在新的水位通道中,并添加到可绘制的通道列表中。
不使用气压数据
如果用户选择不使用气压数据文件,生成水位的过程虽然简单,但准确性较低。在这种情况下,水位值不考虑气压波动。此时,补偿常数定义为:
k = Lmeas - Dref [4]
遍历整个井下通道,将补偿常数应用于上述计算的与密度相关的流体深度值。实际水位值数组通过以下公式计算:
Lreal[] = D[] + k [5]
Lreal的值存储在新的水位通道中,并添加到可绘制的通道列表中。
使用恒定气压
使用参考水位和恒定气压生成水位的公式会导致恒定压力项被消去。由于恒定气压值不影响最终水位,因此BCA中有意禁用了此选项。
不使用参考水位
如果没有参考水位数据,唯一的选择是计算水面以下的传感器深度。这可以使用用户提供的气压数据文件或恒定气压值来完成。使用气压数据文件是两种方法中更准确的一种,因此首先介绍。
使用气压数据文件
遍历整个井下数据数组。首先为数组中的每个时间点生成流体密度ρ。流体密度可由用户选择的密度确定,或通过参考时间的温度使用公式1和2计算得出。
接下来,通过以下公式计算每个时间点的水压Phyd[]:
Phyd[t] = Preal[t] – Pbaro[t] [6]
其中,Preal[] 是测量的井下压力值数组,Pbaro[]是测量的气压值数组。
最后,使用公式3将水压转换为传感器深度Dreal。Dreal的值存储在新的传感器深度通道中,并添加到可绘制的通道列表中。
使用恒定气压
第一步是获取恒定气压值Pconst,必要时转换为千帕(kPa)。
接下来,遍历整个井下数据数组。首先为数组中的每个时间点生成流体密度ρ。流体密度可由用户选择的密度确定,或通过参考时间的温度使用公式1和2计算得出。
接下来,通过以下公式计算每个时间点的水压Phyd[]:
Phyd[t] = Preal[t] – Pconst [7]
其中,Preal[] 是测量的井下压力值数组。
最后,使用公式3将水压转换为传感器深度Dreal。Dreal的值存储在新的传感器深度通道中,并添加到可绘制的通道列表中。