时序数据库 IoTDB 应用于中芯国际智能厂务耗量分析
工业物联网场景中,随着工厂设备日益自动化、复杂化,传统的人工抄表、人工记录等管理模式无法适应厂务设备管理需求,通过接入具有时序数据管理能力的数据库,构建针对厂务耗量数据的实时数据中心,有助于实现智能化厂务耗量分析,进而及时处理生产异常事件、节省能耗成本、提高产线能效。
在这一背景下,因国产化替代时序数据库、保障数据安全性的需求,以及对于数据存储的成本控制与资源合理分配需求,中芯国际选择时序数据库 IoTDB 构建厂务耗量实时数据中心,实现了对不同生产所需能源的实时计算与监控,赋能半导体行业生产。
业务方向:智能厂务耗量分析
时序数据库 IoTDB 在中芯 科技 的主要应用方向为厂务,是为生产提供水、电、气、热、化学品等动力、材料供应,维持生产所需环境的保障、服务部门。同时也是执行环境保护政策、持续改善节能减排、处理生产时所产生的废水、废气、废液、部分固体废弃物的部门。
传统厂务完全依靠人(人工抄表,人工记录,报警人员通知等),厂务系统智能化是行业大趋势。传统发现能源消耗都是靠人的经验,通过事后总结发现问题,智能监控和耗量分析能及时发现问题。为在厂务层面提高生产效率、降低能源消耗、预判设备故障,需要寻求对于厂务部门产生的耗量时序数据更优的管理方案,以通过智能厂务耗量分析,实现降本增效。
中芯科技在智能厂务耗量分析的业务痛点如下:
人工抄表计算存在误差
中芯科技厂务部门在能源方面,主要是做人工抄表,通过抄表得到每一天不同的设备的能耗情况。这些能耗情况都会是通过人工去抄录并计算的,而这种抄录可能会存在一些时间上的不稳定,计算也可能会出现一些误差,影响实现精准的耗量管理。
无法知道未来耗量
中芯科技目前是没有对未来耗量情况做一些预测的,无法知道接下来的消耗,也不能提前筹备市场供应。比如说氦气供应在半导体行业的生产是至关重要的,而氦气是非常昂贵的,没有未来耗量预测业务,中芯科技在如氦气这方面的供应就无法实现进一步的供给与成本平衡。
存在能源浪费
当前中芯科技的厂务设备中,其实在某些环节会存在一些能源浪费,比如研磨液系统。然而通过目前中芯科技的厂务业务,无法明确知道哪些环节造成了浪费,进而也就无法准确做出工艺/环节改进措施,达到深入业务链路降本增效的目的。
经过数据库选型,中芯国际选择了时序数据库 IoTDB 支持厂务时序数据的写入、存储与计算。时序数据库 IoTDB 除了高吞吐、高压缩的底层性能表现能够完整的保留目前所有传感器的厂务数据,它还能够对于耗量数据进行实时计算、监控与分析,方便中芯国际实现后续的厂务流程优化。
解决方案:建立厂务耗量实时数据中心
中芯国际基于时序数据库 IoTDB 打造了针对厂务耗量数据的实时数据中心。中芯国际对于信息安全是非常关注的,不希望通过网络泄露生产决策信息,所以能看到架构图如下所示,共包括三个区域:FCMS 厂务网络、数据隔离区、办公网络。数据隔离区的出现,就是为了更好地保障信息安全。
FCMS 这一侧是数据的源头,采用了西门子服务器设备,数据的传送由这些设备发起。它们会采集不同设备上的传感器数据信息,然后通过 PLC 上报的方式上报进中央节点,然后将数据信息进行推送。推送的数据首先会经过数据隔离区,然后由代理 server 转发到在这里部署的数据采集服务。数据采集服务器共部署有两台,互为备份。数据采集服务器将数据上报到 Kafka,并最终在办公网络进行数据的加工、计算、存储。这部分处理工作分为两部分,一部分是跟点位数据实时相关的,会通过流计算后去存下来。另外一部分是静态的一些数据,如 Spec 信息,以及报警信息,会单独只存到数据库中。时序数据库 IoTDB 部署于办公网络层,通过 Kafka 流转至 Java Consumer 后进行数据存储,实现数据的永久保留存储与数据清洗、处理、计算。
整个架构的思路是,上层将 PLC 数据按批次打包,通过 Rest API 收集上游的数据推送。然后,推送的数据首先会进入消息队列,原始数据会写入 Kafka 集群。接下来,在办公网络通过 Java 程序做消费监听处理,数据进入 Spring-Kafka 消费队列,点位排序后,消费的数据会组织成 tablet,写入 bitmap。最后,通过时序数据库 IoTDB 提供的 Session Pool 管理会话连接,并利用 IoTDB Tablet 进行批量写入。
以数据平台为技术底座,并结合网关 API 负载均衡、数据转发等设置去解决负载压力,中芯国际在业务上,能够基于时序数据库 IoTDB 实现点位的信息查询、耗量的统计,以及实现了失败补偿的 schedule、任务。同时,中芯国际在平台服务的任务调度方面主要通过 yarn 集群实现,数据服务除时序数据库 IoTDB 提供的数据存储、离线 TsFile 缓存等功能,也结合 Spark Streaming 技术进行进一步的数据实时计算,以此构成数据中心对业务系统的支撑。
时序数据处理难度包括数据量大、上报频次高、乱序/空值数据处理等多项难题,相比其他类型的数据库,时序数据库 IoTDB 的树形数据模型能够根据水电气等系统设备在工厂的真实关系进行映射,并达到高扩展性,有效减少了运维学习成本。同时,时序数据库 IoTDB 可达到毫秒级写入、10倍+无损压缩比的性能,也完全能够满足中芯国际的时序数据存储需求。目前,中芯国际共有上万个时间序列,并可实现在现有硬盘资源条件下,永久保存数据,存储成本可控;相比以前使用的写入方案,目前的方案单实例吞吐量提高 3 倍,2 实例运行吞吐量提高 6 倍。
在保障数据高通量写入、低成本存储的情况下,时序数据库 IoTDB 还内置了 70+ 个 UDF 函数,包括数学函数、趋势计算函数、降采样函数、区间查询函数等多类,对于实际生产过程中需要的基本运算需求和针对时间类属性的查询需求,都专门设置了算子,能够直接支持,进而能够实时查看数据趋势,准确判断能源耗量。并且,时序数据库 IoTDB 支持用户自定义计算函数,可保存至系统进行下一次运算。
时序数据库 IoTDB 这样的性能优势就保证了数据存储的实时性、计算的准确性、业务预判与改进的可能性,对于中芯科技的厂务业务可发挥明显的自动化、智能化作用。
应用场景举例:SPC 曲线
SPC 曲线能够看到数据点位数据的曲线图,旨在应用统计分析技术对生产过程进行实时监控,科学的区分出生产过程中产品质量的随机波动与异常波动,从而对生产过程的异常趋势提出预警,以便生产管理人员及时采取措施,消除异常,恢复过程的稳定,从而达到提高和控制质量的目的。SPC 曲线图是采用抽样的方式去展示的,抽样的频率分别需要分钟级和小时级,同时基于 SPC 曲线结果,还需要实时计算 CPK(过程能力指数,指过程能力满足产品质量标准要求,如规格范围等的程度),以保障实时生产质量。
时序数据库 IoTDB 支持指定频率进行采样,最大单位支持到天,最小单位能支持到毫秒,并可以基于时序数据库 IoTDB 的 resample 函数进行上采样得到 SPC 曲线,上采样可以实现指定频率下随机抽样,满足了中芯国际质量部门实时观察实际生产数据趋势的需求。在采样后,时序数据库 IoTDB 也同时支持 stddev、avg、max_value、min_value 等计算函数,方便针对生产数据进行必要的进一步运算,以明确数据波动性质。
应用场景举例:多类能源耗量计算
通过时序数据库 IoTDB 提供的 Grafana 插件,对点位曲线进行数据分析后,中芯国际认为其业务的点位曲线分为累积值和非累积值两类。而耗量计算场景又因能源的不同和供给方式的不同,存在不同需求。能源消耗周期是有差异的,分全时段供应和部分时段供应。多个容器供应同一种能源时,需要收集多个容器的耗量;多个容器存在交替供应时,又需要记录各容器供应时段的耗量,所以针对不同能源类型的不同统计特性,实现耗量计算的方式也有不同。
时序数据库 IoTDB 提供算子应用于中芯国际多类能源耗量计算场景中,如电力系统、超纯水系统、大宗气系统、研磨液系统、特气系统、化学品系统、废水系统等,实现了多类能源耗量的准确计算、智能监控,并为能源浪费改进、生产流程优化等后续迭代方向提供了数据的有力支撑。
下面根据能源不同的损耗模式与计算方式,进行举例:
电力系统
电力无疑是维持半导体行业生产的核心能源,一般一座晶圆厂每年都会消耗数亿度电。电属于全时段供应能源,耗量单位为度(kwh)。电的传感器分两类,一类是记录瞬时功率的,一类是记录每次耗电量并累计。
对于瞬时传感器,因其提供的数据是功率,那么功率的耗量计算是通过下图的阴影面积求和得到的,也就是通过将各时段瞬时功率转化为度,然后累加。计算方式为 SUM(相邻值时间差(转换成小时)* 当前瞬时功率),此处用到了时序数据库 IoTDB 提供的两个趋势计算函数:TIME_DIFFERENCE 和 DIFFERENCE。
对于累计值传感器,需要计算的是单位时间内的总消耗量的情况下,计算过程就比较简单了,直接用结尾电量 - 开始电量就可以。在这个场景中,部分时段值数据存在缺失或为 NULL,这种数据缺失情况可能是一段时间都没有值的,所以采用了取前值的方式去进行补足,并运用了时序数据库 IoTDB 中的 fill(previous) 函数。
超纯水系统
超纯水主要供应在机台,应用于清洗半导体芯片、制造半导体材料、制造半导体器件等多个生产步骤,以去除杂质,保证制造出的半导体材料质量。纯水是通过管道供应,目前有管道共 6 个,每个管道上有两个传感器,一个负责入水测量,一个负责出水测量。传感器测量的是水流过时的液位,单位是立方米。
纯水属于全时段供应,传感器属于累计值传感器,自身会不断累计过往的水量。因此,需要计算的是每个管道单位时间内的消耗量,同样可以直接计算结尾消耗量 - 开始消耗量就可以,但是需要多计算一步,分别计算入水量和出水量的情况。与累计电量一样,这里也会使用取前值,运用时序数据库 IoTDB 中的 fill(previous) 函数的方式弥补数据不足。
研磨液系统
研磨液的作用是在晶圆表面形成非常细致的平滑度和精度,以确保半导体器件具有高质量和高性能。研磨液通过管道输送原液,通过将多种原液混合,然后输送给加工芯片的机台。由于工艺复杂,存在等待供应和吹扫等特殊过程,需要考虑到非正常损耗的情况,人工计算耗量的方法只能根据经验配合图控显示的关键环节粗略计算,因此这类能源的降本增效急需智能能耗系统介入。计算研磨液耗量的传感器记录罐中的液体重量,单位为磅。
研磨液整个流程分传输原液、混液、供混液三部分。其中混液过程存在真实消耗,整个过程通过 13 种状态进行记录。由于用量大,混液在多个罐同时或交替进行,因此共需要两类传感器,记录罐中液体重量,和记录罐处于什么运行状态。研磨液全时段供应时,整个时间周期都要计算耗量。分时段供应时,多个 Tank 供应同一种能源,同一时段只会有一个 Tank 供应,因此需要实现分时段多个 Tank 的耗量计算。
研磨液的耗量计算,状态传感器记录 Tank 的供应状态,例如 10 代表供应,非 10 代表非供应,重量传感器记录 Tank 实时重量,而耗量 = 处于供应状态的重量传感器的值的差之和。通过时序数据库 IoTDB 提供的函数,可以实现下方右图的研磨液耗量曲线,每次的最高值和最高、最低拐点之间的差值总和,即为总消耗量。这里也会使用取前值,运用时序数据库 IoTDB 中的 fill(previous) 函数的方式弥补数据不足。同时,因为存在 fill 值需要排除参与计算、状态传感器与重量传感器不属于同一个点位的业务场景特点,于是目前的计算解决方案是两阶段计算,先计算出供应状态时间段,再通过时间段获取数据,进而在客户端完成耗量计算。
另外,在供应期间为,为了达到研磨液的供应标准,需要定期加入双氧水做吹扫,所以这个部分的研磨液重量变动不能算入耗量。目前的解决方法是观察数据,记录研磨液上下限,并只计算下降曲线中 [上限,下限] 区间内的数据,以达到精确计算研磨液耗量的目的。
可见,时序数据库 IoTDB 提供的计算函数能够灵活适配于多个能耗场景,同时时序数据库 IoTDB 可与可视化平台无缝集成,满足实时可视化监控需求的同时,其写入、存储、计算等多类功能能够帮助中芯科技更好地控制能源成本,提高生产环节效率,保障生产流程安全。
联系我们
天谋科技(Timecho)成立于 2021 年 10 月,是行业领先的时序数据库管理系统及相关服务的提供商,现已获得近亿元人民币天使轮融资。公司由 Apache IoTDB 核心团队创立,团队聚焦大数据底层技术软件研发,针对企业组建物联网大数据平台时所遇到的数据体量大、采样频率高、数据乱序到达、分析需求多、存储与运维成本高等多种问题,为企业提供海量时序数据管理的高效解决方案。目前,其物联网原生时序数据库管理系统已在国 家电 网、国家气象局、中航成飞、中核集团、中国中车、长安 汽车 、金风科技等企业广泛应用。