MBDプロセス研修
Part1:MBD概論
Part2:MATLAB/ Simulink の基本操作
part2の内容とは少し離れるのですが、mファイルとmatファイルの違いを教えていただきたいです。
具体的には、できることの違いとどういった場面で使用するのかが知りたいです。

Simulinkのシミュレーション作成でsin関数が出てきません。(バージョン:2016b)
下記に示す「Simulink>Math Operations>Trigonometric Function」ブロックを用いると動画と同じ波形が得られます。

少し細かい質問かもしれません。
ファイル名が同じ時の実行エラーですが、スクリプト側15行目の呼び出しファイル名とファイルパネルで変更したファイル名が一致していませんでした。
これは、スクリプト側に記載したファイル名がフォルダに存在しないことによる参照エラーよりもMATLAB/Simulinkのファイル名が同じことによるエラーの方が優先的されているのでしょうか。
ご質問頂いた通り,「MATLAB/Simulinkのファイル名が同じことによるエラー」が優先されます。理由としては,①mファイルを実行,②1行目から順番に実行 となるためです。ご質問頂いた場合は①の段階でエラーとなります。
Part3:プラントモデリングの基礎
タンクでは流量を入力として扱っているのに,RC回路では電圧を入力として扱うのはなぜでしょうか。電流を入力にすることはできないのでしょうか。
結論から申し上げますと,入力は「外部からどの量を強制するか」によって決まるものであり,電流を入力とするモデルも記述できます。

因果モデルと非因果モデルは何が違うのでしょうか。

因果モデリングツールではできなくて,非因果モデリングツールでできることは何ですか?

例題4として車輪の回転モデルが出てきたのでお聞きします。将来的には,自転車のふらつきのような挙動を3Dモデルで解析してみたいと考えています。このような単純な回転モデルから3Dマルチボディモデルへ発展させる場合,どのような簡略モデルを段階的に構築しながら理解を深めていくのが一般的でしょうか。3Dシミュレーションに至るまでの一般的なロードマップも教えてください。
結論から申し上げますと,3Dモデルにいきなり挑戦する必要はありません。「いま見たい現象に必要な分だけ,モデルを少しずつ育てていく」のが一般的な進め方です。
例題4の車輪モデルは,「車輪がトルクを受けるとどう回り出し,どう落ち着くか」だけを見る,いちばん基本のモデルです。

自転車のふらつきは,これに「前に進む」「曲がる」「左右に傾く」「ハンドルを切る」「タイヤが路面をつかむ」といった動き
が重なって生じる現象です。一度に全部を扱うと複雑すぎるため,次のように動きを1つずつ足していきます。
①まず例題4のように,車輪が回る様子だけを見ます。
②次に「回る」と「進む」をつなぎます。タイヤが滑らなければ,車輪の回転から自転車の速さが次の簡単な関係で決まります。

③上から見た動き(曲がる)を加えます。ハンドルを切ると進む向きがどう変わるか,を平面の中で扱います。
④左右の傾き(ロール)を加えます。ここまで来ると,「傾く→ハンドルで立て直す→速く走るほど安定する」という,自
転車らしいふらつきが見え始めます。
⑤車体・前輪・後輪・乗る人を別々の部品として組み合わせます(簡略マルチボディモデル)。部品どうしのつなぎ方と,タイ
ヤと路面の接し方がポイントになります。
⑥最後にSimscape Multibody などで3D化し,接触・重力・タイヤ特性を加えて仕上げます。
大切なのは,各段階で「何が見たいのか」をはっきりさせ,それに必要な要素だけを足していくことです。例題4の車輪モデ
ルは,この道のりの確かな第一歩と位置づけていただければと思います。
Part4:DCモータ制御システムのMBD
ADCのモデリングにて「floor」のブロックを使用していますが,検索をかけても見当たりません。バージョ
ンは2016aですが,別の手段はありますか?
テキストで「floor」と表示されているブロックは,実際には「RoundingFunction」(Simulink/MathOperations)
です。Rounding Function ブロックはアイコンに選択した関数名が表示されるため,2016a では「floor」と
いう名前で検索しても見つかりません。ただし検索の挙動はバージョンによって異なり,R2025bなど新し
いバージョンでは「floor」でもヒットする場合があります。
下図のように,Rounding Function ブロックを呼び出し,パラメーターの「関数」でfloor を選択すること
でご利用いただけます。2016a でも同様にご利用いただけます。

バージョン2016aを使用しているんですが,HILSの準備の中で「ハードウェアのタブ」が増えるとのこと
ですが,テキストとバージョン画面が違いすぎて理解できません。どこにあるのか教えてください。
「ハードウェアのタブ」はR2019b以降で追加された画面(ツールストリップ)で,2016aにはこのタブ自体
がありません。そのため,2016aでは下記の通り「エクスターナル」の選択で同じ操作を行います。
2016a:赤点線枠の箇所 →「エクスターナル」を選択→「実行」
2023a:(1)「ハードウェア」タブ → 赤枠の「監視と調整」をクリック

PID制御の実装の中で,RateTransitionブロックで定数目標値のサンプル時間を揃えるくだりがありました。
これについて質問です。
1 連続的に変化する値のサンプルが粗いと確かに計算結果がおかしくなったりしそうですが,定数であ
れば問題ないように思います。サンプル時間の管理はどこまで力を入れないといけないのでしょうか。
2 今回のケースに限らずですが,サンプル時間を揃えなかった場合に計算に及ぶ可能性のある悪影響の
例をご教示お願いします。
【1】
一定の信号であっても,Simulinkでは予期せぬエラーを防ぐという意味でも,サンプリング時間を統一す
ることを推奨いたします。また,Simulink作成当初は「一定値信号」を想定していたとしても,開発が進ん
だ場合に「連続的に変化する信号」を取り扱う可能性もあるため,サンプリング時間の統一を推奨いたし
ます。
【2】
サンプル時間を揃えなかった場合の悪影響は以下が考えられます。
・Simulinkでの警告やエラーが発生します。
・偏差e(t) =r(t)−y(t) の計算時に r(t) と y(t) のサンプル時刻がずれると,本来は同時刻の値どうしを引
き算すべきところ,「更新前の値」と「更新後の値」が引き算されてしまいます。その結果,一瞬だけ偏
差が本来より大きくなり,制御出力にスパイク状の乱れが生じることがあります。
・MILSでの検証結果と実機(HILS・実機検証)の挙動に差異が生じます。
・低速な信号を高速なタスクへ渡す際に暗黙のレート変換が入ると,既定設定(決定論的データ転送)では
低速側1周期分の遅れが生じます。この遅れが,応答の遅れやオーバーシュートの増加につながることが
あります。