自動コード生成とシミュレーション環境に関する研究

受託開発実績:自動コード生成とシミュレーション環境に関する研究

自動コード生成を行い、それを仮想CPU上で動作させるためのツールを開発させていただきました。

導入前の問題点

お客様のテーマは、今までにない面白い用途にMATLAB/Simulinkを使おうというものでした。

autocode_sim_00

ただし、本当にそのテーマにMATLAB/Simulinkが活用できるのか分かりません。そこで、研究委託という形でツールのプロトタイプを実装し、それを評価してみる事になりました。

テーマ自体が機密に属する事なので詳しい事は書けません。とにかく、MATLAB/Simulinkをカスタマイズしてくれるベンダーをお探しとの事で、お手伝いさせていただきました。

ちなみに、なぜ弊社にご依頼いただいたのか伺った所、このようなサービスを提供しているベンダーが他に無かったとの事です。

ソリューション

機密に触れないレベルで、作成したツールの持つ機能の1部をご紹介します。

このツールは、Simulinkモデルに記述したアルゴリズムを仮想マルチコアCPU上で実行するためのものです。

Simulink上にてモデリングを行います

■CPU上で実行したい制御アルゴリズムを実装

■プラントモデルを実装

Simulink上にてシミュレーションを行います

■Simulink上にて動作を確認します

■ツールは自動的に、CPU、ペリフェラル、プラントモデル間のデータを収集しMATファイルに保存します

autocode_sim_01

仮想CPUの環境を構築します

■ユーザーがボタンを1つクリックすると、自動的に次の作業が行われます

―各CPU、各ペリフェラル毎に、自動コード生成を行います

―自動コード生成したCコードをコンパイルして仮想CPU上で実行可能な状態にします

―ペリフェラル用のCコードは、SystemCでラッピングしてハードウェアとして実行可能な状態にします

―仮想CPU環境(協調シミュレーター)をモデルに応じて自動構築します

―プラントモデルに相当するデバイスを自動生成します

autocode_sim_02

仮想CPUにて実行します

■仮想CPU環境(協調シミュレーター)を実行すると、Simulinkで記述したのと同様のシミュレーションが実行されます

■ツールが、CPU、ペリフェラル、プラントモデル間のデータを収集し、MATファイルに保存します

■Simulink上のシミュレーション結果と、仮想CPU環境上のシミュレーション結果とを、自動比較する事が出来ます

autocode_sim_03

このツールを作成するに当たり一番苦労したのは、マルチコア間の調整です。

Simulinkモデルを何も考えずに自動コード生成してしまうと、シングルコアなら問題ありませんが、マルチコアの場合はとある問題が発生します

その問題を解消するために、自動コード生成したCコードを構文解析し、仮想Cコードエミュレータ(自作)上で仮想実行させて特性を解析しました。

そして、その結果をツールにフィードバックし、Simulinkモデルを自動調整した上で再び自動コード生成してやる必要がありました。