こんにちは、
私はボードを使用しています S32K344MINI-EVBにGD3000ドライバとSunriseモーターを取り付けました。プロジェクト「S32K344:mc_pmsm_1sh_s32ct」を使って、モーターの速度を制御できるプログラムをテストしました。できるだけ早く目標を達成したいです。
私の目標は、Speedgoat リアルタイム システム プラットフォームを使用して、Sunrise のエンジン プラントを制御するアルゴリズムを実装することです。これを実現するために、パワーエレクトロニクスとともにエンジンプラントをシミュレートし、S32K344-MINIEV 評価ボードを使用してエンジンを制御したいと考えています。次の画像とリンクは、MATLAB チームが Texas Instruments マイクロプロセッサを使用してこれを実行した方法を示しています。モデルベースデザイン (電流コントローラーと速度コントローラー) から NXP のブロックを使用してコントローラーを実現したいと考えています。目標を達成するにはどうすればいいか教えていただけますか?
https://es.mathworks.com/help/mcb/gs/field-oriented-control-pmsm-using-hardware-in-the-loop-hil-simu...
皆様ありがとうございました。
ジョン・アンダー
こんにちは@JonAnder_Amante
あなたが参照している MathWorks のモータ制御 HiL のリファレンス例には、変更が必要な要素が多数あります。S32K344-MINI EVB に合わせた完全なモデルを提供することはできませんが、どのサブシステムを独自に作業する必要があるかについての簡単な概要とガイダンスを提供することはできます。
1. まず、最上位モデルを見ると、組み込みプロセッササブシステムとインバータおよびモーターサブシステムという 2 つの主要なサブシステムがあります。組み込みプロセッサ サブシステムは組み込みターゲットに展開されるコードを生成し、インバーターとモーター サブシステムは SpeedGoat HiL に展開されます。
モーター制御アプリケーション全体は、PWM によってトリガーされる ADC 割り込み内で実行されます。ハードウェア モデル設定を見ると、組み込みプロセッサ サブシステムの基本レート トリガーが ADCB1_INT に設定されています。
NXP ブロックを使用してこの種のアプローチを実行するには、コードを生成する場合、ADC 割り込みに設定されたハードウェア割り込みコールバックブロックに接続されたトリガー サブシステム内にすべてのモータ制御アプリケーションを含める必要があります。シミュレーションの目的でこの動作を再現するには、ハードウェア割り込みブロックを関数呼び出しジェネレーターブロックに置き換えて、シミュレートされた ADC 割り込みをトリガーする頻度を設定できます。
2. 相電流の測定値とローターの位置および速度の推定を取得するための入力ドライバ。このために、センサ ドライバブロックと呼ばれるバリアント サブシステムがあります。中に入ると、コード生成用とシミュレーション用の 2 つのサブシステムが表示されます。codegen サブシステムの内部に入り、ここで ADC ペリフェラルからデータを取得するためのブロックを置き換える必要があります。BCTU ペリフェラルを使用してすべての ADC インスタンスをトリガーし、電流と DC バス電圧を取得する場合は、NXP Adc ブロックを使用してそれを Adc_CtuReadFifoData に設定できます。
ローターの速度と位置を推定するには、使用しているセンサーによって異なります。サンライズモーターにはエンコーダが装備されていないため、エンコーダのすべてのブロックと計算を削除する必要があります。使用できるホール センサが搭載されており、センサレス技術を使用することもできます。センサレスの場合、このアプローチをどのように実現できるかを確認するには、当社が提供するモータ制御の例を参照してください。
3. FOC参照モデル。FOC アーキテクチャを実装するためにどのブロックを使用するかによって異なります。Motor Control Blockset を評価する場合は、最終的には小さな変更を加えて、FOC サブシステム全体をそのまま残すことができます。ただし、NXP の AMMCLib ブロックを使用する場合は、FOC リファレンス モデルから各サブシステムに移動し、Clark、Park、PI コントローラなどの各ブロックを AMMCLib の同等のブロックに置き換える必要があります。
4.出力ドライバサブシステム。このサブシステムは、PWM ジェネレータ ペリフェラルの PWM デューティ サイクルの更新を処理します。このサブシステム内で可能であれば、TI の PWM ブロックを NXP Pwm ブロックに置き換えて適切に構成する必要があります。ここでも、提供されているモーター制御の例を参照して、Pwm ブロックの使用方法と、モーターの各位相で PWM 生成を実現するために Pwm ブロックを構成する方法を確認してください。
SpeedGoat 側では、サブシステムをそのままにしておくことができると思いますが、 pmsm_hil_data.mスクリプト内でモーターのパラメータを提供する必要があります。
これらは高レベルの観察ですが、他にどのような点を変更する必要があるかを正確に把握するには、必ず自分で作業する必要があります。
これが役に立つことを願います!
敬具
ステファン。