モデルベースデザイン(MBD)を活用したモータ制御のFPGA実装
― 文:MathWorks Japan プリンシパルHDLプロダクトスペシャリスト 松本 充史 氏
目次
パワーエレクトロニクスの分野では、性能向上や低消費電力化のため、インバータを駆動する制御周期の向上や処理アルゴリズムの高度化が進んでいます。モータ制御においてもしかりで、高速モータ制御用のアクセラレータを搭載したマイコンやDSPも出回っています。その他のデバイスはどうでしょうか?近年、FPGAは高性能化を行うモータ制御のテスト、プロトタイプ、量産製品に適用するというユースケースをよく聞くようになりました。高速化やアルゴリズムの高度化が進むと、実機での処理速度はもちろん、シミュレーションでも演算量が肥大化し、シミュレーション時間が長くなってきます。そんな問題を解決するFPGAの活用方法を、高度なアルゴリズム開発に適した設計手法であるモデルベースデザインと絡めてご紹介します。
モデルベースデザイン(モデルベース開発)とは
モデルベースデザインは、設計対象を抽象化して表現する(モデル化する)ことで論理的な解析を行い、シミュレーションを行うことで、実機レスで早期に機能検証を実施できる設計手法です。
FPGA設計者であれば、VHDL/Verilogコードを書いた後、論理やタイミング検証のためのシミュレーションを行われていると思いますが、それとは目的が少し異なります。モデルベースデザインでは論理よりも機能に焦点を当てて、アルゴリズムの確かさをシステム シミュレーションで検証します。要求仕様通りの性能が達成できているか、標準規格に沿った機能が動作しているか、外乱が入力されたときに想定外の動作をしないか、制御対象のバラつきに対しても要求性能を満たすことができるか、といった観点で、シミュレーションを行います。設計対象の周辺部品、外乱、制御対象などを必要に応じてシミュレーション モデルに含めることで、従来であれば開発終盤に実機で検証して初めて発覚したような問題を、開発初期に発見することができます。
シミュレーション モデルからはCコードやHDLコードを生成することができます。コード生成は手書きでコードを記述するのに比べて、以下のようなメリットがあります。
- 品質向上:コーディングによる人的ミス、バグの混入の防止、属人的なコード品質のバラつきを排除
- 等価性担保:仕様や上流開発されたアルゴリズムと、実機の処理内容の等価性を担保
- TATの改善:コーディング工数の削減や、仕様変更があった場合の機敏な対応が可能
- 開発言語による障壁の緩和:ターゲットデバイスに依存するC/VHDL/Verilogなどの言語をマスターしなくても、様々なデバイスへの実装が可能
コード生成と一口に言っても、モデルのどの部分から、何のために生成するかによって、様々なユースケースがありますので、どのような使い方ができるのか具体的に見ていきましょう。
コントローラのFPGA実装
一般的にBLDCやPMSMモータのベクトル制御を行う場合には、遅い周期で制御する速度ループと、速い周期で制御する電流ループとPWMコンバータがあります。モータ制御用のマイコンには高速動作するよう、ハードウェア・アクセラレータが内蔵されており、電流ループで使用されるPID制御やSin/Cos演算などを行ってくれます。FPGAを使用すると、高速動作させたいそれらのアルゴリズムを設計者が自由にカスタマイズできます。例えば汎用マイコンを超える超高速化を行ったり、多関節ロボットの複数のモータを1つのデバイスで並列制御したりといったことがFPGAでは並列度やデバイスのピン配置を変更して柔軟に実現可能です。近年は、機械学習やディープラーニングを使ったインテリジェントな状態監視、故障予知、未来の応答を予測しながら最適化を行う制御手法であるモデル予測制御を取り入れる話も聞こえてきます。これらのアルゴリズムは演算量や必要メモリサイズが従来の制御手法と比較して桁違いに大きくなるため、スケーラビリティの高いFPGAを使うことで要求性能を達成することができます。
並列化や高速処理というとGPUも候補に挙がるかもしれませんが、GPUではデータをシェアードメモリを介して演算コアに分散して計算するというアーキテクチャを取っているため、レイテンシが一定ではありません。FPGAは、ADコンバータから直接デバイスのピンにデータ入力し、クロック同期する演算回路で処理を行うので、レイテンシが低く確定的であるのが特長で、フィードバック制御とは親和性が高いデバイスです。FPGAでの処理速度や並列性はデザイン次第となります。例えば200回の積和演算を並列処理すれば、遅延は1サイクルで済みますし、逐次処理すれば何サイクルもかかってから出力されることになります。
SoC FPGA/ASIC実装のトレンドと最新ソリューション
~高速処理、5G、プラントモデル(HIL)、機能安全認証など~
コントローラの検証
マイコンやFPGAに実装したコントローラは、いきなり制御対象と接続して実機テストを行うと、バグで意図しない動作をすると機器を損傷させる恐れがあるため、仮想的な制御対象をPC上で動作するシミュレーションモデル使ってテストを行います。マイコンとPCをループさせてテストすることをProcessor in the Loop (PIL)、FPGAの場合はFPGA in the Loop (FIL)と呼びます。シミュレーションモデルの実行速度は通常リアルタイムよりも遅いため、これらのテストも非リアルタイムで行われます。
プラントモデルのFPGA実装
Hardware in the Loop (HIL)
PILやFILで検証した後は、リアルタイムでコントローラのテストを行います。仮想的な制御対象を用いて、コントローラのリアルタイム テストを行うことをHardware in the Loop(HIL)と呼びます。制御対象のモデルからコード生成を行い、リアルタイム実行用のコンピュータ上で、エミュレータとして実行されます。実行速度は、~kHz程度までの制御周期であれば、プロセッサベースのコンピュータでも十分に間に合うかもしれませんが、数十kHz以上になると達成が難しくなります。その点、通信・信号処理・画像処理用途でMHzオーダーの処理をするために従来から広く利用されてきたFPGAであれば、高速な制御対象として動作させることも簡単に実現できます。現在HIL用のリアルタイム実行用コンピュータには、プロセッサに加えて高速処理用のFPGAボードをオプションで追加できるものが数多く販売されています。
FPGAアクセラレータ
このFPGAの高速処理を行うテクノロジーを活用して、PC上のシミュレーションのアクセラレータとして利用するケースもあります。この場合、PC上の処理をオフロードする先にFPGAを使用しますので、PC上で動作するモデルの規模は小さくし、コントローラ、制御対象含めて、できる限りFPGA側に処理を持っていきます。多くの場合ボトルネックとなるのはPC-FPGA間の通信となりますので、PCI-ExpressやGigabit Ethernetなど高速なインターフェイスで接続されます。
FPGAボードを用いた汎用制御対象エミュレータ
HIL用のリアルタイム・ターゲット・コンピュータは高価なため、多くの設計者がコントローラの組み込みソフトのテスト用に使うには、費用がかさみます。そんなときは、FPGA開発ボードを利用して、簡易的なHIL環境を構築すれば、安価に高速処理できる制御対象のリアルタイム・エミュレータとして利用できます。処理内容はもちろん、I/Oピンの構成・配置もカスタマイズ・変更できるFPGAを使用することで、例えば開発プロジェクトごとに、モータのサイズや使用するセンサの種類を変更したりして、汎用のテスト装置として活用することも可能となります。
最後に
この記事ではモータ制御の実装やテストにおけるFPGAの活用方法をご紹介しました。ご紹介したようなFPGA活用方法、モデルベースデザインを試してみたいという方は、MathWorksまでお問い合わせください。
執筆者紹介
MathWorks Japan プリンシパルHDLプロダクトスペシャリスト 松本 充史 氏
電子機器メーカーにて信号処理アルゴリズム開発、電子回路設計に従事後、MATLABの国内代理店にアプリケーションエンジニアとして入社し、信号処理・画像処理、C、HDLコード生成などを担当。現在は主にFPGA/ASIC実装分野のアプリケーションエンジニアとして、ユーザのサポート、機能やユーザビリティ向上のための活動を中心に行っている。