Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

カスタム コードによるバッテリー管理のモデル化

この例では、Stateflow® でカスタム C コードを使用して、バッテリーの充電率を管理するシステムをモデル化する方法を説明します。バッテリーの充電率は充電状態 (SOC) とも呼ばれています。

Stateflow では、カスタム C コードをチャートに統合できます。Stateflow チャートでカスタム C コードを使用すると、以下のことができます。

  • コーディング済みの既存のアルゴリズムを再使用する。

  • Stateflow では実装が困難な可能性がある、低水準のハードウェア操作用の C コードを使用する。

バッテリーの管理

このモデルは、バッテリー マネジメント システムの複数のコンポーネントを表します。このシステムは、電池式のデバイス (電池式自動車や携帯電話など) のコントローラーに実装するよう設計されています。バッテリー マネジメント システムの目的は、バッテリーの電力需要を抑え、SOC が高すぎる値または低すぎる値にならないようにすることです。SOC が高すぎる場合、または低すぎる場合、バッテリーの健全性に悪影響を及ぼします。また、このモデルは、充電率が低い場合に、パフォーマンスと引き換えにバッテリーの放電を抑え、バッテリーの寿命を延ばせるように設計されています。

バッテリー管理モデルは、3 種類のチャートを使用してこれらの目標を達成します。

チャート Sensor Readings with Fault Detection は、バッテリー パックのセンサー値を読み取り、センサーが故障状態になるとレポートを生成します。チャート Battery State Estimation は、センサーの値を使用して、バッテリーの SOC を推定します。チャート Battery Power Limit Control は、バッテリーを節約し、バッテリーの健全性を保護し、SOC の値が極端に上下しないようにします。このチャートは、コントローラーの電力限界を設定してこれらのタスクを実行します。

このモデルでは、コードを生成して、システムで必要となる可能性があるその他の制御コードと合わせて組み込みのコントローラーにそのコードを展開できます。

ハードウェアとの通信のシミュレーション

チャート Sensor Readings with Fault Detection は、バッテリーの電圧、電流、温度の各センサーの読み取り値をモデル化する 3 つのパラレル ステート (VoltageSensorCurrentSensorTemperatureSensor) で構成されています。3 つのパラレル ステートには、シミュレーションの動作かコード生成の動作かを選択する同様の判定ロジックが含まれています。たとえば、パラメーター CODEGEN_FLAGfalse の場合、VoltageSensor には電圧の読み取り値をシミュレートする次のロジックが含まれます。

このモデルをシミュレーションで使用する場合、[ダッシュボード] パネルで、システム入力に使用するセンサーの値を制御できます。バッテリー モニターの呼び出しでタイムアウトが発生した場合、関数からエラー コード -9999 が返されます。

各パラレル ステートのサブステート SensorFaultDetection で、センサーから返されたエラー信号が処理されます。センサー エラーが発生した場合、SensorFaultDetection は、最後に認識した有効なセンサーの値を、エラー コードが所定の時間受信されるまで保持します。このしきい値に達すると、SensorFaultDetection は故障メッセージを送信します。この故障メッセージは、コントローラーの他の制御コンポーネントにより処理されるものと仮定されます。

この例には、batteryMonitorDriver.hbatteryMonitorDriver.c の 2 つのカスタム C コード ファイルが含まれています。これらのファイルは、バッテリーの電圧、電流、温度など、システムからのセンサー データを取得するために使用するデバイス ドライバー コードを表します。また、コード生成にも使用されます。詳細については、コード生成を参照してください。

モデルをドライバー コードでシミュレートするには、次を行います。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。

  2. [シミュレーション ターゲット] ペインで、ヘッダー ファイルとソース ファイルを指定します。

  3. [詳細設定パラメーター] で、[カスタム コードのインポート] を選択します。

詳細については、カスタム コードの構成を参照してください。

カスタム コードの再使用によるバッテリーの SOC の推定

バッテリーの SOC を推定するため、モデルはカスタム C コード アルゴリズムを利用します。インクルード ファイル estimateSOC.c には、以下のコードが含まれています。

このアルゴリズムを使用すると、Stateflow チャートで C コード関数を再実装しなくても、簡単に C コード関数を呼び出せます。

ノイズの感度や電流の変化を estimateSOC アルゴリズムで考慮できるように、Stateflow ロジックを使用してデバウンス アルゴリズムが実装されます。このロジックは、SOC のパーセンテージを 5 つの範囲 (MAXHIGHNORMALLOWMIN) にまとめます。これらの範囲の使用により、異なる制御ステートの間での急速な変動を防止します。子ステートからの exit 遷移では、親ステートの端に移動します。これらの遷移が実行されると、Stateflow は親ステートのデフォルト遷移に戻ります。

デバイスの SOC を制御するためのロジック

カスタム コードを使用してロジック制御を実装するよりも、Stateflow チャートを使用してこの制御ロジックを設計する方が簡単です。このチャートは、推定されたバッテリー状態に基づいて、バッテリーの電力限界を実装します。

このチャートは、バッテリーの電力限界のモードとして考えられる 5 種類のモードを表します。

  1. パフォーマンス モード: バッテリーの充電率が高い場合は大量の電力消費ができます。

  2. バッテリー セーバー モード: 充電率が低い場合にバッテリーの電力消費を抑え、効率性を高めます。

  3. オフ: バッテリーが SOC の限界にある場合に電力消費ができないようにします。

  4. 高速充電: 充電率が低い場合にバッテリーを高速充電します。

  5. 低速充電: バッテリーを正常に保つため、バッテリーの充電率が高い場合は低速で充電します。

ダッシュボード パネルを使用したシミュレーション

モデルが正常に動作することをテストするため、ダッシュボード パネルを使用して、電圧、電流、温度の値をシミュレートすることができます。スイッチを使用すると、センサー エラーをシミュレートして、故障検出ロジックをテストできます。ゲージおよびプロットの Dashboard ブロックは、Stateflow チャートのアクティビティに対してバインドされ、内部のステートとデータを可視化します。モデルのナビゲート中に、ダッシュボード パネルを移動および最小化できます。Dashboard ブロックの詳細については、対話型表示を使用したシミュレーションの制御 (Simulink)を参照してください。

コード生成

チャート Sensor Readings with Fault Detection への入力は、batteryMonitorDriver.h および batteryMonitorDriver.c の 2 つの C コード ファイルにより提供されます。これらの 2 つのファイルは、バッテリーの電圧、電流、温度など、システムからのセンサー データを取得するために使用するデバイス ドライバー コードを表します。

このモデルをコード生成に使用するには、ドライバー コードが外部ハードウェアと通信しなければなりません。この機能を有効にするため、コードを生成してノイズがあるセンサー値をシミュレートするときに、制御変数 CODEGEN_FLAG を使用したバリアント遷移により Stateflow チャートで C コードを直接呼び出せます。モデル エクスプローラーでベース ワークスペースを開き、CODEGEN_FLAG の値を true に設定します。Stateflow バリアントとバリアント遷移の詳細については、バリアント条件を使用したインジケーター ランプ調光器の制御を参照してください。

生成されたコードをドライバー コードでコンパイルするには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[コード生成][カスタム コード] ペインでヘッダー ファイルとソース ファイルを指定します。詳細については、カスタム コードの構成を参照してください。

参照

[1] Ramadass, P., B. Haran, R. E. White, and B. N. Popov. “Mathematical modeling of the capacity fade of Li-ion cells.” Journal of Power Sources. 123 (2003), pp. 230–240.

[2] Ning, G., B. Haran, and B. N. Popov. “Capacity fade study of lithium-ion batteries cycled at high discharge rates.” Journal of Power Sources. 117 (2003), pp. 160–169.

関連するトピック