2016-05-12 51 views
0

私はMatlab/Simulinkを初めて使いましたが、ソフトウェアからSimulinkモデルとのインターフェースが必要です。リアルタイム入力を備えた連続Simulinkモデルを実行しますか?

現時点では、単純なSimulink関数 'Inc'を作成しました。この関数は、定数1と出力を持つ加算ブロックに1つの入力を持ちます。私はTo/From Workspaceブロックを使用しており、simin = [0,0; ​​5,0; 5,1; 10,1]などの時間/値ベクトル入力を使用して一定時間にわたってシミュレーションを実行できます。

私のやりたいことは、継続的にモデルを実行することですか?あらかじめ定義された時間ベースのベクトルではなく、リアルタイムでワークスペースの値を読み込みますか?

これを設定する方法がわかりません。 Matlab/Simulinkでこれを行うことはできますか?

要約すると、私はsiminとsimoutを単一の値、つまりsimin = 1とし、次の固定ステップでモデルを連続的に(無限に)実行したいとします。simoutはsimout = 2に更新されます。さまざまな間隔でワークスペース

答えて

3

簡単な答えは、簡単にはできません。これはSimulinkの仕組みではありません。 MATLABワークスペースは、シミュレーション開始時に読み込み/アクセスされ、Simulinkエンジンに渡されます。シミュレーションが終了する前にワークスペースの値が変更されても、実行中のSimulinkモデルでは考慮されません。

これを回避する方法がありますが、MATLAB & Simulinkの初心者の方は、これはかなり高度なテクニックであることに注意してください。まずはSimulinkをよく知っておくことをお勧めします。

は、あなたが欲しいものを行う方法の提案のためのこれらの同様の質問を見てください

明らかに、シミュレーションの終了時刻をInfまたはそれ以上の数に変更する必要があります。

+0

ありがとうございました。私はイベントリスナー技術を使って何かを稼働させており、tcpclientを使用して、外部システムからモデルへのリアルタイム更新をストリーミングしています。私は、イベントリスナーで実行されるスクリプトに一時停止(TimeStep)を追加して、リアルタイム実行速度までモデルを遅らせる必要があることに気付きました。これは正しい気がしない、私はどこかで設定を逃したことがありますか? – MattP

+1

はい、Simulink自体はリアルタイムシステムではありません。最初は、Windowsやその他のリアルタイムではないO/Sで動作しますが、モデルは本質的に速く実行されます。モデルの複雑さのために、リアルタイムよりも速くても遅くてもかまいません。高速であれば、実行を疑似リアルタイムに遅らせるためのツールがあります。たとえばhttp://uk.mathworks.com/matlabcentral/fileexchange/21908-simulink%C2%AE-real-time-実行。 – am304

+1

またはその1つ:http://uk.mathworks.com/matlabcentral/fileexchange/29107-real-time-pacer-for-simulink – am304

関連する問題