Main Content

getInterfaceImpl

System object をメッセージまたはデータとして設定

R2021a 以降

構文

interface = getInterfaceImpl(obj)

説明

MATLAB® interface = getInterfaceImpl(obj)System ブロックの入力と出力をデータまたはメッセージのいずれかとして指定します。

実行時の詳細

getInterfaceImplmatlab.System クラスの一部であり、setupImpl メソッドの前に呼び出されます。

メソッドのオーサリングのヒント

このメソッドでは Access = protected と設定しなければなりません。

このメソッドでは、プロパティを変更することはできません。

入力引数

すべて展開する

オブジェクト固有のプロパティ、状態、およびメソッドへのアクセスに使用される System object ハンドル。getInterfaceImpl メソッドがこのオブジェクトを使用しない場合、この入力を ~ で置き換えることができます。

出力引数

すべて展開する

MATLAB System ブロック インターフェイス。matlab.system.interface.* オブジェクトのスカラーまたはベクトルとして返されます。matlab.system.interface.Input(signalName,signalType) を使用して入力信号タイプを定義します。matlab.system.interface.Output(signalName,signalType) を使用して出力信号タイプを定義します。

  • signalName – 端子の名前を定義します。文字配列で表されます。

  • signalType – 端子のタイプを定義します。値は matlab.system.interface.Data または matlab.system.interface.Message のいずれかです。

すべて展開する

この例では、MATLAB System ブロックを使用して、メッセージを送信、受信、および処理する方法を説明します。System object を使用して、メッセージ ペイロードを送受信および操作するカスタム動作をモデル化するブロックを作成します。

モデルを読み込んで開く

slexMessageArrivalExample モデルを開きます。

open_system('slexMessageArrivalExample');

このモデルには乱数発生器がデータ ソースとして含まれます。そのデータに基づいて、メッセージの送信側は正弦波のペイロードをもつメッセージを Queue ブロックに送信します。Queue ブロックにはメッセージが格納され、メッセージの受信側はメッセージをデータに変換し直します。

getInterfaceImpl API を使用したメッセージ端子の指定

このメッセージではgetInterfaceImplを使用して、メッセージの送信側とメッセージの受信側の両方に対する MATLAB System ブロック内の入出力メッセージ端子を指定します。メッセージの送信側では、getInterfaceImpl で MATLAB System ブロックの出力をメッセージとして定義します。このアクションにより、System object でメッセージ出力の作成が促されます。メッセージの受信側では、getInterfaceImpl で System object の入力をメッセージとして、出力をデータとして定義します。

%Function to send messages
function interface = getInterfaceImpl(~)
    import matlab.system.interface.*;
    interface = Output("Out1", Message);
end
%Function to receive messages and output as data
function interface = getInterfaceImpl(obj)
    import matlab.system.interface.*;
    interface = [Input("In1", Message), ...
        Output("Out1", Data), Output("out2", Data)];
end

伝播関数とサンプル時間の設定

4 つの伝播関数 (getOutputSizeImplgetOutputDataTypeImplisOutputComplexImplisOutputFixedSizeImpl) をメッセージの送信側に設定しなければなりません。

この例では、メッセージ キューに最大容量の 16 件のメッセージが含まれます。乱数発生器のサンプル時間は 0.1 です。受信側のサンプル時間は 1 です。メッセージの受信側のサンプル時間は getSampleTimeImpl API を使用して MATLAB System ブロックに設定されます。

function sts = getSampleTimeImpl(obj)
    sts = createSampleTime(obj,'Type','Discrete', ...
    'SampleTime',obj.SampleTime);
end

モデルのシミュレーションと結果の確認

Scope ブロックに結果が表示されます。これらの結果はさらにシミュレーションを実行すると、想定どおり、乱数発生器で 50% の時間ゼロより大きい数値が生成されることを示します。

バージョン履歴

R2021a で導入

参考

クラス

ブロック

トピック