シミュレーション中にSimscape Multibodyの​ジョイントブロックの​設定値を変更したい。

お世話になっております。
現在、Simscape Multibodyを使ったモデル化に取り組んでいます。
具体的には、楽器の弦が張力により固有値が変わるように、ばね乗数が一定に定まらず、なんらかの式で表現される様なばね乗数を実装できないかと考えています。
(ジョイントで提議するパラメータをシミュレーション中に変更したい)
Matlab Functionブロックを用いて、ワークスペース変数やモデル変数を変更すればなんとかなるかとも思ったのですが、思ったように計算できていないのが実状です。
他になにか良い方法がありましたらご教示下さい。
よろしくお願いいたします。

 Réponse acceptée

Toshinobu Shintai
Toshinobu Shintai le 3 Jan 2024

0 votes

「Translational Multibody Interface」「Rotational Multibody Interface」などを使ってみてはいかがでしょうか。以下リンク先の例題にありますように、併進、回転運動ドメインと繋ぐことができ、そちらでばね定数などを可変にすることができます。
可変ばねブロックは、Simscape Drivelineになりますが、以下にあります。

5 commentaires

Ryo
Ryo le 3 Jan 2024
ありがとうございます。
並進、回転運動ドメインを使用した場合、ばね乗数をパラメータ化して可変にした場合、シミュレーション実行中にパラメータの値を変更する方法はありますか?
ばね乗数を可変にしようと思った場合、Variable Translational Springを使ってシミュレーション前に設定していた2つの値をスイッチングさせることしかできないのでしょうか...
Toshinobu Shintai
Toshinobu Shintai le 4 Jan 2024
以下の例題モデルにありますように、「Variable Translational Spring」ブロックはKポートから信号を受け取ることができ、その信号をシミュレーション実行中に変えることで、ばね定数を自由に変えることができます。
Ryo
Ryo le 4 Jan 2024
Modifié(e) : Ryo le 4 Jan 2024
ありがとうございます。
私の認識が間違っていました。
確かにKを入力できるようになっているのですね。
追加で申し訳ございません。
なんとかtoolboxを使用しない方法はございませんでしょうか?
他のブロックでも今回と同じようにパラメータを変更したいという場合がままありまして、、、
なんとかSimulinkの機能を使って同じようなコトはできませんでしょうか。
もしあればご教示いただけますと幸いです。
Toshinobu Shintai
Toshinobu Shintai le 4 Jan 2024
「Simscape」の基本機能として、カスタムブロックを作成することができます。そちらを用いれば、少なくとも「Simscape Driveline」を用いなくてもよくなりますが、いかがでしょうか。
以下の投稿画像にて、その手順が紹介されています。
通常の「Translational Spring」のソースコードをコピーして改変し、ばね定数を可変にしたカスタムブロックを作成することができます。
Ryo
Ryo le 8 Jan 2024
なるほど、カスタムブロックを作成するという方法もあるんですね。
現在、実装したいブロックがカスタムできないものだったのですが、今後他の用途で必要になった場合葉この方法を採用したいと思います。
ありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur シミュレーションと解析 dans Centre d'aide et File Exchange

Produits

Version

R2022b

Community Treasure Hunt

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

Start Hunting!