Simulink 関数を使用した共有プリンターでのインク状態の監視
この例では、クライアント (この場合は 3 台のコンピューター) がジョブをサーバーやプリンターに送信する方法、またそのサーバーから状態を受信する方法を示します。この例は、主に、Simulink Function をさまざまなサブシステムから呼び出す方法と、Simulink® および Stateflow® の両方とやり取りする方法を取り上げます (この例をシミュレーションすると、Stateflow によって、現在の作業フォルダー内にコードが生成される可能性があることに注意してください)。
コンピューターがそれぞれ、ランダムなサイズの印刷ジョブを一定の間隔で生成します。プリンターは、Simulink キャンバス上にある 2 つの Simulink Function と、Stateflow 内の 1 つのエクスポートされたグラフィカル関数を通してコンピューターとやり取りします。
クライアントはFunction Callerブロックを使用してプリンターの addPrintJob
インターフェイスを呼び出します。この呼び出しでモデル化されるクライアント/サーバー型の対話は、プリンターのインクが切れている場合、負の戻り値となる場合があります。
この例では、関数を使用して Simulink と Stateflow がやり取りを行う方法も示します。
addPrintJob
の実装は Function Caller ブロックを使用して、Stateflow のエクスポートされたグラフィカル関数である queuePrintJob
を呼び出します。関数 queuePrintJob
はローカルのチャート変数 work
を使用してチャート内の他のコンテンツとやり取りします。
チャートの実装は、Simulink 関数である printerInk
への呼び出しを行います。この関数は、グラフィカル入力および出力を使用して関数 addPrintJob
とやり取りします。
Simulink 関数を可視化およびデバッグすることもできます。
関数とそれぞれの呼び出し元を結ぶ可視化ラインを有効にするには、Simulink エディターの [デバッグ] タブにある [情報のオーバーレイ] で、[関数コネクタ] をクリックします。
Sequence Viewerブロックには、関数の呼び出しが生成される場所、異なる時間に呼び出される関数が示されます。この情報により、呼び出しの流れを時間に基づいて把握したり、これらの関数の呼び出しの間に送信される引数を解析することができます。