🔄

Simulinkを実機に実装するいろいろな方法と感想

に公開

Advent Calender 2025の12/14枠になります.
https://qiita.com/advent-calendar/2025/matlab

はじめに

Simulinkは制御系のロジックを簡単に組むことができます.となると,次には実機で試したくなるもので,如何に実機実装するかということがポイントになります.
著者も常日頃から様々な方法を模索しており,その中で調べたSimulinkと実機をつなぐ方法についてまとめたいと思います.
使用経験のあるものにはいい点とう~んと思う点,使用経験のないものは採用に至らなかった理由(あくまで Not for meだった点です)を記載します.
あくまで個人の感想になりますが,参考になれば幸いです.

装置たち

Speedgoat (Speedgoat社)

Mathworksからスピンアウトした企業ということもあり,Simulinkとの連携という意味では最強の一言.使用経験あり.
https://www.speedgoat.com/

いい点

  • Simulinkからシームレスに使える.最新バージョンにも対応
  • 取り扱える信号の種類が多く,航空宇宙向けのマイナーな信号も使える.
  • 細かい設定(時刻同期やオーバーサンプリングなど)を意識しなくても使える.普通に使う分なら雑念を減らして使えるのでいい.
  • ドキュメントが必要十分.余計な情報がなく,とりあえず使い始めるまでの導線がいい.

うーんな点

  • 高い.ここ数年でさらに高くなった.もともと金額的なハードルがあったのに値上がりしすぎて事務的なハードルも上がってしまってる.
  • Simulinkの外との連携がしにくい.外部ソフトや上位レイヤーとの連携がしにくい.外部ポートからTCPやUDPでできそうではあるが...スマートではない気がして気が乗らない...
  • UIやスコープがMATLAB側に統合されてしまった.一昔前まではSpeedgoat用に用意されていたが,それぞれMATLAB AppとData Inspectorに統合されてしまい,一つ一つの状態を確認しながら使う羽目になるので使いにくくなった.研究用途では機能が固定されている専用ブロックがある方が使いやすく,安定して運用できていたので,これは戻してほしい...
  • 隠蔽されすぎてエラーへの対応が難しい.特にコンパイル時のエラーが分かりにくく原因究明に時間がかかることもしばしば.キャッシュファイルをクリアする仕組みが欲しい...

MicroLabBox Ⅱ (dSpace社)

MicroAutoBoxのLab版.AutoBoxのほうは自動車業界で結構使われているらしい.使用経験はなし.

https://www.dspace.com/ja/jpn/home/products/hw/microlabbox-ii.cfm

よさそうな点

  • 端子などがワンパッケージにまとまっている.
  • 入出力のポート数が固定されているので,安定した運用ができそう.

採用にいたらなかった点

  • 信号の数が限られる(特にエンコーダ系).電流信号が扱えないのもちょっとデメリットかな.
  • 価格面.もう少し頑張ってSpeedgoat買うか,以降で紹介する装置のほうがより安価で柔軟性が期待できる方を買うかという値段帯.

TwinCATにMATLAB/Simulinkのインターフェースモジュールを合わせることで使える.EtherCAT中心なので柔軟性が見込める.予算に合わせて柔軟に構成できるので,ノウハウを有していればこれ一択な可能性すらある.使用経験はなし.

https://www.beckhoff.com/ja-jp/products/automation/matlab-r-and-simulink-r-for-twincat-3/

よさそうな点

  • 豊富な入出力端子と柔軟な構成.EtherCATターミナルを使用しているので,扱える信号は幅広く,必要に応じて拡張も用意.メーカの縛りがないのもいい点.
  • スペックに応じたPCを選定可能(デメリットでもあるが)
  • 開発環境であればTwinCATやモジュールは無料で使える

採用にいたらなかった点

  • 運用までのハードルが高そう.ドキュメントを見ても今一制御の実装からロギングまでのイメージがつかめなかったので導入は冒険だと感じる.MATLB/Simulinkとの連携を推すなら研究者が使う目線でドキュメント整備してくれたらうれしい.
  • IPCのスペック見積が難しい.選択肢が多すぎると何を選べばいいかわからない&研究の場合,対象の装置の構成も変わるのでスペックの余裕を見積もるのも難しい.選択肢が少ないとあきらめがつくので選べるのだが...

seagull (MIS社)

https://www.mttis.co.jp/items/dsp_sys/seagull/

よさそうな点

  • speedgoatやdspaceよりは安価に構築できそう.
  • 日本のメーカなので相談や調達がしやすい.
  • データロギングをトリガー信号で行える

採用に至らなかった点

  • 使える信号の種類が限られており,実験装置のセンサ構成と合わなかった.アブソリュートエンコーダの信号がもっと豊富であり,電流信号も使えたら候補にあがっていた.

ROBIN-M7(MIS社)

sBOXの後継機種にあたるものかな?ロボット制御が対象なことが明確.使用経験はなし.

https://www.mttis.co.jp/items/model_base_design/robin/

よさそうな点

  • 安価.扱える信号数および機能のわりに価格が抑えられている.かなり頑張っていると思う.
  • ターゲットが明確.カウンタ6ch,PWM12chということでロボットアームの制御をかなり意識しているのかなという印象.
  • c++でも使える.

採用にいたらなかった点

  • CAN信号やEtherCAT通信が使えない.今時のロボットアーム制御を対象にするならこのどちらかは対応していてほしかった.
  • 入出力の組み合わせが使いにくい.今どきカウンタ6chを使う用途あるのかな?実験でよく使う倒立振子ならせいぜい1~2chあれば十分かと.それならCAN信号に割り振るか,もっとDI/DOを増やしてもらえれば選択肢としてあがってくると思われる.

特定のデバイスではないが,気軽にリアルタイム制御ができる方法.
参考のブログもあり,プロトタイプの制御開発としては有力.かなり使用感はいい.
UDP通信も使えるので,UDPに対応した機器も操作できる(例:Contec F&eIT).使用経験あり.

https://jp.mathworks.com/products/simulink-desktop-real-time.html

https://blogs.mathworks.com/japan-community/2020/04/16/simulink-desktop-real-time/?from=jp

いい点

  • PCIeボードの場合は機械制御レベル(1kHz)程度であれば十分なリアルタイム性がでる.
  • 比較的安価に構築.Simulink Realtime DesktopとPCIeボードの価格で始められる.PCIeボードは必要に応じて数万円~の値段で購入できる.

うーんな点

  • 使える信号が基本アナログがデジタル,カウンタであり,アブソリュートエンコーダなどの信号を扱うのが難しい.一応UDPやパケット通信,CANは使えるみたいなのでなんとかなりそうではあるが...
  • デスクトップや周辺のケーブルを含めるとそこそこ値段かかる.ほかの装置でも同様なのだが,安価で構成できることに期待すると意外と値段がかかってしまう場合もあるので注意が必要.

ArduinoやSTM,ESP32などのマイコン類

一番気軽に使える手法といってもいい.事例も多数あり,初手では十分な採用候補になる.使用経験あり.

例:
https://jp.mathworks.com/hardware-support/stm32.html

今年のアドベントカレンダーでもCarter先生がM5Stackでの事例を書いておられますね.

https://qiita.com/Carter/items/e30cbb1b16d5c5be5d30

いい点

  • とにかく手軽.数千円から始められる.学習用としても簡易的な実験用としても使える.
  • こわしてもいいという安心感.安いので.
  • 事例が多数.調べればいろいろやり方がでてくるのはありがたい.

うーんな点

気軽に使えるが故の課題が...

  • 演算能力,リアルタイム性への不安.すこし複雑な処理や時刻同期を気にしだすと不安事項が山積する.そもそも本格的用途には別の手法を検討したほうが良い.
  • DACの変換能力が小さかったり分解能が不足したり.値段なりなので仕方ない.
  • 保守性が悪い.気軽に使える分,配線を試行錯誤しすぎてすぐスパゲッティになる.どうしてもなってしまう.線も固定されてないのでふとした時に抜けたら悲惨...年度を超えたらもはや触れる人がいなくなる...
  • 壊れやすい.気軽に配線変更できるのでついつい電源いれたまま入れ替えてしまいますね.大抵ショートして壊れます.注意しても人間ついついやってしまいます.

結局なにがいいのか

初めに触るのであれば,arduinoなどのマイコン類で味見するのがいいでしょう.

本格的な制御や計測をする場合には,著者はSpeedgoatの本体とEtherCATのリモートターミナルを組み合わせて使ってます.
これにより,Simulinkとのシームレスな連携と,EtherCATターミナルの豊富な入出力の選択肢という両方の利点を取り入れることができます.
またSpeedgoatを別のEtherCATマスタやPLCに入れ替えれば,そのほかの配線や装置はそのままでc++などでの制御も可能となるため現状では気に入って使っている構成です.

おわりに

本記事では実機実験のための装置について語ってきました.
半分は将来の自分にむけたメモですが,同じような調査をしたことある方はたくさんいると思われるのでなにかの参考になれば幸いです.
また,ほかにもいい方法があれば共有していただきたいです!!!

Discussion