MATLAB System ブロックを使用したメッセージ ペイロードの処理
この例では、MATLAB System ブロックを使用して、メッセージを送信、受信、および処理する方法を説明します。System object を使用して、メッセージ ペイロードを送受信および操作するカスタム動作をモデル化するブロックを作成します。
モデルを読み込んで開く
メッセージ送受信システムのモデルを開きます。このモデルには乱数発生器がデータ ソースとして含まれます。そのデータに基づいて、メッセージの送信側は正弦波のペイロードをもつメッセージを Queue ブロックに送信します。Queue ブロックにはメッセージが格納され、メッセージの受信側はメッセージをデータに変換し直します。
open_system('slexMessageArrivalExample');
getInterfaceImpl
System Object 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 つの伝播関数 (getOutputSizeImpl
、getOutputDataTypeImpl
、isOutputComplexImpl
、isOutputFixedSizeImpl
) をメッセージの送信側に設定しなければなりません。
この例では、メッセージ キューに最大容量の 16 件のメッセージが含まれます。乱数発生器のサンプル時間は 0.1 です。受信側のサンプル時間は 1 です。メッセージの受信側のサンプル時間は getSampleTimeImpl
API を使用して MATLAB System ブロックに設定されます。
function sts = getSampleTimeImpl(obj) sts = createSampleTime(obj,'Type','Discrete', ... 'SampleTime',obj.SampleTime); end
モデルのシミュレーションと結果の確認
Scope ブロックに結果が表示されます。これらの結果はさらにシミュレーションを実行すると、想定どおり、乱数発生器で 50% の時間ゼロより大きい数値が生成されることを示します。