1830976_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

1830976_ja-JP

1830976_ja-JP

MBDTとカスタム・コードを使用したS32K396用PMSMモータ制御アプリケーション

MBDTとカスタム・コードを使用したS32K396用PMSMモータ制御アプリケーション

サンプルの設計には、XS32K396-BGA-DC EVBと3相PMSMプリドライバ・ボード(接続ケーブル付き)を使用しました。


MATLAB Simulinkベースのプロジェクト(s32k396_pmsm_mc_mbdt)は、モデルベース設計ツールボックス(MBDT) を使用して構築されており、S32K3xx用NXPモデルベース設計ツールボックス - バージョン 1.5.0またはそれ以降のリリースからダウンロードできます。

すべてのモデルのファイルとドキュメントについては、添付をご確認ください。

1. はじめに

この記事は、S32K396 MCUをターゲットとしたPMSM制御アルゴリズムをSimulink ®環境内でどのように設計できるかを紹介し、デモを示すことを目的としています。この記事で紹介するデモは、S32K3xx用のNXP®モデルベース設計ツールボックス(MBDT)を使用して構築されていますが、ツールボックスの一部ではありません。したがって、MBDT開発環境での完全なテストは行っておらず、ツールボックス内で提供されるアプリケーションで必要となる確認と検証のプロセスも通過していません。この記事で紹介するデモは、MATLAB®およびSimulinkのエコシステムの機能を活用して、NXPのソフトウェアおよびハードウェア製品を使用し、モータ制御アルゴリズムを開発する方法の一例にすぎません。

S32K39は、最大320 MHzで動作するArm® Cortex®-M7ベースのマイクロコントローラーシリーズで、メインCPUをモーター制御タスクから解放するために設計された高度なモーター制御コプロセッサー(eTPU)と高分解能PWMを備えています。次世代のSiCトラクションインバーターの要件を満たし、高効率と低遅延機能を実現するために開発されました。また、S32K39は、車載インバータ、オンボード・チャージャー(OBC)、高性能バッテリ管理システム(BMS)などのアプリケーションに適しています。

NXPモデルベース設計ツールボックス(MBDT)は、MATLABとSimulinkのモデルベースの設計環境に接続して、NXPマイクロコントローラとプロセッサをベースにした実際のターゲット向けの複雑なアルゴリズムの確認、検証、ラピッド・プロトタイピングをサポートする包括的なツールを集約したものです。

MBDTは、Simulinkアプリケーション開発環境からのハードウェア・アクセスを実現するために、システムとペリフェラル・デバイスを制御するリアルタイム・ドライバ(RTD)との統合が可能です。オンボードのペリフェラル、ピン、クロックの構成は、ツールボックス内で提供されるNXPのS32設定ツールやEB Tresosなどの専用構成ツールとの統合機能によって実現されます。MBDTは、MCUのペリフェラルの機能を実装し、特定のドライバの機能に基づいてコードを生成するSimulinkブロックのライブラリを提供します。さらに、MBDTには、モータ制御アルゴリズムの開発を容易にするためのAMMCLIBライブラリが統合されています。MBDTは、ソフトウェア・イン・ザ・ループおよびプロセッサ・イン・ザ・ループ(SILおよびPIL)の開発ワークフローをサポートし、それぞれの開発ステップでの設計、確認、検証を可能にします。また、MBDTはSimulinkモデルからコードを自動生成して展開し、MCUを起動して複雑なアプリケーションを実行します。制御エンジニアや組み込み開発者は、プロジェクトのライフサイクルを短縮できます。

したがって、NXPのモデルベースデザインツールボックスを使用することで、MathWorks® 環境が提供する豊富なソリューションのエコシステムを活用し、ハードウェアに依存せずにモデル化、シミュレーション、検証できる複雑なアルゴリズムを、特定のNXPプラットフォームに対応するハードウェアに適合させることができます。

S32K39は、Arm Cortex-M7ベースのマイクロコントローラ・シリーズです。高度なモータ制御コプロセッサ(eTPU)と高分解能PWMを搭載し、最大320MHzで動作します。次世代のSiCトラクション・インバータの要件を満たし、高効率と低遅延機能を実現するために開発されました。また、S32K39は、車載インバータ、オンボード・チャージャー(OBC)、高性能バッテリー・マネジメント・システム(BMS)などのアプリケーションに適しています。

このデモの目的は、S32K396上でNXP MBDTを使用してモータ制御システムを構築するためのクイック・スタート・ガイドを提供することです。環境設定、モジュール構成、システム初期化、割込み構造、永久磁石同期モータ(PMSM)制御アルゴリズム、FreeMASTER構成が含まれています。

2. ハードウェアとソフトウェアのセットアップ

この実現方法の詳細を示したのが下の図です。この図では、S32K396 MCUの既存のハードウェアにPMSMアルゴリズムをマッピングしています。アプリ、アルゴリズム、データ処理のセクションは、Simulinkのライブラリ・ブロック、AMMCLibのブロック、および Simulinkのカスタム・コード機能を使用して実装し、eTPUへのアクセスと制御を扱うeTPUドライバを取り入れることができます。MBDTのセクションは、ツールボックスが提供するブロックで対応し、このようなアプリケーションで必要となるペリフェラルへのハードウェア・アクセスを確保します。MCU、モータ、回路のセクションは、設計に使用されるハードウェア要素を指します。

次の図は、S32K396でのPMSMモータ制御を開発するために使用されるソフトウェアとハードウェアのアプリケーション・マッピングを示しています。

Zhongling_Lang_0-1711007492379.png

図2.1 S32K396でのPMSMモータ制御の開発に使用されるソフトウェアとハードウェアのアプリケーション・マッピング

Simulinkモデルの中でこの図のようなモデリングを実現するために必要な要素の概要を示したのが次の図です。このシナリオで使用できるソフトウェア・コンポーネントと機能を表しています。これらの詳細については、以降のセクションで説明します。

Zhongling_Lang_1-1711006836953.png

図2.2 S32K396でのPMSMモータ制御をモデリングするためのソフトウェア・コンポーネント

このデモの目的は、S32K396上でNXP MBDTを使用してモータ制御システムを構築するためのクイック・スタート・ガイドを提供することです。環境設定、モジュール構成、システム初期化、割込み構造、永久磁石同期モータ(PMSM)制御アルゴリズム、FreeMASTER構成が含まれており、以下の機能を示しています。

  • 3相PMSMの速度フィールド指向制御。
  • 位置と速度を測定するための統合eTPUソフトウェア・リゾルバ機能
  • ハードウェア・シミュレーションとPILテストのためのPILモデルの開発
  • FreeMASTERデバッグ・ツールを使用したアプリケーション制御ユーザー・インターフェース。(FreeMASTERの詳細については、セクション9と参考情報を参照してください)

2.1 必須ソフトウェア

2.2 必要なハードウェア

以下は必要なハードウェアの一覧です。

  • ボード:XS32K396-BGA-DC EVB および MC33937 MOSFETプリドライバ(接続ケーブル付き)。
  • モータ:3相PMSM TGT2-0032-30-24
  • デバッガー:Cortex-M7用のLauterbachまたはMultilink PEマイクロデバッガー。
  • 電源:EVB用の12V電源とプリドライバ・ボード用の24V電源
  • PCIeケーブル。
  • マイクロUSBケーブル

注:デバッガーLauterbachはMBTDツールに統合されていません。それはコードをデバッグするための手段にすぎません。

2.3 デモを準備する

セントラル・コントローラEVBボードが制御アルゴリズムを実行し、プリドライバがモータを駆動します。以下の手順に従ってハードウェア・デバイスを接続します。

Zhongling_Lang_2-1711007063940.png

図 2.3.1 ハードウェアセットアップ

  1. PMSMの3相巻線をプリドライバのJ4に接続し、レゾルバ信号をプリドライバのJ8に接続します。
  2. プリドライバのJ14からのモータ制御信号をEVBボードのJ44に接続します。
  3. デバッガーをJTAG J20とコンピュータの間に接続してください。
  4. J15とコンピュータの間にUSBケーブルを接続すると、EVB LED D30が緑色に点灯します。
  5. EVB ボードの 12V 電源ポート J1 を接続すると、EVB LED D4 が緑色に点灯します。
  6. プリドライバのポートJ13に24Vドライバ電源を接続します。プリドライバLED D14が黄色で点灯します。

2.4 デモの実行

プロジェクトのdocフォルダ内の S32K396_MBDT_BASED_MOTOR_CONTROL_Quick_Start_Guide_0_9_0.pdfを参照してください。

3. デモのブロックの紹介

次の図は、メインのSimulinkモデルの概要を示しています。モータ制御アプリケーション・モデルは、初期化と割込みという構造になっています。

Zhongling_Lang_1-1711007739117.png

図3.1 Simulinkアプリケーションのトップ・モデル 

  • Var Initには、モデルで使用される変数が含まれており、FreeMASTERで視覚化できます。
  • Initializeサブシステムには、FreeMASTERの設定、ステート・マシンと制御モードの初期化、BCTUハードウェア・トリガの有効化が含まれます。このサブシステムはアプリケーションの開始時に1回のみ実行されます。
  • Hardware Interrupt Callbackはモータ制御ブロックを呼び出して実行します。このブロックはMBDTによって提供されます。このブロックを使用すると、設定されたペリフェラル・インスタンスで特定のイベントによる割込みが発生したときに実行されるコールバック関数の中で、特定のアクションを実装できます。コールバックは、モデルで使用される構成プロジェクト内の特定のイベントに関連付けられています。これにより、ペリフェラル、ピン、クロックのオンボード構成が確保されます。
  • Motor Controlの関数呼び出しサブシステムは、ADC割込みが発生するたびに実行されます。

下の図にあるように、Motor Controlサブシステム内では、ADCハードウェア・トリガは無効化され(ステップ1)、PMSM制御アルゴリズムの計算が終了するまで無効化の状態が続き(ステップ2)、計算の終了時に再有効化されます(ステップ3)。生成されたコードの優先順位は、それぞれのSimulinkブロックのプロパティの中にある「Priority」値で設定できます。

Zhongling_Lang_2-1711007843820.png

図 3.2モーター制御サブシステム

pmsm_mc_algoアルゴリズムはサブシステム参照モデルです。入力センサ信号を収集し、PMSM制御アルゴリズムを実行し、PWMを駆動して出力電圧を生成します。下の図はメイン・ブロックを示しています。

  • Current Voltage Measurementは、BCTU FIFOデータを読み取り、次のブロックを呼び出します。
  • Board Buttonsは、ボード上のハードウェア・ピンを使用してモータを制御します。
  • ステートマシンサブシステムには、モーター制御アプリケーションのStateflow®が含まれており、各ステートは専用の機能ブロックを呼び出します。
  • Enable Outputsは、PWM出力機能を有効にします。
  • Disable Outputsは、PWM出力機能を無効にします。
  • Green LED Toggleは、緑色のLEDの点滅を制御します。
  • Update PWM は MBDT PWM ブロックを呼び出してデューティサイクル値を更新します。
Zhongling_Lang_3-1711007882976.png

図3.3 PMSMモータ制御アルゴリズム

4. スタートアップの初期化

スタートアップ初期化は、初期化機能ブロックのサブシステムです。アプリケーション起動時にいくつかの基本機能を設定するために使用されます。

  • FreeMASTER Configは、FreeMASTER GUIと通信できるようにUARTを設定します。FreeMASTER Configブロックでは、アプリケーションとホストPCの間のシリアル・インターフェースを実装するFreeMASTERの組み込み側ソフトウェア・ドライバをユーザーが設定できます。このブロックは、実際にサービスをアプリケーションに挿入します。FreeMASTERの機能を使用可能にするためにSimulinkキャンバスへの追加が必須となる唯一のブロックです。
  • Gpt_StartTimerは、プリドライバMC33937のデッドタイム設定用に1つのGPTチャネルを有効にします。
  • Adc_CtuEnableHwTrigger は BCTU ハードウェアトリガー機能を有効にします。
  • イベントと状態をリセット値に設定し、デフォルトの制御モードを速度制御に設定します。
Zhongling_Lang_0-1711008215839.png

図4.1 サブシステムの初期化

5. 割込みと測定

この部分では、アナログ・データをキャプチャするためのBCTUモジュールとADCモジュールの設定と使用方法について説明します。BCTUは3相電流測定のために並列ADC変換をトリガーします。すべての測定が完了した後、BCTU FIFO通知を使用して、保存されたADCデータを読み取り、アプリケーションのメイン制御ループを呼び出して、さらなる処理を行います。

5.1 割込みの設定とサービス

次の図は、BCTU FIFO通知コールバック機能の設定を示しています。ADCの結果の保存にはBCTU FIFO 1を使用します。ウォーターマーク値は、通知で設定された関数を呼び出すタイミングを決定します。また、設定でBCTU IRQの有効化が必要です。

Zhongling_Lang_1-1711008325777.png

図5.1.1 BCTUウォーターマーク通知設定 

Vincent_Deng_1-1726042611239.png

図5.1.2BCTUの割込み有効化

Simulinkモデルでは、BCTUに設定する通知はHardware Interrupt Callbackブロック内で選択します。これにより、変換終了割込みが発生したときに、接続された関数呼び出しサブシステムが実行されます。

Zhongling_Lang_3-1711008325825.png

図5.1.3割り込みコールバックサブシステム

5.2 電流と電圧の測定

このセクションでは、アナログ量の測定、すなわち3相電流とDCバス電圧の測定について説明します。BCTUはハードウェア・トリガを受信して、ADC測定(並列変換)を開始します。すべての結果がFIFOに格納されると、割込みによってメイン制御ループが呼び出されます。モータ制御のメイン・ループの呼び出しにはBCTU FIFO通知が使用されます。したがって、サンプリングが完了した後で結果を使用することになります。サンプリングした値を取得して処理に使用する方法はこのセクションで説明します。次の図は、電流と電圧を実際の物理的な値に変換するための手順と操作を示しています。BCTU FIFOから電流と電圧を取得して処理に使用するには、MBDTライブラリのAdcブロックを使用し、Adc_CtuReadFifoDataを選択します。

Zhongling_Lang_0-1711435752753.png

図5.2.1 物理値に変換されたデータの処理

6. eTPUリゾルバー

現在、インバータ・アプリケーションではソフトウェア・リゾルバが広く使用されており、BOM(部品表)コストの削減に役立ちます。S32K39上のeTPUは、ソフトウェア・パッケージを通じてソフトウェア・リゾルバを実装する機能をお客様に提供しています。1つのeTPUチャネルを使用して、デューティ・サイクルが50%のPWM出力信号を生成し、外部ローパス・フィルタを通過させて、リゾルバ励起信号として使用できます。リゾルバ・ポジション・センサでは、この励起信号は実際のモータ角度のサインとコサインによって変調されます。フィードバックのサイン信号とコサイン信号はSDADCによってサンプリングされ、続くDSPによって処理されます。変換結果はDMAによってeTPU DATA RAMに転送できます。次に、eTPUはリゾルバ出力信号のデジタル・サンプルを処理し、FOCの位置と速度を出力できます。eTPUリゾルバの詳細については、AN13038を参照してください。

Zhongling_Lang_5-1711008847468.jpeg

図6.1 eTPUリゾルバの図

6.1 MATLABでのリゾルバ関数の呼び出し

今のところMBDTではeTPUリゾルバ・ブロックを利用できません。システム出力ブロックを利用して、リゾルバ・データを取得するためのカスタム・コードを挿入します。

リゾルバ・データの取得には、getMotorControlResolver(&mbd_ebt_DW_FOC_one.Resolver_SW)関数を使用します。

Vincent_Deng_2-1726042853189.png

図6.1.1 eTPUにアクセスするためのSimulinkカスタム・コード

速度と角度はResolver Angleサブシステムから推定され、低速および高速制御ループに提供されます。最後に、推定された電気角度からサインとコサインの値が計算されます。

Zhongling_Lang_7-1711008847501.png

図6.1.2 速度と角度の計算

7. ステート・マシン

これはモーター制御アプリケーションモデルの重要な部分であり、各状態には関連する機能を処理するための専用ブロックがあります。

Zhongling_Lang_1-1711435815507.png

図7.1 モータ制御の状態の実装

ステートマシンブロックはモーター制御アプリケーションのワークフローを制御し、Stateflowを使用して設計されています。

Zhongling_Lang_9-1711009169451.png

図7.2 有限ステート・マシン

8. PWM制御と更新

PWMの出力はEnable OutputsサブシステムとDisable Outputsサブシステムが制御します。これらは状態関数によって呼び出されます。これらのサブシステムでは、pwm_enable_output関数またはpwm_disable_output関数によって、PWM_enabledフラグとゲート・ドライバの出力ステータスが変更されます。

Zhongling_Lang_0-1711009757777.png

図8.1 Enable Outputsサブシステム

Zhongling_Lang_1-1711009757802.png

図8.2 Disable Outputsサブシステム

Update PWMサブシステムを使用して、制御ループからの出力に応じてPWMデューティ・サイクル値が生成されます。この値は最終的にFlexPWMペリフェラルに設定され、モータを駆動するためのPWM電圧が生成されます。FlexPWMは、ブリッジ向けの相補信号を生成するように構成されており、EBプロジェクトのリロード信号に従って同期的に更新されます。ここで必要なのは、モデル内のPwm関数にデューティ・サイクル値を渡すことだけです。

Zhongling_Lang_2-1711009757815.png

図8.3 PWMデューティ・サイクル値の計算

Zhongling_Lang_3-1711009757845.png

図8.4 PWM デューティ・サイクル値の更新

9. ボタン

ボタンはモータの動作を制御するために使用されます。アルゴリズムはボードからボタンの値を読み取り、実行状態や速度を変更します。I/O値の読み取りには、MBDTライブラリのDioブロックが使用されます。ボタンのI/OポートはEBプロジェクトで設定されています。ボード上の2つのボタンは、モータの回転速度の増減に使用されます。また、2つを同時に押してフォルト情報を消去するためにも使用されます。1つのボタンはモータの起動または停止を制御します。次の図は、ボタン制御ロジックのサブシステムを示しています。

Zhongling_Lang_4-1711010057507.png

図9.1 ボタン制御ロジック

10. FreeMASTER GUI

FreeMASTERは、組み込みソフトウェア・アプリケーションの実行時設定やチューニングを可能にする、使いやすいリアルタイム・デバッグ・モニタ兼データ可視化ツールです。このプロジェクトでFreeMASTERを有効にするには、まずインターフェースを構成する必要があります。

MBDTはFreeMASTERの構成をサポートするブロックを提供しています。このプロジェクトでは、GUIとボードの間のデータの伝送にはLPUART_0を使用します。次の図はMCAT GUIを示しています。このGUIは、パラメータ/変数の監視や、モータの状態の制御に使用できます。これは、プロジェクト・フォルダの「./mbd/FreeMASTER_control」内にあります。

Zhongling_Lang_5-1711010436750.png

図10.1 MCAT GUI

11. PILモデル

PILは確認と検証のステップです。このステップでは、開発した制御アルゴリズム用に生成されたコードがクロス・コンパイルされ、ターゲット・ハードウェアに展開されます。その後、プラント・モデルを含むホストPCで実行されるSimulinkアプリケーションからのテスト入力によって、処理が行われます。テスト入力は、シリアル通信を介してターゲットに送信されます。このシミュレーション・モードを有効にすることで、ユーザーは最終的なハードウェア設計のはるか前にプロセッサの性能をテストし、モデルと生成されたコードが数値的に同等であるかどうかを検証し、コード実行のプロファイリングを行うことができます。

こうしたことから、このモータ制御設計では、S32K396マイクロコントローラ上でモデル生成コードを検証するためのPILモデル(pil_model_ebt)も開発しました。PILトップ・モデルには、シミュレーション・モデルとハードウェア・モデルという2つの部分が含まれています。シミュレーション・モデルには、セクション11.1で示したような、実際のシステム(プリドライバとPMSM)のモデルが含まれています。ハードウェア・モデルには、以前紹介したアプリケーション(mbd_ebt.slx)と同じ制御アルゴリズムが含まれています。ハードウェア・モデルの部分では、コードが生成され、ビルドされ、実行ファイルがハードウェアに展開されます。入出力信号処理のブロックは、下のスクリーンショットに示すように、ハードウェア・コントローラで動作するコードに必要なテスト入力を生成します。

Zhongling_Lang_6-1711010535793.png

図 11.1 PIL トップモデル

11.1 PILモデルの概要

PILトップ・モデルは、Simulink環境内でシミュレーション・モデルの部分を実行し、シリアル通信を通じてハードウェア・コントローラとの間で信号データを交換します。

11.2 シミュレーションモデル

シミュレーション・モデルは、Simscape™ Electrical™ブロックを使用して、プリドライバとPMSMのハードウェアをシミュレートします。

  • Duty to PWMは、センター・アラインのFlexPWMの機能を20kHzの周波数でシミュレートします。
  • インバータは、MC33937 MOSFETプリドライバと同じパラメータを持つ三相フルブリッジ回路をシミュレートします。
  • PMSMは実際のモーターと同じパラメータで定義されています。
  • Resolverは理想的な回転モーション・センサとなるように簡略化されています。
  • 相電流センシングバス電流センシングバス電圧センシングは、MC33937 MOSFETのプリドライバに基づいて構築されています。
  • SARADCブロックは、PWMモジュールと同時に信号をサンプリングし、データ変換が完了すると関数呼び出しを生成します。
Zhongling_Lang_1-1711012141040.png

図 11.2.1 PIL ホストモデル

11.3 ハードウェアモデル

ハードウェア・モデルは、コードを生成してマイクロコントローラに展開する参照モデルです。ADC変換完了信号によって呼び出されます。

初期化プロセスでは、モデルはグローバル変数とドライバを初期化します。通常の動作プロセスでは、関数呼び出しが発生すると、モデルは入力信号の計算、ステート・マシンの実行、出力信号の生成を、サブシステム「pmsm_mc_algo」で定義された順序で行います。

Zhongling_Lang_2-1711012216169.png

図 11.3.1 PIL ターゲットモデル

12. 結論

NXPのMBDTでは、ハードウェア向けに最適化されたツールであるリアルタイム・ドライバ(RTD)車載用演算/モータ制御ライブラリ(AMMCLib)、構成(S32設定ツールとEB Tresos)、ビルド・ツールを、Simulink環境で使用できます。

この記事では、モータ制御モデルの設計における構築と環境設定のプロセス、およびターゲット・ハードウェアに展開する前にPILシミュレーションを通じてモデルの確認と検証を行う方法について、例を挙げて説明しています。NXPのモデルベース設計ツールボックス、およびNXPが提供するソフトウェアを、MathWorksのツールや機能と組み合わせ、NXPのターゲット上で複雑な組み込み設計のラピッド・プロトタイピングを可能にする方法に重点を置いています。充実したMathWorksのエコシステムと組み合わせることで、ユーザーは複雑なアルゴリズムをモデル化し、NXPのマイクロコントローラとプロセッサ向けに最適化されたコードを生成して、高速で信頼性の高いプログラミング環境を実現できます。

このデモは、MBDTのエコシステムの中や、MBDTが提案するアプリケーション開発ワークフローの中で完全にはテストされていないことにご注意ください。ここで示した例は、現在MBDTでサポートされていないeTPUコプロセッサへのアクセスに関して、カスタム・コードの機能を使用していますし、MBDTのリリースおよびテストの対象になったものとは異なる特定のバージョンのRTDを使用しているからです。MBDT、チュートリアル、ウェビナー、その他のリソースの詳細については、MBDT コミュニティ・ページをご覧ください。

NXPが提供する開発エコシステムに関する追加情報については、NXP.comをご覧ください。

13. 参考文献

サンプル・モデル
タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-05-2026 12:22 AM
更新者: