複数のラズパイでのシミュレーションペースの統一

5 views (last 30 days)
Kento Fujita
Kento Fujita on 13 Dec 2019
Answered: Shoumei on 26 Dec 2019
複数のラズベリーパイが直列に並んでいて,それぞれsimulinkプログラムを実行しているとします.
これらは互いに隣り合うラズパイと通信を行っていて,Aから受け取った値を用いてBは計算し,その結果をCへ渡すとします.
何も気にしないでABCのsimulinkプログラムを実行時間infでスタンドアロンビルドかつ実行すると,
Bのシミュレーションペースが遅いのに(まだ計算が終わっていないのに)Aがひたすらデータを送り続けてしまうということが起こります.
[やりたいこと]
そこで,パソコンをmaster,各ラズパイをslaveとして,
①slaveは計算が終わったらA,B,Cの順にプログラムを1ステップだけ実行し,計算が終わったらmasterに報告
②masterは全てのslaveから計算が終わりましたと報告があったら再び各slaveへ1ステップだけプログラムを実行しろと命令する
以降その繰り返し
といったことを行いたいと考えています.
(1ステップずつ歩調を合わせて実行したい)
[やってみたけどダメだったこと]
リアルタイムシミュレーションの要領で,シミュレーションペースを遅くしてスタンドアロンビルド
スタンドアロンビルドの場合はシミュレーションペースが調整できないようです.
[詳細]
サンプリングタイム:0.001s
ラズパイ同士の通信方法:UDP
ラズパイ同士の接続方法:スイッチングハブを介した有線LAN接続
パソコンとラズパイの接続方法:上に同じ
各ラズパイでシミュレーションペースを合わせたエクスターナル実行を同時に行うとか可能なのでしょうか.

Accepted Answer

Shoumei
Shoumei on 26 Dec 2019
「ポーリング」という処理方法をご存じでしょうか?
UDPデータが入力されたら処理を実行するように、Enabled SubsystemまたはTriggered Subsystemでモデルを構築してはいかがでしょうか?

More Answers (0)

Community Treasure Hunt

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

Start Hunting!