kun.bigdick.live
Open in
urlscan Pro
76.76.21.142
Public Scan
URL:
https://kun.bigdick.live/
Submission: On May 25 via api from US — Scanned from DE
Submission: On May 25 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
kun 博客 常见问题 更新日志 社区贡献 联系我们 Demo ⤴ 耗时两年半,精雕细琢—— 电芯容量预测系统 都4202年了 别再傻傻地买一堆分容设备回来 堆在车间了! KUN WEB APP DEMO 电芯预测情况一目了然 客户端程序使用示例 (按Space可暂停,文本可自由复制) 跨平台命令行程序,用户超低成本对接 Previous Next 探索更多 ⇩ 特性 为什么要使用kun? 指南 - 整体架构 - 场景举例 - 使用模式 文档 - 术语 - Web API - ikun 附录 - 充放电曲线格式 - 工步状态 Overview 特性 kun是一个高精度、高性能的高可用分布式(锂离子)电芯容量预测系统。 * 高质量:平均百分比误差(Mean Absolute Percentage Error, MAPE)不超过0.5%1 * 更安全:独创的数据清洗和机器学习过程,准确过滤掉脏数据和工艺错误的电芯 * 高可用:1秒内全自动故障恢复,故障期间数据0错漏 * 高性能:单个托盘(不超过256只电芯)的容量预测可在30秒内完成 * 更灵活:支持4种使用模式,不同批次可自由选择不同的模式 * 分布式:多服务器间互为冗余但又负载均衡,一键轻松水平扩展,充分利用硬件性能 * 超易用:提供跨平台的客户端(命令行)程序 1 仅在规范使用容量预测系统、批次模型可用的前提下做此保证 ↩ -------------------------------------------------------------------------------- 为什么要使用KUN? 在锂离子电池生产工艺中,电池的容量(Capacity)数据,是出厂前评价单体锂离子电池质量好坏的一个重要指标。 厂家会将锂离子电池根据不同的容量等级进行分档,相同档位的电芯会配组成为电池包(Pack),以获取更好的稳定性和寿命。 目前常用的获得锂离子电池容量数据的方法是:通过充放电设备,先对锂离子电池进行完全充电,然后进行多组阶梯式的电流放电,即让电池完全放电,最终将每个放电工步的总容量叠加,作为电池的出厂容量。该过程称为分容(Grading)。 该方法的缺点是,整个充放电过程极度耗时耗能,以标准容量为3200 mAH的18650电池举例,整个充放电过程会持续4~5小时,其中每个充放电阶段都会消耗非常多的电能。 此外,在分容之前,还有一个必需的化成(Formation)工序。 锂离子电池在灌输电解液并封口后,其物理结构基本组装完成。 为使电极充分被电解液浸润从而全面活化,需要经过一个以多个恒压充电——放电循环为主要步骤的激活过程,最终使电池具有放电能力,这一电化学过程即为化成工序。 化成完成后,一般电池会经过至少一日的常温静置/高温老化时间,待其化学性质趋于稳定,再通过分容检测容量,这一过程增加了相当大的成本: * 静置和分容均耗费了很多时间 * 分容时的多个充放电步骤非常耗电 * 大量分容设备体积巨大,占地面积大;也为堆垛机和物流线等实施增加困难 其实,截至化成完成,电池本身的理化性质已基本确定,且会反映在(化成期间的)充放电曲线内,并与前中段线生产的数据记录高度相关。 据此,kun应运而生,绝大多数(70%-90%)的电池的容量可通过kun计算获得,它是一个划时代的工业软件产品: * 绝大多数分容设备被取缔,建厂时用地、资金等成本被压缩 * 省略分容充放电步骤,节约大量电能 * 节省了静置和分容时间,变相大大提高产能 * 整线体系简化,降低了分容设备故障导致的停产概率和设备维修期间造成的各种费用 -------------------------------------------------------------------------------- 指南 整体架构 kun的主要组件有两部分:服务端(kun)和客户端(ikun)。 * 对每个批次 需要约10%~30%的电芯做完全流程后经ikun将这些电芯的元数据及曲线数据推送至服务端; * 剩余电芯可通过容量预测直接计算得到容量。 服务端:KUN > 鲲之大,一锅炖不下—— kun是整个容量预测系统的核心服务,其主要职能如下: * 接收并存储客户端推送过来的训练(全流程)数据 * 周期性地按批次训练神经网络模型 * 响应客户端的请求,计算并返回待预测电芯的容量 客户端:IKUN 与传统的工业软件不同,为了便于使用、简化与现有的MES等管理/调度系统的对接过程,我们提供了一个跨平台(在类Unix、Windows和Mac OS上有对应的版本)的命令行连接器程序ikun。 用户(比如供应商开发人员)在开发业务代码时,可通过字符串拼接的方式生成调用ikun的命令,再通过操作系统的shell执行该命令(比如PHP的exec()函数等)。 -------------------------------------------------------------------------------- 场景举例 > 建议结合整体架构食用本节。 可预测 设置理论分容温度 容量 不可预测 某批次准备预测 查询批次状态 获取理论分容温度区间 发送数据 预测示意流程 容量预测依赖于一定规模的训练数据,且不同批次间的数据相互独立。 以通过MES调用容量预测举例:对于一个全新的批次,当MES的业务逻辑调用ikun train子命令推送第一个托盘的电芯的全流程数据到服务端时,kun会自动建立这个批次。 此后,依此方式推送至客户端的全流程数据会在系统中持续累积,当满足一定条件时,系统会尝试为该批次创建一个神经网络模型。该模型会滚动更新,以保持与最新的生产数据的特征分布相一致。 > 推送全流程数据有可能会失败。我们建议MES应有能力记录推送成功与否的状态,并支持一定范围内的查询和统计。 当某批次的数据积累到一定规模时,该批次的电芯才可通过容量预测获取容量。因此,当有某批次的电芯的需要使用容量预测时,需先检查批次状态: * 若可预测,则: 1. 首先获取该批次的理论分容温度区间 > 我们建议MES应支持并限制生产监督人员在此范围内设置批次的理论分容温度,因超出该范围会导致预测NG率大幅上升、精度严重下降。 2. 可通过ikun predict子命令向服务端发送该电芯的必要数据,同时需通过--temperature参数指定一个理论分容温度 3. kun会计算后返回电芯的容量值或NG * 否则仍需继续等待训练数据积累 -------------------------------------------------------------------------------- 使用模式 一般来讲,在采样足够密集的前提下,仅使用化成工序的充放电曲线数据作为预测依据是足够的,这一结论在早期就经过大量的实验被验证。 但仍有许多厂家对这一点持有保留态度,希望可以利用一部分分容数据。 为此,kun支持4种使用模式,用户可以灵活选择: 图示的4种模式分别为: 模式对应ikun中mode参数 仅做化成,不做分容none 做一部分分容,截至放电工步前auto 做一部分分容,按(第n个)工步与电压截止by-time 做一部分分容,按(第n个)工步与时间截止by-voltage > 用户甚至可以不做化成,直接提供完整的分容曲线作为全流程数据参与训练。 > 传入参数时在JSON中去掉formation_*字段即可。 > 此为试验特性,用户应在知晓其危险的前提下选用,并在出现不确定的行为时与开发者及时反馈。 针对不同批次,用户可以选择不同的使用模式。但批次一旦建立(第一个托盘的数据通过ikun成功登记),已确定的模式就无法更改。 -------------------------------------------------------------------------------- 文档 术语 > 本章主要介绍kun涉及的特有概念。对于行业内一些常用概念此处不作赘述。 全流程 全流程电芯特指完整做完化成、(高温)静置和整个分容的过程。 训练数据 推送全流程数据至服务端有可能会失败。仅成功推送的全流程数据可被视为训练数据。训练数据在批次间相互独立。 批次 kun中的同一批次要求在电芯在截至分容结束的整个生产过程中所用的原材料(的类型和批次号等)以及处理方式(包括前中段线各个工序、化成与分容的充放电过程设计)均严格一致。 每个批次的训练数据、模型和容量预测行为均相互独立。 批次状态 无论是机器学习亦或是曲线搜索算法,容量预测行为都依赖于一定规模的训练数据。针对某批次: * 若训练数据大于设定值,则该批次的电芯容量可被预测 * 若训练数据不足,则该批次的电芯容量不可预测 上述两种状态即为批次状态。 托盘 kun的托盘不同于物理上托盘的概念,特指登记训练数据或请求容量时在控制台(Console)执行的单条命令中同一批发送的电芯。 kun的托盘被设计为不能超过256只电芯,这意味着如果物理上(产线中化成或分容的)托盘超出了这个数目,需要拆分为两条命令处理。 kun的托盘中的电芯被默认为同一批次。也就是说,也可以将属于同一批次、但物理上分属不同托盘的电芯拼接在单条命令处理。 NG 在容量预测系统中,以下两种情况被定义为NG: * 推送全流程数据:可能有部分数据被过滤掉; * 请求预测:可能有部分电芯被过滤掉或无法预测 目前,我们规定的NG类型有以下几种: 命名详细含义 BadCurve曲线文件有错误 StandingMismatch工步特性与总体不一致 NStepMismatch工步数目与总体不一致 DurationMismatch工步持续时间异常 GapOffCenter化成至分容间的流转时间偏离总体分布 FeatureOffCenter特征值偏离总体分布 Unpredictable无法预测 理论分容温度 在请求预测时,ikun的命令行参数中有一个必需参数--temperature,其值即为理论分容温度。 一般认为电芯的理化性质在分容前已确定,但分容期间的温度(尤其是放电工步)确会影响容量的实际测量结果。 指定理论分容温度后,如无报错或NG等情况,ikun在控制台返回的容量值则为假设电芯经实际分容过程在该温度下测定的容量值。 理论分容温度区间 对某批次,在训练数据累积期间,kun会记录全部电芯对应的分容温度,并基于这些温度估计出一个区间。假定批次的训练数据温度符合如下分布: f(θ)=1σ2πe−(θ−μ)22σ2 其中: 分容温度温度在总体中的均值温度在总体中的标准差θ=分容温度μ=温度在总体中的均值σ=温度在总体中的标准差 则理论分容温度区间可由此得: θτ=μ±σ -------------------------------------------------------------------------------- WEB API > 容量预测系统尚在频繁地开发迭代中。此章节记录的API可能发生变化,以实际情况为准。 查询批次状态 通过一个HTTP GET请求查询批次状态: 请求格式 curl http://kun.ip.address/api/available?batch={batch_name} 返回内容 字段名字段类型解释 batchstring批次名 last_update_timestring该记录最后更新时间2 availablebool批次状态:是否可预测 needinteger设定的所需训练数据数目 missinginteger达到可预测状态所缺少训练数据数目 registedinteger已有训练数据数目 nginteger登记失败的全流程数据数目 2 批次状态约每8小时更新一次,并非实时状态 ↩ 举例: { "batch": "batch_name", "last_update_time": "2022-02-25 18:18:18", "available": true, "need": 2048, "missing": 0, "registed": 2088, "ng": 40 } 获取批次的理论分容温度区间 通过一个HTTP GET请求查询某批次的理论分容温度区间: 请求格式 curl http://kun.ip.address/api/temperature?batch={batch_name} 返回内容 字段名字段类型解释 batchstring批次名 leftnumber区间左边界 rightnumber区间右边界 举例: { "batch": "batch_name", "left": 16.8, "right": 51.8 } IKUN > 容量预测系统尚在频繁地开发迭代中。此章节记录的内容可能发生变化,以实际情况为准。 可在命令行中运行ikun --help查看具体用法。 返回内容 使用ikun train子命令发送全流程电芯的数据时: * 若成功登记为训练数据,不会产生任何返回内容。 * 若登记失败,程序仍会正常退出(退出码为0),但会将错误信息打印到标准错误(stderr),用户可根据需要提取和处理这部分信息。 使用ikun predict子命令请求预测容量,若无错误发生,程序总会将返回内容打印到标准输出(stdout): 字段名字段类型解释 barcodestring电池条码 capacitynumber计算得到的电芯容量,若NG,则为null ng_typestringNG类型,若电池非NG,则为null 也就是说,capacity与ng_type总会有其中一个字段为null。用户可由此判断电芯是否NG。 举例: { "barcode": "barcode", "capacity": 51888.88, "ng_type": null } -------------------------------------------------------------------------------- 附录 充放电曲线格式 ikun所需的充放电曲线为标准的不含表头的CSV (Comma-Separated Values)格式,现将其必需列及含义列出: 序号字段名解释 0Timestamp数据保存时间,格式为yyyy-MM-dd HH:mm:ss3 1Cycle循环数4 2Step工步数 3Station工步状态 4Time工步持续时间(单位为秒) 5Voltage电压采集值 6Current电流采集值 7Capacity容量采集值5 8Energy能量采集值6 9Temperature主温度7 10StopFlag停止码8 > 可按需要在必需列后增加其他列,但仍需保证文件符合标准的不含表头的CSV格式。 3 24小时制,比如2022-02-25 18:18:18。详见RFC3339 ↩ 4 循环为简化中位机工步设置的功能,往往仅在实验室启用。在不明确时可将该列均设置为0,不影响容量预测结果 ↩ 5 容量计算方式: ∫t0tτI(t)dt=C 其中: 容量值()电流值时间起始时间某时间点C=容量值(Capacity)I=电流值t=时间t0=起始时间tτ=某时间点 ↩ 6 能量计算方式: ∫t0tτP(t)dt=E 其中: 能量值()功率值E=能量值(Energy)P=功率值 其余同上。 ↩ 7 一般指夹具温度。若缺少该采集值,则考虑用最接近电芯的温度传感器记录值替代 ↩ 8 一般由中位机记录,表示充/放电停止时的状态。若缺少该采集值,可将该列均设置为0,不影响容量预测结果 ↩ -------------------------------------------------------------------------------- 工步状态 值解释 1恒流充电 2恒流恒压充电 3搁置 4恒流放电 7OCV 8恒功率充电 9恒功率放电 12恒流恒压放电 17恒压充电 18恒压放电 5循环 6结束 广告招伤位 广州燧创信息技术有限公司 © 2024