エクスターナル モード機能の有効化
エクスターナル モードは、パラメーターの調整と信号の監視を有効にしてアルゴリズム コードを検証するために使用されます。このセクションでは、エクスターナル モード機能をターゲットに追加します。
ここでは、ハードウェアがシリアル通信インターフェイスを介してホスト コンピューターに接続されていると想定します。ハードウェアがイーサネット インターフェイスを介してホスト コンピューターに接続されている場合も、同様の手順が適用されます。それ以外の場合は、カスタム エクスターナル モードの作成が必要な場合があります。カスタム エクスターナル モードの作成の詳細については、TCP/IP またはシリアルのエクスターナル モード通信のためのトランスポート層の作成を参照してください。
このエクスターナル モード構成に使用する名前 (例:
'My New External mode') を指定してaddNewExternalModeを呼び出すことで、ExternalModeオブジェクトextを作成してTargetオブジェクトtgtに追加します。ext = addNewExternalMode(tgt,'My New External mode');ターゲットを保存する前に、MATLAB® ワークスペースから
ExternalModeオブジェクトextを削除しないでください。エクスターナル モード構成
'My New External mode'がターゲットに追加されていることを確認します。show(tgt);
My ARM Cortex M Board Display Name My ARM Cortex M Board My New Deployer 1 My Baremetal Scheduler 1 My New PIL My Serial Interface My New External Mode 0
エクスターナル モード構成
'My New External Mode'がターゲットに追加されていることが出力で示されています。ただし、このエクスターナル モード構成はハードウェア'My ARM Cortex M Board'には使用されていません。この事実は、そのハードウェアに対応する位置に 0 が表示されることで示されています。ExternalModeオブジェクトextをHardwareオブジェクトhwおよび'My Serial Interface'という名前のその I/O インターフェイスにマッピングします。map(tgt,hw,ext,'My Serial Interface');エクスターナル モード構成
'My External Mode'が、ハードウェア'My ARM Cortex M Board'およびその I/O インターフェイス'My Serial Interface'に使用されていることを確認します。show(tgt);
My ARM Cortex M Board Display Name My ARM Cortex M Board My New Deployer 1 My Baremetal Scheduler 1 My New PIL My Serial Interface My New External Mode My Serial Interface
エクスターナル モード構成
'My New External Mode'がハードウェア'My ARM Cortex M Board'に使用されていることが出力で示されています。この事実は、そのハードウェアに対応する位置に、使用される I/O インターフェイスである'My Serial Interface'が表示されることで示されています。ExternalModeオブジェクトextのプロパティを表示します。ext
ext = ExternalMode with properties: Name: 'My New External Mode' SourceFiles: {} PreConnectFcn: '' SetupFcn: '' CloseFcn: ''ご使用のハードウェアに合わせて、必要に応じてプロパティ値を設定します。詳細については、
matlabshared.targetsdk.ExternalModeを参照してください。ExternalModeオブジェクトのSourceFilesプロパティを設定して、エクスターナル モード機能を使用するモデルをビルドするときに使用されるソース ファイルを指定します。たとえば、シリアル I/O インターフェイスを使用したエクスターナル モードのソース ファイルを設定するには、次のように入力します。ext.SourceFiles = {'$(TARGET_ROOT)/src/rtiostream_serial.c', ... '$(MATLAB_ROOT)/rtw/c/src/ext_mode/serial/ext_serial_pkt.c', ... '$(MATLAB_ROOT)/rtw/c/src/ext_mode/serial/rtiostream_serial_interface.c', ... '$(MATLAB_ROOT)/rtw/c/src/ext_mode/serial/ext_svr_serial_transport.c'}ここで、
'$(TARGET_ROOT)/src/rtiostream_serial.c'は、XCP 通信を使用したエクスターナル モード シミュレーションに記載されている指示に従ってホストとターゲット ハードウェアの間のシリアル通信を実装するソース ファイルを表します。他の 3 つのファイルは、シリアル通信インターフェイス用にコード ジェネレーター ソフトウェアで提供されているファイルです。メモ
$(TARGET_ROOT)は、ターゲットのルート フォルダーを表すトークンであり、コード生成ソフトウェアによって解決されます。$(MATLAB_ROOT)は、MATLAB のルート フォルダーを表すトークンであり、コード生成ソフトウェアによって解決されます。Simulink® と生成されたコードの間でエクスターナル モード接続が確立される前に実行される MATLAB 関数を指定します。
ExternalModeオブジェクトのPreConnectFcnプロパティを'pause(5);'などに設定します。ext.PreConnectFcn = 'pause(5);'同様に、プロパティ
SetupFcnおよびCloseFcnを設定できます。詳細については、ExternalMode を参照してください。ターゲットを説明する情報をそのフレームワークに保存します。
saveTarget(tgt);
エクスターナル モードが正しく機能することをテストします。
testTarget(tgt,'externalmode');テストが完了すると、結果の概要が表示されます。テストが
PASSEDの場合、次の機能の追加に進むことができます。それ以外の場合、テストがFAILEDまたはINCOMPLETEであれば、テストの概要の下にテスト診断ログへのリンクが表示されます。
エクスターナル モードがハードウェアに登録されていることの確認
MATLAB の [ホーム] タブで、[新規]、[Simulink モデル] を選択します。モデルの既定の名前は
untitledです。名前をtestに変更します。[アプリ] タブで [ハードウェア ボードで実行] をクリックします。[ハードウェア ボードで実行] ダイアログ ボックスで、[ハードウェア ボード] を登録したハードウェア (たとえば、
'My ARM Cortex M Board') に設定します。[ハードウェア] タブの [ハードウェア設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、
[ソルバー]を選択します。[タイプ] リストで
[固定ステップ]を選択します。[ソルバー] リストで[自動]を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで
[ハードウェア実行]タブを選択します。[エクスターナル モード] グループを選択します。エクスターナル モードのプロパティがハードウェアに対して正しく表示されていることを確認します。

エクスターナル モードの動作の確認
MATLAB の [ホーム] タブで、[新規]、[Simulink モデル] を選択します。モデルの既定の名前は
untitledです。[ファイル]、[名前を付けて保存] をクリックし、モデルをtestとして保存します。[アプリ] タブで [ハードウェア ボードで実行] をクリックします。[ハードウェア ボードで実行] ダイアログ ボックスで、[ハードウェア ボード] を登録したハードウェア (たとえば、
'My ARM Cortex M Board') に設定します。[ハードウェア] タブの [ハードウェア設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、
[ソルバー]を選択します。[タイプ] リストで
[固定ステップ]を選択します。[ソルバー] リストで[自動]を選択します。MATLAB の [ホーム] タブで [Simulink ライブラリ] を選択します。Simulink ライブラリで [Sources] を開き、Constant ブロックをモデルに追加します。
Simulink ライブラリで [Math Operations] を開き、Gain ブロックをモデルに追加します。Constant ブロックと Gain ブロックを接続します。
Simulink ライブラリで [Sinks] を開き、Scope ブロックをモデルに追加します。Scope ブロックと Gain ブロックを接続します。
[ハードウェア] タブで [監視と調整] をクリックして、エクスターナル モードでシミュレーションを実行します。Scope ブロックの出力が 1 であることを確認します。