simulinkでシ​リアル通信のサーボモ​ータを動かせますか?

30 views (last 30 days)
遼 江口
遼 江口 on 30 Nov 2020
Commented: 遼 江口 on 4 Dec 2020
シリアル通信のサーボモーターをDXSHIELD付きのarduinoで動作させたいのですが、simulinkで動作させることは可能でしょうか?
可能であれば、使用するブロックや参考になるモデルなどを教えていただきたいです。
{Arduino Support from SimulinkとarduinoIOは既にインストール済みです。}

Accepted Answer

Hiroshi Miyagawa
Hiroshi Miyagawa on 1 Dec 2020
Edited: Hiroshi Miyagawa on 1 Dec 2020
Simulinkのライセンスがあれば追加費用はかかりません。
以下の手順で入手いただけます。
MATLAB - アドオン - ハードウェア サポート パッケージの入手
Arduino に搭載されているセンサ、アクチュエータ、通信インターフェースにアクセスするためのSimulinkブロックが含まれていますので、ハンドコードすることなく Arduino にご自分のロジックを実装できます。
また、以下のウェビナーもご覧ください。
  3 Comments
Hiroshi Miyagawa
Hiroshi Miyagawa on 2 Dec 2020
Edited: Hiroshi Miyagawa on 2 Dec 2020
すでにサポートパッケージをインストール済みでしたね。ご質問をよく読まずに回答してしまいました。大変失礼いたしました。
ArduinoからDXSHIELDを介してモータを動かした経験者が身近にいませんでしたので、以下「できると思います」という表現であることをご容赦頂ければ幸いです。
以下の2通りの実現方法があると思います。
  1. サポートパッケージにあるシリアル通信ブロックを使う
  2. DXLIB_ArduinoをS-Functionから使う
1.
DXSHIELDを接続しているArduinoのピン番号を確認し、シリアル通信ブロックに設定します。
パケット処理プログラムをSimulinkで記述しその結果をシリアル通信ブロックに入力します。
2.
S-Function や S-Function Builder でDXLIB_Arduinoライブラリをコールするように記述する方法もありますが、R2018b以降なら'C Caller'、R2020a以降なら'C Function'というブロックがあります。DXLIB_Arduinoライブラリの全ての関数には引数と返り値があるようですので、'C Caller'ブロックが使いやすいと思います。
C Caller ブロックについては以下のウェビナーで概要紹介していますのでご参照いただければ幸いです。
遼 江口
遼 江口 on 4 Dec 2020
実現方法をご提示いただきありがとうござます。
1つずつ確認して、試していきたいと思います!

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!