2. 双酚A与环氧氯丙烷投料摩尔比的在线计算与偏差预警
为什么投料摩尔比必须在“起点”就算准
双酚A(BPA)与环氧氯丙烷(ECH)的投料摩尔比决定了后续聚合链长与端基类型。若按质量流量直接投料,原料纯度与含水波动会悄悄改变真实摩尔数,导致配比偏离工艺窗口。本例用“流量×浓度→摩尔流率→累积摩尔量→实时摩尔比”的在线计算链,把配比偏差在进料阶段就暴露出来。
计算约定:以 BPA 为分母,定义实时投料摩尔比 R(t) = n_ECH(t) / n_BPA(t),其中累积摩尔量由摩尔流率对时间积分得到。工艺监控窗口设为 R_target = 2.00,允许偏差 ±0.05(即 1.95~2.05),超出即预警。
在线计算的关键实现
下面是一段可直接运行的 Python 计算核心,模拟 6 个采样周期的进料数据。它把“流量×浓度修正→摩尔流率→累积→比值→偏差判断”串成一条链,并输出每个周期的比值与预警状态。
M_B, M_E = 228.29, 92.52 # g/mol
R_TARGET, R_TOL = 2.00, 0.05 # 工艺窗口
dt = 1.0 / 60.0 # 采样周期 1 min,单位 h
# 示例进料数据:(F_B kg/h, P_B %, W_B %), (F_E kg/h, P_E %, W_E %)
samples = [
(120.0, 99.5, 0.20, 78.0, 99.2, 0.30),
(120.0, 99.5, 0.20, 78.0, 99.2, 0.30),
(120.0, 99.5, 0.20, 79.5, 99.2, 0.30),
(120.0, 99.5, 0.20, 81.0, 99.2, 0.30),
(120.0, 99.5, 0.20, 81.0, 99.2, 0.30),
(120.0, 99.5, 0.20, 81.0, 99.2, 0.30),
]
n_B = n_E = 0.0
for i, (FB, PB, WB, FE, PE, WE) in enumerate(samples, 1):
# 摩尔流率 mol/h:质量流量 × 有效质量分数 ÷ 摩尔质量
ndot_B = FB * (PB / 100) * (1 - WB / 100) / M_B * 1000
ndot_E = FE * (PE / 100) * (1 - WE / 100) / M_E * 1000
n_B += ndot_B * dt
n_E += ndot_E * dt
R = n_E / n_B
dev = R - R_TARGET
status = "正常" if abs(dev) <= R_TOL else "预警"
print(f"t={i:>2}min R={R:.4f} 偏差={dev:+.4f} {status}")
运行后预期输出(示例数据直接推出,非实测):前两周期 R≈2.0000 正常;第 3 周期 ECH 流量升至 79.5 kg/h,R 开始上偏;第 4 周期升至 81.0 kg/h 后 R 超出 2.05,触发预警。这说明流量的小幅上调会通过累积效应放大为比值偏差,预警必须在累积量层面判断,而非只看瞬时流量。
偏差阈值与预警逻辑
| 判断项 | 条件 | 处理动作 |
|---|---|---|
| 正常 | |R − 2.00| ≤ 0.05 | 继续投料,记录比值趋势 |
| 轻度偏差 | 0.05 < |R − 2.00| ≤ 0.10 | 提示操作员核对流量计与浓度检测 |
| 超限预警 | |R − 2.00| > 0.10 | 触发报警,暂停 ECH 进料并复核 |
浓度检测(纯度、水分)的滞后会直接传导到摩尔流率。若在线浓度分析仪响应时间超过 5 min,应把浓度值做时间对齐后再参与积分,否则比值会出现虚假漂移。
把 R 的滑动平均(如 5 点)与瞬时值同时显示:瞬时值用于快速响应,滑动平均用于排除单点噪声误报。