メインコンテンツ

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

この例では、Stateflow® チャートにカスタム C コードを統合する方法を示します。このワークフローの用途の 1 つは、バッテリーの充電状態 (SOC) 管理システムをモデル化することです。Stateflow チャートでカスタム C コードを使用すると、以下のことができます。

  • 前に開発した既存のアルゴリズムを活用する。

  • Stateflow では実装が難しいハードウェア操作用の C コードを使用する。

バッテリーの管理

バッテリー マネジメント システムは、電池式のデバイス (自動車や携帯電話など) の電力使用を制御します。コントローラーで SOC を監視および調整することで以下を行います。

  • 過充電や重放電を防いでバッテリーの健全性を最適に保つ

  • 電力供給とバッテリー寿命のバランスをとる

  • 充電状態に基づいて電力限界を調整する

  • 低充電レベルでバッテリー残量を維持するために、デバイスのパフォーマンスをスケールする

バッテリー管理モデルの動作モードは 3 種類のチャートを使用して処理されます。

Sensor Readings with Fault Detection チャート:

  • 電圧、電流、温度の値を取得する。

  • センサーの故障にフラグを付けて障害処理をトリガーする。

  • 有効なデータまたは故障コードをコントローラーに返す。

Battery State Estimation チャート:

  • センサー データを処理して SOC を計算する。

  • バッテリーの状態をリアルタイムで更新する。

  • 状態のデータを電力制御ロジックにフィードする。

Battery Power Limit Control チャート:

  • SOC に基づいて動的な電力しきい値を設定する。

  • バッテリーの損傷を防ぐために電力限界を適用する。

  • 充放電速度を制御する。

バッテリー コントローラーに各チャートから固有の制御信号が出力され、完全な電力管理ソリューションが作成されます。

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

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

Sensor Readings with Fault Detection チャートは 3 つのパラレル ステートを実装しています。

  • VoltageSensor

  • CurrentSensor

  • TemperatureSensor

それぞれのステートに、シミュレーションと展開の両方のモードを処理するための同一の判定ロジックが含まれています。CODEGEN_FLAG は次のいずれかになります。

  • false。合成されたセンサー読み取り値によるシミュレーション ロジックを有効にします。

  • true。実際のセンサー データ向けのハードウェア インターフェイス コードを実行します。

たとえば、VoltageSensor は、CODEGEN_FLAG のステートに基づいて、シミュレートされた電圧値と実際のハードウェア読み取り値をバリアント遷移を使って切り替えます。

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

各パラレル センサー ステートに SensorFaultDetection ロジックが含まれています。このロジックは次の処理を行います。

  • エラー発生時に最後の有効な読み取り値を格納する

  • 事前設定されたしきい値に照らしてエラー継続時間を監視する

  • しきい値を超えたら故障メッセージをトリガーする

  • 制御コンポーネントにセンサーの故障を通知する

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

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

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

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

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

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

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

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

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

estimateSOC アルゴリズムでは、デバウンスを使用して電流測定値からノイズを除外します。Stateflow ロジックにより、SOC の値が 5 つのステートにマッピングされます。

  • MIN

  • LOW

  • NORMAL

  • HIGH

  • MAX

これらの範囲の使用により、異なる制御ステートの間での急速な変動を防止します。子ステートからの 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 に設定します。

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.

参考

トピック