主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

シミュレーション中のブロックデータへのアクセス

ブロックの実行時オブジェクトについて

金宝app®は,ブロック実行時インターフェイスと呼ばれるアプリケーションプログラミングインターフェイス(API)を提供します。これによりシミュレーションの実行中に,ブロック入力,ブロック出力,パラメーター,状態,作業ベクトルのような,ブロックデータにプログラムでアクセスすることができます。このインターフェイスを使用して,MATLAB®コマンドライン,仿金宝app真软件デバッガー,2级MATLAB函数(の编写二级MATLAB s函数を参照)から,ブロックの実行時データにアクセスできます。

メモ

このインターフェイスは,モデルが停止していたり,デバッガー内で実行または停止しているときにも使用できます。

ブロック実行時インターフェイスは,実行中のモデル内のブロックに関するデータを提供する一連の仿金宝app真软件データオブジェクトクラスから構成されます(データオブジェクトを参照)。特に,このインターフェイスは,ブロックの実行時オブジェクトと呼ばれる金宝app仿真软件。RunTimeBlockのインスタンスと実行中のモデル内の各非バーチャルブロックを関連付けます。実行時オブジェクトのメソッドとプロパティにより,ブロックのI / O端子,パラメーター,サンプル時間,状態に関する実行時データにアクセスできます。

実行時オブジェクトへのアクセス

実行中のモデル内の各非バーチャルブロックは,シミュレーションの実行中,値がブロックの実行時オブジェクトのハンドルとなるRuntimeObjectパラメーターをもちます。これにより,get_paramを使ってブロックの実行時オブジェクトを取得することができます。たとえば,次のステートメント

“RuntimeObject”rto = get_param (gcb);

は,現在選択されているブロックの実行時オブジェクトを返します。実行時オブジェクトデータは読み取り専用です。実行時オブジェクトを使用して,ブロックのパラメーター,入力,出力および状態データを変更することはできません。

メモ

バーチャルブロック(非バーチャルブロックとバーチャルブロックを参照)は実行時オブジェクトをもちません。モデルのコンパイル中の最適化で削除されたブロックも,実行時オブジェクトをもちません(ブロック削減を参照)。実行時オブジェクトは,ブロックを含むモデルが実行中あるいは一時停止中にのみ存在します。モデルが停止した場合,get_paramは,空のハンドルを返します。モデルを停止すると,既存の実行時オブジェクトのすべてのハンドルが空になります。

メソッド実行イベントのリスニング

ブロックのランタイムAPIに対する応用の1つは,シミュレーション中の主要点で,ブロックが出力や微係数を計算する前後のブロックの状態値のような診断データを収集することです。ブロックのランタイムAPIはそのような応用を可能にするイベントリスナーメカニズムを提供します。詳細は,add_exec_event_listenerコマンドのドキュメンテーションを参照してください。メソッド実行イベントを使用した例を表示するには,MATLABのコマンドラインに

を入力します。この仿金宝app真软件モデルにはs函数のadapt_lms.mが含まれます。これはシステム同定を実行して冷杉フィルターの係数を判定します。s函数のPostPropagationSetupメソッドは2番目のベクトルに各タイムステップで計算されるフィルター係数を保存するように,ブロックの実行時オブジェクトのDWorkベクトルを初期化します。

金宝app仿真软件モデルでは,s函数ブロックの下の注釈をダブルクリックすると,OpenFcnが実行されます。この関数は,最初に冷杉フィルター係数をプロットする図を開きます。次に関数add_adapt_coef_plot.mを実行して,次のコード行によりPostOutputsメソッド実行イベントをs函数のブロック実行時オブジェクトに追加します。

%为PostOutputs事件块添加一个回调函数= 'sldemo_msfcn_lms/LMS Adaptive';H = add_exec_event_listener(blk,…PostOutputs, @plot_adapt_coefs);

関数plot_adapt_coefs.mは,毎回,s函数の输出メソッドを呼び出した後に実行されるイベントリスナーとして登録されています。関数は,ブロックの実行時オブジェクトのDWorkベクトルにアクセスして,输出メソッドで計算されたフィルター係数をプロットします。plot_adapt_coefs.mに使用される呼び出し構文は,あらゆるリスナーの基準に従います。次に示されたように,最初の入力引数はs函数のブロック実行時オブジェクトで,2番目の引数はイベントデータの構造体です。

函数plot_adapt_coefs(block, ei) %#okstemPlot = get_param (block.BlockHandle,用户数据);美国东部时间= block.Dwork (2) . data;集(stemPlot(2),“YData”,美国东部时间);drawnow(“暴露”);

実行時オブジェクトと金宝appの実行の同期

実行時オブジェクトを使用して,ブロックの出力値を取得し,MATLABコマンドウィンドウに表示するには,次のコマンドを入力します。

rto. outputport (1).Data . rto = get_param(gcb,'RuntimeObject'

しかし,実行時オブジェクトが仿金宝app真软件の実行と同期されていない場合は,ブロックの真の出力が表示されない可能性があります。金宝app仿真软件は,実行時オブジェクトが所二级MATLAB函数またはイベントリスナーコールバックに使用されているときにのみ,実行時オブジェクトと仿真软件の実行を確実に同期します。実行時オブジェクトをMATLABコマンドウィンドウから呼び出したときに,モデルの他のブロックにメモリの共有が許可されている場合は,不正確な出力データが返されることがあります。

数据フィールドに正しいブロック出力が確実に含まれるようにするには,[コンフィギュレーションパラメーター]ダイアログボックスを開き,(信号ストレージの再利用)チェックボックスをオフにします(信号ストレージの再利用(金宝app仿真软件编码器)を参照)。

関連するトピック