1. 单孔爆破振动监测数据整理与PPV初算

单孔爆破振动记录的数据结构

现场振动监测仪通常按“通道—采样点”方式记录,一次单孔爆破会得到三通道(径向 L、切向 T、垂向 V)的离散速度时程。整理阶段要解决三件事:把仪器原始记录转成统一字段、逐采样点合成峰值速度、再从合成时程中提取 PPV 及其对应时刻。PPV 的定义为各采样点三向合速度的最大值:

vR(i) = √( vL(i)² + vT(i)² + vV(i)² ),PPV = maxi vR(i)

注意 PPV 不是三个通道各自峰值再合成,而是先逐点合成再取最大,两者结果不同,后者会系统性高估。

单孔爆破振动记录 → 标准PPV数据表 仪器原始记录(示例) t(ms) L T V 0 0.0 0.0 0.0 2 0.8 -0.5 0.3 4 2.1 -1.4 0.9 6 3.6 -2.2 1.5 8 2.9 -1.8 1.2 10 1.1 -0.7 0.4 单位 mm/s,采样间隔 2 ms 清洗与规范化 · 去零漂/基线偏移 · 剔除触发前空段 · 三通道时间对齐 · 统一单位 mm/s · 记录爆次/孔号/测点 保留原始值,另存清洗列 逐点合速度与峰值提取 vR(i)=√(L²+T²+V²) i=4: √(2.1²+1.4²+0.9²) = 2.66 mm/s i=6: √(3.6²+2.2²+1.5²) = 4.48 mm/s ← PPV 峰值时刻 t=6 ms,主频通道 L 标准数据表(回归输入) 爆次 孔号 测点 单段药量Q(kg) 爆心距R(m) PPV(mm/s) 峰值时刻(ms) B01 1# P1 12.0 35.0 4.48 6 B02 2# P1 10.5 35.0 3.92 8 B03 3# P1 14.0 35.0 5.10 6 注:表中数值为教学示例数据;PPV 由逐点合速度取最大得到,非三通道峰值再合成。

清洗与字段规范

整理时先固定字段口径,避免后续回归时混用不同来源的记录。建议每条记录至少包含:爆次编号、孔号、测点编号、单段药量 Q(kg)、爆心距 R(m)、三通道峰值、合成 PPV(mm/s)、峰值时刻(ms)、采样率与仪器编号。清洗动作按以下顺序执行:

  1. 去基线:取触发前 200 ms 的平均值作为零漂,三通道分别减去该值,避免直流偏置抬高合速度。
  2. 截取有效段:以触发点为起点,保留至振动幅值衰减到峰值的 5% 以下,防止尾部噪声参与峰值搜索。
  3. 时间对齐:三通道采样率一致时按索引对齐;若存在通道延迟,按仪器标定的通道时差平移后再合成。
  4. 单位统一:全部换算为 mm/s,药量统一为 kg,距离统一为 m,避免回归时量纲错位。
不要用“三通道各自峰值再平方和开方”代替逐点合成。前者对应不同时刻的三个最大值,物理上不对应同一瞬间的质点运动,会系统性高估 PPV,通常偏大 5%~20%。

PPV 初算的实现

下面用一段可直接运行的 Python 代码完成从原始三通道记录到标准表的全过程。示例数据为教学构造,运行后应得到 PPV = 4.48 mm/s、峰值时刻 6 ms。

import numpy as np
import pandas as pd

# 教学示例:单孔爆破,采样间隔 2 ms,三通道速度 (mm/s)
raw = pd.DataFrame({
    "t_ms": [0, 2, 4, 6, 8, 10],
    "L":    [0.0, 0.8, 2.1, 3.6, 2.9, 1.1],
    "T":    [0.0, -0.5, -1.4, -2.2, -1.8, -0.7],
    "V":    [0.0, 0.3, 0.9, 1.5, 1.2, 0.4],
})

# 1) 去基线:用触发前首点作为零漂参考(示例中为 0)
for ch in ["L", "T", "V"]:
    raw[ch] = raw[ch] - raw[ch].iloc[0]

# 2) 逐点合速度
raw["vR"] = np.sqrt(raw["L"]**2 + raw["T"]**2 + raw["V"]**2)

# 3) 提取 PPV 与峰值时刻
idx = raw["vR"].idxmax()
ppv = raw.loc[idx, "vR"]
t_peak = raw.loc[idx, "t_ms"]

# 4) 组装标准记录
record = {
    "爆次": "B01", "孔号": "1#", "测点": "P1",
    "Q_kg": 12.0, "R_m": 35.0,
    "PPV_mm_s": round(ppv, 2), "t_peak_ms": int(t_peak),
    "采样间隔_ms": 2,
}
print(record)
# {'爆次': 'B01', '孔号': '1#', '测点': 'P1', 'Q_kg': 12.0,
#  'R_m': 35.0, 'PPV_mm_s': 4.48, 't_peak_ms': 6, '采样间隔_ms': 2}

批量处理时把上述逻辑封装为函数,对每个爆次文件循环调用,最后 pd.concat 成一张总表并导出 CSV。关键校验点:

  • PPV 必须出现在有效段内,若峰值落在截取边界,说明截取窗口过短,需回看原始波形。
  • 三通道峰值时刻应彼此接近(通常相差不超过 1~2 个采样点),若相差过大,检查通道对齐或接线。
  • 同一测点、同一爆次的记录不得重复入库,按“爆次+孔号+测点”做唯一性检查。

结果判读与入库前检查

检查项通过条件不通过时的处理
PPV 数值范围0 < PPV ≤ 仪器量程超量程记录标记为削顶,不参与回归
峰值时刻位于有效段内部扩大截取窗口后重算
三通道峰值时刻差≤ 2 个采样点核查通道时延与接线
字段完整性Q、R、PPV 均非空缺失记录单独列出,补齐后再入库
唯一性爆次+孔号+测点不重复去重并保留原始文件版本号
入库时同时保留原始三通道文件路径与清洗参数(零漂值、截取起止索引),这样后续发现异常时可以回溯重算,而不是只留一个无法复现的 PPV 数字。