主要内容

プログラム実行結果のログを作成する

金宝app®编码器™ソフトウェアによって生成されたプログラムによって,解析用の垫ファイルにデータを保存できる複数の手法が使用可能です。生成された実行可能ファイルは,モデルの各実行タイムステップにおけるシステムの状態,出力およびシミュレーション時間を保存できます。デ,タは,既定では模型.matという名前のmatファescルに書き込まれます。ここで,模型はモデルの名前です。デタログ記録のチュトリアルにいては,解析のためのログデ,タを参照してください。

メモ

データのログ作成は,ファイルシステムにアクセスできるシステムターゲットファイルでのみ利用できます。また,RSimターゲットの実行可能ファイルのみがMATLABワークスペースデータにアクセスできます。

垫ファルのログ記録の制限にいては,コンフィギュレションパラメタ垫子ファeconrルのログを参照してください。

解析のためのログデ,タ

モデルのセットアップと構成

この例では,モデルslexAircraftExampleのコピ,によって生成されたデ,タのログをmyAircraftExample.matファ▪▪▪ルに記録する方法に▪▪▪いて説明します。まだ作業フォルダ,にslexAircraftExampleのコピ,をmyAircraftExampleとしてセットアップしていない場合は,リアルタムシステムのビルドプロセスワクフロの手順を参照してください。

メモ

コードジェネレーターを構成して実行時のデータログのサポートが含まれるコードを生成すると,コードジェネレーターはログファイル内に格納されるブロックパスのブロック名のテキストを含めることができます。これらのテキストに,モデルの文字セットエンコードで表現できない文字が含まれている場合,コードジェネレーターはその文字をXMLエスケープシーケンスに置き換えます。たとえば,コードジェネレーターは日本語の全角カタカナの文字“ア”をエスケープシーケンス& # x30A2;で置き換えます。詳細にいては,地域と言語の設定とコ,ド生成を参照してください。

デタのログを構成するには,[コンフィギュレションパラメタ]ダアログボックスを開き,[デタのンポト/エクスポト]ペ@ @ンを選択します。このプロセスは,金宝appSimulinkモデルを設定して出力をMATLAB®ワ,クスペ,スに保存する方法と同じです。定義して有効にした各ワ,クスペ,スの戻り値変数に対し,金宝app仿真软件编码器ソフトウェアが同様のmatファescル変数を定義します。たとえば,シミュレ,ション時間を変数吹捧に保存する場合,生成されたプログラムではこのデ,タがrt_toutという名前の変数に記録されます。プレフィックス”rt_“は,サフィックス”_rtに変更するか,削除できます。これを実行するには,モデルコンフィギュレ,ションパラメ,タ,[matファ蓉区ルの変数名の修飾子]を設定します。

生成されたコ,ドで信号のログを取るには,以下に説明する[デタのンポト/エクスポト]モデルコンフィギュレ,ションパラメ,タ,を使用するか,モデルに到文件ブロックまたは到工作空间ブロックを含めます。

メモ

コド生成のmatファルのログでは,信号のログがサポトされません。[デタのンポト/エクスポト]モデルコンフィギュレーションパラメーターを使用して垫ファイルと信号のログを有効にし,仿真软件エデ金宝appィターでログを作成する信号を選択した場合,コードジェネレーターに次の警告が表示されます。

警告:mat文件日志不支持信号日志。金宝app当你的模型代码执行时,信号记录变量'rt_logsout'不会被保存到mat文件中。
この警告を回避するには,モデルコンフィギュレ,ションパラメ,タ,[信号のログ]をオフにします。

この例では,myAircraftExampleモデルを変更して,生成されたプログラムによってシミュレ,ション時間とシステム出力がmyAircraftExample.matファ@ @ルに保存されるようにします。次に,データをベース ワークスペースに読み込んで、出力の 1 つに対してシミュレーション時間をプロットします。myAircraftExampleモデルをリアルタムシステムのビルドプロセスワクフロで説明されているとおりに設定する必要があります。

シミュレ,ション中のデ,タログ

デ,タログ機能を使用するには,次の手順に従います。

  1. myAircraftExampleモデルがまだ開かれていなければ,開きます。

  2. [コンフィギュレションパラメタ]ダアログボックスを開きます。

  3. [デタのンポト/エクスポト]ペ@ @ンを選択します。[デタのンポト/エクスポト]ペンでは,ワクスペスに保存する出力デタおよびそのデタに使用する変数名を指定できます。

  4. パラメタ[形式][時間付き構造体]に設定します。この形式を選択すると,金宝appSimulinkではモデルの状態と出力が[ワクスペスまたはファルに保存]エリアで名前を指定した構造体に保存されます。既定では,これらの構造体はxoutが状態用でが出力用です。出力の保存に使用される構造体には,次の2の最上位フィルドがあります。时间信号です。时间フィ,ルドにはシミュレ,ション時間のベクトルが,信号にはサブ構造体の配列が含まれ,それぞれモデル出力ポ,トに対応しています。

  5. [出力]を選択します。これにより,金宝appSimulinkでシミュレ,ション中に出力信号デ,タがという名前の変数として保存されるようになります。[出力]を選択すると,コ,ドジェネレ,タ,でル,トの输出ブロック(α,rad)をmatファルに記録するコドを作成できるようになります。

  6. [間引き]1を設定します。

  7. その他のパラメ,タ,が選択されている場合,それらをオフにします。

  8. [適用](好的)をクリックして変更を登録し,ダ。

  9. モデルを保存します。

  10. モデルウィンドウで,飞机动力学模型ブロックの横にあるスコープシンボルをダブルクリックし,次にモデルのシミュレーションを実行します。スコ,プ表示の結果は以下のとおりです。

    结果范围显示

  11. シミュレーション時間と出力が垫ファイルのベースワークスペースに保存されたことを確認します。Matlabプロンプトで次のように入力します。

    谁你
    金宝appSimulinkに以下のように表示されます。

    名称大小字节类属性yout 1x1 10756 struct
  12. シミュレ,ション時間と変数をプロットして,α,radが記録されたことを確認します。コマンドウィンドウで以下のように入力します。

    情节(yout.time yout.signals.values)

    仿真输出图

生成されたコ,ドからのデ,タログ

この例の2番目の部分では,モデルmyAircraftExampleに。このプログラムは,前に調べたシミュレ,ション時間と出力を記載したmatファ,ルを出力します。myAircraftExampleモデルのコードは既に生成しましたが,データログを有効にしてモデルを変更したのでコードを再生成しなければなりません。以下にこの手順を説明します。

シミュレーションによるデータでワークスペースデータを上書きすることを避けるために,コードジェネレーターでは仿真软金宝app件によって記録される変数の識別子が変更されます。これらの変更は制御できます。

  1. モデルコンフィギュレションパラメタ[matファ蓉区ルの変数名の修飾子]_rtに設定します。これにより,この例の最初の部分でログを作成することにした各変数に接尾辞の_rtが追加されます。

  2. [適用](好的)をクリックして変更を登録し,ダ。

  3. モデルを保存します。

  4. 実行可能ファ@ @ルをビルドします。

  5. ビルドが完了したら,次のコマンドで実行可能プログラムを実行します。

    myAircraftExample !
  6. プログラムにより,matファルが書き込まれたことを示す次の2行のメッセジが生成されます。

    **启动模型** **创建myAircraftExample。垫* *
  7. 以下のように入力して,実行可能プログラムによって作成された垫ファイルデータを読み込み,シミュレーションと生成されたプログラムのワークスペース変数を表示します。

    负载myAircraftExample。你是谁

    金宝appSimulinkには以下のように表示されます。

    名称大小字节类属性yout 1x1 10756 struct yout_rt 1x1 10756 struct

    ここで,シミュレションの実行および生成されたコドによる構造体のサズとバト数は同じです。

  8. コマンドウィンドウで次のコマンドを入力して,生成されたコ,ドの出力をプロットします。

    情节(yout_rt.time yout_rt.signals.values)

    生成的代码输出的图形

    このプロットは,この例の前述部分で作成したプロットと同一でなければなりません。

ヒント

UNIX®プラットフォ,ムの場合,コマンドウィンドウで構文!。/executable_nameを使用して実行可能プログラムを実行します。必要に応じて,構文。/executable_nameを使用して操作系统シェルから実行可能プログラムを実行します。詳細にいては,外部コマンド,スクリプト,プログラムの実行を参照してください。

状態,時間および出力のログの構成

[デタのンポト/エクスポト]ペインを使用すると,生成したプログラムで各モデルの実行タイムステップにおけるシステムの状態や出力,シミュレーション時間を保存できるようになります。データは,(既定で)模型.matという名前のmatファescルに書き込まれます。

このデータログ機能を使用する前に,MATLABワークスペースに出力を返す仿真软金宝app件モデルの設定方法について学習してください。これは,シミュレ,ションデ,タのエクスポ,トで説明しています。

定義して有効にした各ワークスペース出力変数に対し,コードジェネレーターが垫ファイル変数を定義します。たとえば,モデルがシミュレ,ション時間をワ,クスペ,ス変数吹捧に保存する場合,生成されたプログラムではこのデ,タが(既定の設定では)rt_toutという名前の変数に記録されます。

コ,ドジェネレ,タ,で生成されたコ,ドでは,次のデ,タが記録されます。

  • 根输出ブロック

    システム出力の既定のmatファescルの変数名はrt_youtです。

    配列rt_youtの並べ替え順序は输出端口ブロックの端子番号に基づき,1から始まる昇順になります。

  • モデルの連続状態と離散状態

    システム出力の既定のmatファescルの変数名はrt_xoutです。

  • シミュレ,ション時間

    シミュレション時間の既定のmatファルの変数名はrt_toutです。

既定のmatファルの変数名のオバラド

既定の設定では,コードジェネレーターによって,垫ファイル変数名を形成するシステム出力,状態およびシミュレーション時間の変数名の前にテキストrt_が付けられます。モデルのこの接頭辞を変更するには,モデルコンフィギュレ,ションパラメ,タ,[matファ蓉区ルの変数名の修飾子]を(rt_)、接尾辞 (_rt)または修飾子なし([なし])に設定します。他のシステムタゲットファルでは,このパラメタはサポトされない場合があります。

既定のmatファド

生成コードで次の垫ファイル属性をオーバーライドするためのコンパイラオプションを指定できます。

垫子ファeconrル属性 既定値 コンパ@ @ラオプション
名前 模型.mat -DSAVEFILE =文件名
デタログバッファのサズ 1024バ服务器ト -DDEFAULT_BUFFER_SIZE =n

メモ

有効なオプションの構文はコンパ@ @ラによって異なります。たとえば,微软®Visual c++®コンパ@ @ラは通常/ DSAVEFILE =文件名-DSAVEFILE =文件名を受け入れます。

テンプレートmakefile (TMF)ベースのターゲットの場合は,モデルコンフィギュレーションパラメーター[makeコマンド]をコンパ@ @ラオプションに設定します。たとえば,次のようにします。

设置Make命令参数为make_rtw OPTS=

锐信やERTなどのツールチェーンベースのシステムターゲットファイルの場合,コンパイラオプションをモデルコンフィギュレーションに追加します。パラメタ[ビルド構成](指定)に設定して,コンパ[ル]/[オプション]テ,ブルの[cコンパc_c_ラ]行に追加します。たとえば,次のようにします。

将编译器选项添加到工具选项表的C编译器行$(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL) -DSAVEFILE=myCodeLog。mat /Od /Oy-

コンパ,MATLAB®Coder™ビルドプロセスへのカスタムンの追加の例に示す手順を使用してカスタム。たとえば,コンパ@ @ラオプションをカスタム ツールチェーンの MATLAB ソース ファイルに追加するには、次のようにmyCompilerOptsを定義します。

optimsOffOpts = {'/c /Od'};optimsOnOpts = {'/c /O2'};cCompilerOpts = '$(cflags) $(CVARSFLAG) $(cflags_extra)';cppCompilerOpts = '$(cflags) $(CVARSFLAG) $(cppflags_extra)';myCompilerOpts = {' -DSAVEFILE=myCodeLog. myCompilerOpts = {'垫的};...

次に,myCompilerOptsを,これが適用される各コンフィギュレ,ションとコンパ,ラのフラグに追加します。

CFG = tc。getBuildConfiguration(“加快构建”);cfg。setOption('C编译器',horzcat(cCompilerOpts,myCompilerOptsoptimsOffOpts));

MATLAB®Coder™ビルドプロセスへのカスタムンの追加に示すように,カスタムツールチェーンの変更後,コンフィギュレーションを垫ファイルに保存してターゲットレジストリを更新します。

范围ブロックと到工作区ブロックを使用したデ,タのログ記録

コ,ドジェネレ,タ,で生成されたコ,ドでは,次に示すソ,スからのデ,タも記録されます。

  • ブロックパラメタ[ワ,クスペ,スにデ,タのログを作成]が有効になっている范围ブロック

    各范围ブロックのダ@ @アログボックスで,変数名とデ@ @タ形式を指定しなければなりません。

  • モデル内の到工作空间ブロック

    各对工作区ブロックのダイアログボックスで,変数名とデータ形式を指定しなければなりません。

変数は,[ワ,クスペ,スi / o]ペ电子邮箱ンで記録される変数と共に,model.matに書き込まれます。

To Fileブロックを使用したデ,タのログの作成

To Fileブロックに対してデ,タのログを作成することもできます。生成されたプログラムは,モデルの到文件ブロックごとに別々のmatファル(model.matとは異なるファaapl . aapl .ル)を生成します。ファ▪▪ルにはブロックの時間と入力デ▪▪タが含まれます。到文件ブロックのダイアログ ボックスで、ファイル名、変数名、間引きおよびサンプル時間を指定しなければなりません。

メモ

模型ブロックで参照されるモデルは,最上位モデル用に記録された状態に含めることができる状態以外のコンテキストでは,データのログを実行しません。参照されるモデル用の金宝app仿真软件编码器ソフトウェアで生成されたコドは,matファルに対してデタのログを実行しません。

シングルタスクおよびマルチタスクにおけるデ,タのログの相違点

シングルタスクおよびマルチタスクのシステムでデータを記録すると,以下の記録に違いがあることがわかります。

  • 連続でないル,トの输出端口ブロック

  • 離散状態

マルチタスクモードでは,最初のタスク実行後に(最初のタイムステップの終わりではなく),状態と出力の記録が行われます。シングルタスクモードでは,ビルド手順で生成されたコードによって,最初のタイムステップ後に,状態および出力が記録されます。

シングルタスクおよびマルチタスクのデタのログ間における相違点にいては,シングルタスクモデルおよびマルチタスクモデルの実行におけるデ,タのログを参照してください。

メモ

ラピッドミュレ,ションタ,ゲット(RSim)には,改善されたログオプションがあります。詳細にいては,RSimシステムターゲットファイルを使用したホストコンピューターでのハイブリッド動的システムの高速化,調整およびテストを参照してください。

関連するトピック