simulinkのビルドとトリガー機能について

21 views (last 30 days)
Soichiro Kato
Soichiro Kato on 20 Jul 2020
Commented: Soichiro Kato on 29 Jul 2020
現在研究室にてサードパーティー製のRTIシステムとmatlab/simulinkを併用して、制御系を設計しています。
RTIシステムの実行にあたり、simulinkのビルドが必要です。
その際に、ビルドを開始・終了する時間とRTIシステムで計測を開始するのにタイムラグが発生してしまいます。
しかし、計測開始時間や信号の入出力開始時間を完全にコントロールしたいのですが、どのような手段を用いればよいのでしょうか。
一部のworkspaceブロックに信号が入力されるのを時間的に遅らせるといったことでなく、simulink全体に掛かるトリガー機能のようなものを探しています。
過去の質問や自力での調査では解決しませんでした。
現在は一部の信号線にswitchブロックを加え、stpeブロックを入力2(判断基準)とし、
30秒経過した後に出力がconstant(中身は0)ブロック(入力1)から信号線(入力3)に切り替わるように対応しています。
*添付した写真のようにswitchブロックを使用しています。
この方法はあくまで応急処置のようなものであると考えており、根本的に解決できないのか教えて頂きたいです。

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 23 Jul 2020
サードパーティー製のRTIシステムとMATLAB, Simulinkをどのように接続しているかが重用になると思います。
例えば、シリアル通信(RS232C)を用いているのであれば、Instrument Control Toolboxの「Serial Receive」ブロックが使えます。その際に、「Enable Blocking Mode」にチェックを入れておけば、指定したデータ数を受け取るまでSimulinkの処理を待たせることができます。
TCP/IPやUDP通信でも同様に「Enable Blocking Mode」が使えます。
参考までに、R2018aからはシミュレーションペーシングという機能がありまして、Simulinkの実行ペースを実時間のn倍という指定をすることができます。
また、制御という観点では、0.1秒よりも短い時間刻みで制御を行うような場合には、その制御システム内にPCを介在させることは推奨されません。専用のリアルタイム実行ハードウェアを用いることを推奨いたします。
  3 Comments
Toshinobu Shintai
Toshinobu Shintai on 24 Jul 2020
dSPACE社の専用ブロックを用いてSimulinkモデルをビルドしてMicroLabBoxに機能を実装し、PC側のdSPACE社のGUIアプリとEthernet通信を行っているということでしょうか。
この場合は、dSPACE社に問い合わせていただく方が良いです。
Soichiro Kato
Soichiro Kato on 29 Jul 2020
おっしゃる通り、dSPACE社の専用ブロックを用いて信号の入出力を行っています。
dSPACE社に問い合わせてみます。
この度はご丁寧にありがとうございました。

Sign in to comment.

Categories

Find more on 一般分野への適用 in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!