TCP/IPを使った連成シミュレーション
Inter-Process Communication(IPC: プロセス間通信)連成シミュレーションは、1台のマシン上でも、別々のマシン / プラットフォームの間でも実行できます。
IPC連成シミュレーションは、ソルバーを実行する2つのプロセス間のコミュニケーションをTCPソケットを使って行います。TCPプロトコルは独立したプラットフォームであるため、このコミュニケーションタイプでは、異なるプラットフォーム間のコミュニケーションが可能です。
TCP/IPを使用したMATLAB/Simulink関連の連成シミュレーションでサポートされている手法
- Simulink Coder/Real-Time Workshop (RTW) IPC連成シミュレーション
- Simulink IPC連成シミュレーション
これらのIPC連成シミュレーションはいずれも、2つの追加のDLLとしてnuclient.dllおよびnuserver.dllを必要とします。これらのライブラリは、サーバー-クライアント コミュニケーションの構築に使用されます。
RTW DLLでは、既存のRTW DLLを読み込めるようにするための変更はありません。Simulink IPC連成シミュレーションで必要なmex DLLはmscosimまたはmscosimipcのいずれかです。これはS-Functionブロックに対して入力する名前です。
RTW DLLを使った連成シミュレーションではMotionSolveがシミュレーションを先導する(MotionSolveが最初にコールされる)点に注意が必要です。Simulink IPC連成シミュレーションの場合、Simulinkが起動され、最初にコールされます。コミュニケーション(TCP/IPデーモン)を仲立ちするプロセスは、先導するプロセスによりコールされるマシン上で実行されます。
必要とされるモデル変更
- RTW
- RTW連成シミュレーションの場合、Control_PlantInput要素とControl_PlantOutput要素に属性ip_addressを追加します。この属性には、MotionSolveソルバーが稼動するIPアドレス(例えば、204.235.26.47やlocalhost)を示す文字列が記述されています。
- Simulink
- Simulink IPC連成シミュレーションの場合、MotionSolve XMLモデルに変更はありません。Simulinkモデルについては、S-Functionの名前をmscosimからmscosimipcに変更するか、同じ名前のままにします。
さらに、MotionSolveが稼動するマシンのIPアドレスを指定する必要があります。これを行うには、MATLABワークスペース内のMATLAB変数または環境変数MS_SERVER_IP_ADDRESSのいずれかを定義します(例えば、MS_SERVER_IP_ADDRESS = 204.235.26.47またはsetenv(MS_SERVER_IP_ADDRESS, 204.235.26.47))。
この方法では、MATLABを終了すると変数は保持されないため、MATLABを起動するたびにこの指定が必要になります。IPアドレスを定義するのは一度だけにして、その後は変更しない場合は、MotionSolveが稼動するIPアドレスを指すシステムレベルの環境変数MS_SERVER_IP_ADDRESSを定義できます。IPC連成シミュレーションの実行時にこの環境変数が見つからない場合は、IPアドレスのデフォルトとしてloaclhostが使用されます。