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

8 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間隔シリアル送信は可能でしょうか?

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.

Categories

Find more on シミュレーション in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!