1. 单孔爆破振动监测数据整理与PPV初算
单孔爆破振动记录的数据结构
现场振动监测仪通常按“通道—采样点”方式记录,一次单孔爆破会得到三通道(径向 L、切向 T、垂向 V)的离散速度时程。整理阶段要解决三件事:把仪器原始记录转成统一字段、逐采样点合成峰值速度、再从合成时程中提取 PPV 及其对应时刻。PPV 的定义为各采样点三向合速度的最大值:
vR(i) = √( vL(i)² + vT(i)² + vV(i)² ),PPV = maxi vR(i)
注意 PPV 不是三个通道各自峰值再合成,而是先逐点合成再取最大,两者结果不同,后者会系统性高估。
清洗与字段规范
整理时先固定字段口径,避免后续回归时混用不同来源的记录。建议每条记录至少包含:爆次编号、孔号、测点编号、单段药量 Q(kg)、爆心距 R(m)、三通道峰值、合成 PPV(mm/s)、峰值时刻(ms)、采样率与仪器编号。清洗动作按以下顺序执行:
- 去基线:取触发前 200 ms 的平均值作为零漂,三通道分别减去该值,避免直流偏置抬高合速度。
- 截取有效段:以触发点为起点,保留至振动幅值衰减到峰值的 5% 以下,防止尾部噪声参与峰值搜索。
- 时间对齐:三通道采样率一致时按索引对齐;若存在通道延迟,按仪器标定的通道时差平移后再合成。
- 单位统一:全部换算为 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 数字。