1. 修井起下钻压力曲线基线建立与异常初筛
为什么先建基线,再谈异常
起下钻期间的压力曲线受三类因素叠加影响:静液柱随钻具入井/出井变化、抽汲与激动效应、摩阻与波动。若直接对原始曲线设固定阈值,会把正常的接单根停顿、开泵循环、钻具加速段误判为异常。因此本例的做法是:先按工况分段,用正常井段拟合出"压力—井深"基线带,再以基线带的统计离散度设定阈值,最后对全井段逐点残差做初筛,输出疑似异常井段清单。
数据对象与工况分段
示例井为一口典型修井作业井,起下钻实测数据按 1 s 采样,字段包括:时间 t、井深(钻具下入深度)h、立管压力 p、套压 pc、作业状态码 st(0=静止、1=下钻、2=起钻、3=循环、4=接单根)。基线只使用 st∈{1,2} 且处于匀速段的样本,静止与循环段单独建模,不混入基线。
基线建立与阈值设定
正常工况下,起下钻压力与井深近似线性,但起钻与下钻斜率符号相反、摩阻项不同,因此分方向建模:
p_base(h, dir) = a_dir * h + b_dir
残差 r = p_meas - p_base(h, dir)
阈值 T = k * sigma_r, k = 3(示例取值)
sigma_r 由正常井段残差的标准差估计
示例拟合结果(教学示例数据,非实测):下钻 a=0.0182 MPa/m, b=1.35 MPa, sigma_r=0.21 MPa;起钻 a=-0.0175 MPa/m, b=1.62 MPa, sigma_r=0.24 MPa。对应阈值下钻约 0.63 MPa、起钻约 0.72 MPa。残差连续超过阈值且持续 ≥ 30 s 才计为一段疑似异常,避免单点毛刺误报。
初筛实现(可直接运行)
下面代码用示例数据完成分段、拟合、阈值计算与异常段合并,输出疑似异常井段清单。数据为教学构造,运行结果用于演示判读逻辑。
import numpy as np
# 教学示例数据:t, h, p, st(1=下钻 2=起钻 0=静止 3=循环)
data = np.array([
[0, 0, 1.35, 1], [10, 100, 3.17, 1], [20, 200, 4.99, 1],
[30, 300, 6.81, 1], [40, 400, 8.63, 1], [50, 500, 10.45, 1],
[60, 600, 12.27, 1], [70, 700, 14.09, 1], [80, 800, 15.91, 1],
[90, 900, 17.73, 1], [100,1000,19.55, 1],
[110,1000,19.55, 0], [120,1000,19.55, 0],
[130,1000,20.90, 2], [140,900, 18.90, 2], [150,800, 17.10, 2],
[160,700, 15.30, 2], [170,600, 13.50, 2], [180,500, 11.70, 2],
[190,400, 9.90, 2], [200,300, 8.10, 2], [210,200, 6.30, 2],
[220,100, 4.50, 2], [230, 0, 2.70, 2],
])
def fit_baseline(seg):
h, p = seg[:, 1], seg[:, 2]
a, b = np.polyfit(h, p, 1)
r = p - (a * h + b)
return a, b, r.std(ddof=1)
def screen(data, k=3.0, min_dur=30):
out = []
for d in (1, 2):
seg = data[data[:, 3] == d]
a, b, s = fit_baseline(seg)
T = k * s
r = seg[:, 2] - (a * seg[:, 1] + b)
flag = np.abs(r) > T
# 合并连续超限样本,按时间跨度过滤
i = 0
while i < len(flag):
if flag[i]:
j = i
while j + 1 < len(flag) and flag[j + 1]:
j += 1
if seg[j, 0] - seg[i, 0] >= min_dur:
out.append((d, seg[i, 0], seg[j, 0],
seg[i, 1], seg[j, 1], r[i:j+1].mean()))
i = j + 1
else:
i += 1
print(f"dir={d} a={a:.4f} b={b:.2f} sigma={s:.3f} T={T:.2f}")
return out
for row in screen(data):
print("疑似异常段:", row)
示例数据中下钻段残差均在阈值内,起钻段在 h≈1000→800 m 区间出现正残差超限,输出一条疑似异常段(起钻方向、时间 130–150 s、井深 1000→800 m、平均残差约 +1.1 MPa)。该结果提示该井深区间在起钻时存在额外压力来源,需结合套压与循环工况复核,这正是后续案例要展开的方向。