基于称重的特殊气体消耗量计量算法

2025年01月19日 min read

1.基本情况

1.1 各种特气的容器和计量方式

中文名英文名容器计量方式
氨气NH3束管车按重量
硅烷SIH4束管车按重量
笑气N2O束管车按重量
三氟化氮NF3束管车按重量
三氯化硼BCl3钢瓶按重量
磷烷PH3束管车按压力

1.2 基本的计量逻辑

  • 几种特气的计量方式大体上可以分为以下3类:
特气名称计量方式
氨气、硅烷、笑气、三氟化氮使用束管车作为容器,时段内消耗量(KG)=重量差值
三氯化硼使用钢瓶作为容器,时段内消耗量(KG)=重量差值,总重量和束管车差距较大,要看看实际数据再说
磷烷时段内消耗量(m3)=f(P2)-f(P1),f(x)是压力瞬时值的分段函数,计算结果是束管车内磷烷的体积(m3);

2.按重量值计量

  • 氨气、硅烷、笑气、三氟化氮、三氯化硼,使用束管车装载,束管车停在一个地磅上,由地磅计量)。
  • 采集到的数据是车重+特气重的组合,即地磅称重值,随着束管车内的气体不断被使用,地磅称重值不断减轻,通过计算某一时间段的差值,即可得到某种特气的消耗量; image

2.1 理想情况下的计量方式

  • 理想情况下指的是:地磅称重值数据呈持续稳定下降趋势,如下图所示:
  • 此时的消耗量计算方式可以参考有功电度的计算方式;
    • 需要注意的是,有功电度持续上涨,地磅称重值持续下降,需要确保消耗量为正;

image

理想情况下的特气钢瓶重量(原始地磅读数)

2.2 重新装载情况下的计量方式

  • 与电表不同的是,束管车内的特气,随种类不同,能使用3-10天不等,也就是说每3-10天,会有一个充装步骤(空车开下地磅,同时在旁边等待的满车开上地磅),结果是曲线有一个突然升高,如下图(模拟数据);
  • 使用地磅称重值小时整点瞬时值相减的方式,计算小时级消耗量,可能会跨越充装步骤,导致小时级消耗量不准,因此暂定每分钟计算差值(diff),60个差值相加,得到特气的小时级消耗量;
  • 在1min内完成换车的情况下,计算的分钟级消耗量是一个很大的负值,考虑通过一些方法,使系统判定这个很大的值是“重新装载”导致的:
    • 1)定义“前一日平均差值”:前一日/向前寻找最近一日/人工给定 的一个平均差值(diff);
    • 2)当计算的某个差值的绝对值,超过前一日平均差值 ,幅度大于某个倍数(100倍),则认为这个分钟级消耗量是“重新装载”导致的;
      • 后续优化:经过分析采集到的数据发现,所有分钟级消耗量可以近似看作是正态分布的。使用平均值、标准差计算每一个分钟级消耗量的Z-score,Z-score绝对值大于等于10时,可以作为重新加载预警;
    • 3)如果一个分钟级消耗量是“重新装载”导致的,无论它的diff是正值还是负值,均将这个分钟级消耗量更新为前一日平均差值,进行传递;

image

  • 如果换车的时间超过1min,就会出现下图的情况,同理,会出现2个超过前一日平均差值100倍的分钟级消耗量,将它们更新为前一日平均差值即可;

image

2.3 噪声值和缺失值的情况

2.3.1 噪声值

  • 如下图所示,存在一些上下抖动的点(目前来看,范围大概在±3kg以内);
  • 将这些抖动的点形成的差值定义为噪声值:如果一个分钟级消耗量的绝对值,超过前一日平均差值 ,幅度大于某个倍数(5倍),且小于100倍,则认为这个分钟级消耗量是噪声值,需要处理;
    • 后续优化:经过分析采集到的数据发现,所有分钟级消耗量可以近似看作是正态分布的。使用平均值、标准差计算每一个分钟级消耗量的Z-score,Z-score绝对值大于等于3时,可以作为噪声值预警;
  • 对于噪声值的处理方法可能有以下两种(看看哪种好):
    • 1)按时间顺序依次计算分钟级消耗量,计算后判断其与前一日平均差值的关系,如果是噪声值,则更新为前一日平均差值,同时更新地磅称重值(?同上);
      • 后续优化:考虑使用滑动窗口(最近一小时)的平均值(而非上一日均值)来填充噪声值
    • 2)不去管这种抖动形成的噪声值,因为一正一负可以抵消;如下图中,我利用原始数据计算出,总消耗量是+15.59KG(共2h);
      • 似乎:利用5倍筛选的噪声值,如果有漏网之鱼,会自动变为第二种逻辑;

image

  • 下图是我们实际采集到的抖动值(最大幅度是1249~1243,±6),不确定是否有更大幅度(需要更多数据支撑),但看起来都是正负相抵;

image

2.3.2 缺失值

  • 上图1中还有一处缺失值,系统判断某一分钟没有采集到地磅称重值后,认为该处存在缺失值,建议使用前一日平均差值进行填充,同时填充对应的地磅称重值(?同上);
    • 后续优化:考虑使用滑动窗口(最近一小时)的平均值(而非上一日均值)来填充噪声值;

image

3.按压力值计量(磷烷

2.1 基地提供的分段函数

  • 磷烷密度低,不能称重计算,读取束管车内的实时压力(单位是PSI),使用分段函数(y=ax+b)计算当前压力下对应的气体的标况体积(Nm3)

image

2.2 理想情况下的计量方式

  • 分别计算首、尾两个时间点的磷烷标况体积,相减即可得消耗值(Nm3);
  • 暂定按1h/次的频率进行计算;
  • 其余与氨气、硅烷、笑气、三氟化氮、三氯化硼的计算方法相同;

2.3 重新装载情况下的计量方式

  • 可以看到,磷烷大约每3天更换一次,除了更换频率更高一些、单位不同,其他的与氨气、硅烷、笑气、三氟化氮、三氯化硼的计算方法相同;

2.4 噪声值和缺失值的情况

  • 与氨气、硅烷、笑气、三氟化氮、三氯化硼的处理方法相同;