2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dSPACEAdvent Calendar 2024

Day 2

dSPACEとsimulinkとの連動

Last updated at Posted at 2024-12-02

概要

本記事では、dSPACE ControlDesk用のSimulinkセッティングについて解説します.
MATLABのダウンロード,Simulinkのsdfファイルをビルドするところまでが対象です.
前回のControlDeskインストール記事の続きです.

手順

1. MATLABインストール

使用するdSPACEのリリースにあったバージョンのMATLAB[1][2]をインストールしてください.
Release 2019-Bの場合はMATLAB R2018a ~ R2019bまでが互換性があります.
[1] dSPACE, "RCP and HIL Software Release 2019-B", https://www.dspace.com/ja/jpn/home/support/supvers/supverssfc/rls2019b.cfm
[2] dSPACE, "Information about dSPACE Releases", https://www.dspace.com/ja/jpn/home/support/supvers/rlsinfo.cfm#179_37496

インストール時に必要な製品は,以下の3つです.

  • MATLAB
  • Simulink
  • Simulink Coder

2. MATLAB起動

1. MATLAB初回起動
MATLABを初回起動すると以下の画面が出現するので,MicroLabBoxの場合ds1202を選択してください.
他のdSPACEボードを使用しない場合はチェックボックスにチェックを入れると次のMATLAB起動からポップアップしなくなります.

※MATLABを起動してもdSPACE関連の情報が出てこない場合、以下を疑いましょう.

  • そもそも関連ソフトウェアがインストールされていない
  • dSPACE Installation ManagerでMATLABとの紐づけがされていない

[3] dSPACE, "既存のdSPACEインストレーションセットでアクティブなMATLABインストレーションを変更する"
https://www.dspace.com/shared/support/faqpdf/faq266jp.pdf

11_simulink1.png

**2. 注意事項の確認
その後,次のウィンドウがポップアップします.
画面下までスクロールしてAcceptボタンを押してください.
12_simulink2.png
さらに,次のウィンドウもポップアップしますがOKで大丈夫です.

するとMATLABのコマンドウィンドウは以下のようなウィンドウになります.
※なお,Simulink CoderをMATLABインストール時にチェック入れ忘れたので,本画像ではWARNINGが出ています.(アドオンから後でインストールしました)
13_simulink3_2.png
↓問題ない場合
27_simulink_check_path.png

3. Simulink

1. Simulink起動
ホームタブ -> Simulinkを押すと以下の画面が出現するので,マイテンプレートのRTI1202を選択してください.
※テンプレートの項目がないとき用の方法が2つほどあるので後日綴ります.
14_simulink4.png

2. ライブラリ確認
一度Simulinkモデルファイル(.slx)を保存してください.
ビルド後の生成ファイル名が大文字が小文字になるので,ファイル名は小文字と記号だけにしたほうがいいです.

新規フォルダ内を作成して保存するのがおすすめです.
Simulink起動後シミュレーションタブ -> ライブラリブラウザーをクリック.
すると下の方にdSPACEと名のついた項目があります.
ここから探していくのは大変なので,検索欄でDACやらADCやらencoder,digitalやらやら打てばそれっぽいブロックがヒットします.
15_simulink_browser.png

2. ADCブロックの追加
ライブラリブラウザでDACと検索すると以下のような画面になります.
主に使うのはADC_CLASS1_BL1というブロックです.これはMicroLabBoxのトップパネルのAI1 ch1~ch24までのポートに対応しています.
ADC_CLASS2_BL1は対応しているサンプリング周波数などが違うAI2 ch1~ch8を使う場合に対応しています.
22_simulink_browser3.png
ドラッグ&ドロップしてモデルに追加後,ADCブロックをダブルクリックすると以下のようなチャンネルを選択できるウィンドウがポップアップします.対応するチャンネルを選択してOKで閉じてください.
23_simulink_adc_property.png

3. DACブロックの追加
ADCブロックと同様にライブラリブラウザでDACと検索すると以下のような画面になります.
DACに関しては1種類のみでDAC_CLASS1_BL1というブロックを使います.
21_simulink_browser2.png
DACブロックはチャンネル番号の他にチャンネルの個数を選択できる項目があります.
基本的には1のままで問題ありません.
24_simulink_dac_property.png
1つのブロック内にDACを複数ポートまとめることができるので,
例えば,3自由度のロボットの3つのアクチュエータを制御する場合などはこのように省スペース化できます.
25_simulink_DAC.png

4. モデル設定
"モデル化"タブ -> "モデル設定"(歯車マーク)をクリックし,
左の項目のソルバー -> ソルバーの詳細を展開するとこのような画面になります.
この固定ステップサイズというのがサンプリング時間です.
デフォルトでは0.001[s]つまり1000[Hz]で設定されているので必要に応じて変更してください.
26_simulink_configure.png

4. 信号の接続
一度以下のようにDAC/ADCブロックに信号を接続してください.
ゲインの10倍,1/10倍はdSPACEのプラットフォーム内では電圧が1/10オーダーで扱われるので,それに対応させてために必須のブロックです.
22_simulink_forgot.png

5. モデルのビルド
モデルが完成したら,Ctrl+Bキーでビルドを行います.

しかし,ここでよくやるミスが3つあります.

  • MATLABの作業パスの変更し忘れ
    初回はMATLABを起動しテンプレートからモデルを生成しているので,MATLAB.exeのあるフォルダが作業パスになっています.
    そのためパスを保存したフォルダに変更してからビルドしてください.

  • dSPACEプラットフォームの電源を入れ忘れ
    LANケーブルで接続し,電源を入れた後少し待ってからビルドしてください.

  • ControlDeskをGo Online状態のままビルド
    Go Offlineでオフライン状態にしてからビルドしましょう.

ビルドを開始すると画面左下に"ビルド中"という表記が出現し,下部中央にある"診断の表示"をクリックするとビルド状況が確認できます.
28_simulink_build.png

何もエラーが出現せずに終わればビルド成功なのでsimulinkの作業は完了です.
slxのあるフォルダに以下のようなファイルが生成されます.
29_simulink_output_files.png

※エラー集も後日まとめます.

注意点

  • ハードウェアの接続確認

    • dSPACEハードウェアとPC、その他の周辺機器が正しく接続されていることを事前に確認してください.
  • ソフトウェアバージョンの整合性

    • MATLAB、Simulink、dSPACEソフトウェア(ControlDeskなど)のバージョンが互換性を持っていることを確認してください.
  • リアルタイム設定の確認

    • モデルのサンプリング時間やタスク設定がリアルタイム実行に適していることを確認してください.
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?