仕組み
プロセスはシンプルです:プロトコルをアップロードし、セルを設定して、シミュレーションを実行します。- アップロード: プロトコルファイルを生の形式(例:XML や JSON)でアップロードします。システムが形式を自動検出して解析します。
- 設定: シミュレーションしたいセルのパラメータを設定します。
- シミュレーション: シミュレーションを実行して結果を分析します。
ステップ1:プロトコルファイルのアップロード
コンピュータからプロトコルファイルをアップロードして開始します。 現在サポートしているファイル形式:- Arbin
- BioLogic (.mps, .bttest)
- Maccor (.xml, .csv)
- Neware
- Novonix (.pro2)
- PyBaMM 実験文字列 (.txt)
Gamry の
.dta ファイルはプロトコルファイルではないため、ここにアップロード
できません。Gamry 機器からの EIS 測定データをインポートするには、
ionworksdata ライブラリを使用してください。
詳細はデータ形式を参照してください。必要な追加ファイル
一部のプロトコルは、カスタムドライブサイクル波形や再利用可能なサブルーチンなどの複雑なステップ用に外部ファイルを参照します。プロトコルがそのようなファイルを必要とする場合、シミュレータがそれを検出してアップロードを促します。ステップ2:確認と設定
解析後、プロトコルを確認してシミュレーションを設定できます。プロトコルステップ
シミュレータは、タブでアクセス可能な3つの異なる形式で解析されたプロトコルを表示します:- Human-Readable: プロトコル内のステップの簡略化された読みやすい要約。
- UCP (YAML): Universal Cycler Protocol 形式に変換された完全なプロトコル。実行される詳細な基盤構造を示します。
- Raw: アップロードしたファイルの生のテキスト内容。
セル設定
意味のあるシミュレーションを実行するには、テストしたいバッテリーセルに関する基本情報を提供する必要があります。これにより、1つの RC ペアを持つ基盤となる等価回路モデル(ECM)が、セルに合わせた OCV と抵抗パラメータで設定されます。- Chemistry: 事前設定されたオプションのリスト(例:
NMC/Graphite、LFP/Graphite)からセルの化学を選択します。これにより、モデルが使用する OCV 曲線と抵抗値が決まります。 - Cell capacity (Ah): セルの公称容量。ECM パラメータはこの容量に合わせてスケーリングされます。
- Resistance scale (%): 選択した化学のデフォルト値に対するモデルの内部抵抗を調整します。デフォルトは
100%(変更なし)です。例えば、抵抗を2倍にするには200に、半分にするには50に設定します。化学のデフォルトよりも高いまたは低いインピーダンスのセルを近似するのに便利です。 - Initial SOC (%): シミュレーション開始時のセルの充電状態。
- Temperature (°C): シミュレーションの周囲温度。
高度な設定
Advanced セクションでは、実行時のシミュレーション動作を変更するオプションのルールを設定できます。終了条件
終了条件により、変数が目標値に達したときにシミュレーションを早期に停止できます。これは、限られたサイクル数や特定の時間のみをシミュレーションする必要がある長いサイクルプロトコルに便利です。 各条件は変数、比較演算子(==, !=, >, <, >=, <=)、および値を指定します。いずれかの条件が満たされるとシミュレーションが停止します。
変数ドロップダウンは2つのグループに整理されています:
- Built-in — プロトコルに関係なくシミュレーションエンジンが自動的に提供する変数
- Protocol variables — 解析されたプロトコルで定義・抽出された変数
Total time
Total time は、シミュレーションの累積経過時間を秒単位で追跡する組み込み変数です。プロトコル自体のステップロジックとは独立して、シミュレーションの実行時間を制限するために使用します。 Total time を選択すると、値フィールドの横に単位ピッカーが表示され、秒、分、時間、または日でしきい値を入力できます。値はシミュレーションエンジン用に自動的に秒に変換されます。 例えば、長いサイクルプロトコルを2時間後に停止するには、Total time >= 2 hours の終了条件を追加します。プロトコルが
total_time という名前の独自の変数を定義している場合、プロトコルの変数が優先され、組み込みの値は注入されません。Protocol variables
Protocol variables はアップロードされたプロトコルファイルから抽出されます。例えば、Arbin プロトコルを3サイクル後に停止するには、PV_CHAN_Cycle_Index >= 4 の条件を追加できます。Arbin は各サイクルの開始時に PV_CHAN_Cycle_Index をインクリメントするため、インデックスが4に達するのは4番目のサイクルが開始されたときのみで、3つの完全なサイクルが既に完了していることを意味します。
終了条件がトリガーされると、理由が人間が読める形式でシミュレーションメトリクスに表示されます(例:“Early termination reason: Total time >= 2 hours”)。
変数コールバックルール
変数コールバックルールにより、条件に基づいてシミュレーション中にプロトコル変数を動的に更新できます。各ルールは条件(変数、演算子、値)と、条件が満たされたときに適用する変数更新のセットを指定します。 例えば、特定のサイクル数の後にC-rateを増加させるルールを作成できます:PV_CHAN_Cycle_Index >= 3 のとき、Current(A) をより高い値に更新します。これにより、充電または放電パラメータがサイクル中の特定のポイントで変更される多段階プロトコルをシミュレーションできます。
ステップ3:シミュレーションの実行と結果の分析
すべての設定が完了したら、Run Simulation をクリックします。シミュレータが設定されたセルモデルに対してプロトコルを実行します。 シミュレーションページの Cancel ボタンをクリックすることで、実行中のシミュレーションをいつでもキャンセルできます。これは、必要な結果が既に確認できる長時間実行プロトコルに便利です。シミュレーション結果
プロット
主な出力は、時間に対するシミュレーションデータのインタラクティブなプロットです。デフォルトでは Voltage と Current が表示されますが、表示する変数を正確に設定できます。 Configure Plot をクリックしてプロット設定ドロワーを開きます。Time Series の下で、利用可能な変数のオン/オフを切り替えます:| 変数 | 単位 | 説明 |
|---|---|---|
| Voltage | V | セル端子電圧 |
| Current | A | 印加電流 |
| Temperature | °C | セル温度(利用可能な場合) |
| Charge capacity | Ah | 累積充電容量 |
| Discharge capacity | Ah | 累積放電容量 |
| State of charge | % | セルの充電状態(利用可能な場合) |
| Step count | 全体のステップインデックス | |
| Cycle count | 現在のサイクル番号 | |
| Step count (within cycle) | 現在のサイクル内のステップ番号 |
主要メトリクス
プロットの下に、シミュレーションから計算された主要なパフォーマンス指標が表示されます:- Total Time
- Charge Throughput (Ah)
- Energy Throughput (Wh)
- Early termination reason(終了条件がトリガーされた場合)
フルスクリーンモード
プロットの右上隅にあるフルスクリーンアイコンをクリックして、画面全体に拡大します。フルスクリーンビューには同じ Configure Plot ボタンが含まれているため、フルスクリーンを離れることなく表示する変数を調整できます。CSV ダウンロード
Configure Plot の隣にある Download CSV をクリックすると、シミュレーションの時系列全体を CSV ファイル(simulation_data.csv)としてエクスポートできます。プロットで特定の範囲にズームしている場合でも、ダウンロードには常にシミュレーション全体が含まれます。
ファイルには、シミュレーションで生成されたすべての時系列変数(Voltage、Current、Temperature、容量、Step count、Cycle count、追加のプロトコル変数)に加え、各時点に合わせて展開されたステップレベルの列が含まれます。シミュレーションを再実行することなく、Excel、pandas、MATLAB、または独自の解析ツールに結果を取り込むのに利用できます。
プロトコルをシミュレーションすることで、エラーを早期に発見し、実験設計を検証し、実際のテストに時間とリソースを投入する前に確信を持つことができます。
商用プロトコル間の違い
異なるプロトコル間の変換における課題の多くは、構文ではなく、同じステップシーケンスに従うロジックをサイクラーが定義する方法の根本的な違いにあります。 このセクションでは、Ionworks Universal Cycler Protocol と、サポートしているサイクラーのプロトコルとの実装の違いについて説明します。CCCV ステップ
ほとんどのサイクラーは CCCV ステップを、電圧を「limit」フィールドとする1つのステップとして定義します:- Maccor: 電圧を「limit」とする定電流ステップを使用。Maccor は CC フェーズと CV フェーズを組み合わせたネイティブな単一ステップタイプ
Chg Func CCCV/Dis Func CCCVもサポートしています(CV カットオフは電流リミットとして指定)。 - Neware: 電流と電圧の両方を「limit」として指定
- Novonix: 電流と電圧の両方をフィールドとして指定し、ステップタイプで CC(電圧はカットオフ)と CCCV(電圧に遷移して電流カットオフまでホールド)を区別
Chg Func CCCV / Dis Func CCCV ステップを解析する際、パーサーはこれを同等の2ステップ UCP ブロックに自動的に展開します。
ヘッダーメタデータ
一部の形式(例:Novonix.pro2)には、トップレベルのヘッダーデータ(Version、LastUpdated、Charger)が含まれています。このメタデータは UCP では header の下に保存され、元の形式に戻す変換時に使用されます。
関数式
Maccor はステップの値と終了条件に関数式(例:VAR1*0.5)をサポートしています。これらは UCP では文字列として伝達され、ベンダー固有の構造(例:Maccor の「User Def」エンドエントリ)を使用してラウンドトリップされるため、別の形式に正確な同等物がない場合でも意味が保持されます。
ネストされたループ
Do/Loop 構造を使用する形式(Maccor)では、ネストされたループに番号が付けられ(Do 1/Loop 1, Do 2/Loop 2, …)、構造を反映します。UCP ではブロックのrepeat でループを表現します。Maccor に戻す変換時には、ブロックのネスト深度から Do/Loop の番号付けが生成されます。
Report/Record/Save data/Resolution
これは、サイクラーが出力時系列にデータを保存する頻度を定義するフィールドです。- Maccor は「Report」フィールドを使用し、時間、電流、電圧、温度を許可
- Neware は「Record」フィールドを使用し、時間、電流、電圧を許可
- Novonix は
ConditionType: "Save data"を持つStepConditionsエントリを使用し、Δt、ΔV、ΔIを許可 - UCP は「Resolution」フィールドを使用し、グローバルに設定して各ステップでオーバーライド可能で、現在は時間のみをサポート
ループ
ループには2つの基本的なアプローチがあります:- ネストされたステップ: ループをネストされたステップを持つステップブロックとして定義し、
repeatパラメータでループの繰り返し回数を指定します。これは Python のようなモダンなプログラミング言語でのループ定義に似た、より現代的なアプローチです。
- UCP(ステップブロックを使用)
- Novonix(
TimesToLoop付きのChildProtocolStepListを使用)
サイクル番号のインクリメント
- Novonix は
StepType = 6を使用してサイクルカウンターをインクリメントします。UCP ではこれが補助的なIncrement cycle numberステップにマッピングされます。 - Arbin は組み込みの
PV_CHAN_Cycle_Index変数を使用して現在のサイクルを追跡します。この変数がSet Variable(s)ステップを介してインクリメントされると、UCP ではset_variableアクションとIncrement cycle number補助ステップの両方にマッピングされます。
- Goto/状態マシン: 「start loop」と「end loop」のような特殊ステップを定義します。これは Fortran のような古いプログラミング言語に似た、よりレガシーなアプローチです。
- Maccor(ループ開始に
Doステップ、ループ終了にLoopステップを使用) - Neware(指定された前のステップに一定回数ループバックする特殊なステップタイプを使用)
- Arbin(goto ターゲット付きの limit 条件を使用してステップ間をジャンプし、
Set Variable(s)ステップでカウンターを管理)
サイクルインデックス分岐(Arbin)
Arbin プロトコルは、異なるサイクルで異なるパラメータが適用されるサイクル依存の分岐を実装するためにPV_CHAN_Cycle_Index を一般的に使用します。UCP に解析されると、このパターンは set_variable アクションと goto ターゲットを持つ制御ステップを使用して表現されます。
ドライブサイクル(BioLogic)
BioLogic の.mps プロトコルは、ドライブサイクル(例えば、駆動電流プロファイル)を適用するために User Profile ステップを使用します。波形は技術ブロックの後に Urban Profile Table として .mps ファイル自体に埋め込まれているため、追加のアップロードは必要ありません。UCP に解析されると、User Profile ステップは Drive ステップにマッピングされます。テーブルの時間カラムがステップの継続時間を定義し、値カラムが対応する制御モード(例:Current)でセルを駆動します。
PyBaMM 実験文字列
PyBaMM 実験文字列を含むプレーンテキストファイルをバッテリーサイクラーシミュレータに直接アップロードできます。システムは形式を自動検出し、ステップを UCP に変換します。リスト反復ブロックはrepeat カウント付きのステップブロックにマッピングされます。
基本構文
プレーンステップの場合、ファイルの各行が単一の PyBaMM ステップ文字列です。サポートされるステップタイプは以下の通りです:Charge at <value> <unit>— 定電流、C-rate、または定電力充電Discharge at <value> <unit>— 定電流、C-rate、または定電力放電Hold at <value> V— 定電圧ホールドRest for <duration>— 開回路休止期間
until で終了条件、for で持続時間制約を含めることができます:
リスト反復
ステップのシーケンスを複数回繰り返すには、角括弧で囲んで* N で乗算します。これは Python のリスト反復構文と同等です。
repeat: 100 の単一の反復ブロックが UCP に生成されます。反復ブロックとプレーンステップを混在させることができます:
ネストされた反復
より複雑なプロトコル用に、反復ブロックをネストできます:サイクルグループ
リスト内で丸括弧を使用して、ステップのグループをサイクルとしてマークします。これにより、各反復の最後に「Increment cycle number」ステップが自動的に挿入され、サイクルレベルのメトリクスが正しく追跡されます:タプルサイクルグループは常にリストの中にある必要があります。
[(...)] * N を使用してください。(...) * N ではありません。