MATLAB Answers

実時間での10ms制御 シリアル送信

4 views (last 30 days)
Yuuki Tanaka
Yuuki Tanaka on 21 Feb 2020
Commented: Toshinobu Shintai on 21 Feb 2020
お世話になります。
実時間での10ms間隔で、シリアル送信を行いたいです。
MATLABでは可能でしょうか?
現在、SImlink上でSerial Send Blockにて制御周期 0.01(10ms)を指定し、
受信側の自作C++アプリケーションのシリアル受信間隔を確認したところ、16ms間隔でした。
受信側の自作アプリケーションは5ms間隔で動作させており、5ms間隔なのは動作確認済みです。
MATLABでは実時間での10ms間隔シリアル送信は可能でしょうか?

  0 Comments

Sign in to comment.

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 21 Feb 2020
Simulinkで制御周期を0.01sに指定したとのことですが、コンフィギュレーションパラメータでステップサイズを0.01sに設定して「シミュレーションペーシング」を設定したということでしょうか。
いずれにしても、PCで動作しているMATLAB及びSimulinkでの実時間制御は難しいです。
以前同じような質問がありまして、以下に詳しく回答しましたのでご参照ください。

  2 Comments

Yuuki Tanaka
Yuuki Tanaka on 21 Feb 2020
お世話になります。
ご回答ありがとうございます。
シミュレーション
>「シミュレーションペーシング」を設定したということでしょうか。
いえ。設定していません。
使用しているMATLABバージョンはR2017でして、実時間シミュレーションについて検索したところ以下URLの情報を見つけました。
0.01で動作させたのは以下2パターンです
 (1) 上記リンクのReal Time Pacerを設定した状態
    →結果、受信側でのシリアル受信間隔は10msではなく、16msであることを確認
(2) 上記リンクのReal Time Pacerを設定しない状態で、ステップ値をとにかく小さい値で実施
    →Real Time Pacerは使用できないのかな?と思い、設定しない状態で
  試行錯誤しました。結果、状況は変わりませんでした。
Toshinobu Shintai
Toshinobu Shintai on 21 Feb 2020
Real Time Pacerもシミュレーションペーシングと原理は同じようなものでして、ソフトタイマーから得た時間からシミュレーションを遅らせているだけです。
おそらく、Real Time Pacerの動作としては正しく動いているのではないでしょうか。それでも、そのPCの動作精度では10msのリアルタイムを実現できていない、ということだと思われます。

Sign in to comment.

Sign in to answer this question.