ステートフローでen​,du:interp​1(A,B,C)をス​テート1に入力時、条​件を超えた時の値を一​定出力し続ける出力し​続ける方法を知りたい

1 回表示 (過去 30 日間)
Yuga Kimura
Yuga Kimura 2021 年 12 月 12 日
コメント済み: Yuga Kimura 2021 年 12 月 15 日
ステートフローでen,du:X=interp1(A,B,C)をステート1に入力時、CがC_maxを超えるという条件で,次のステート2に移るのですが、ステート2においてC_maxを越えた時のC(A)の値に対するBを出力し続ける内容にしたいのですがうまくいきません
  5 件のコメント
Yuga Kimura
Yuga Kimura 2021 年 12 月 13 日
ご丁寧にありがとうございます。
図のように行いましたが、出来ませんでした。
Uenoさまから教えていただいた図ですと、一定の力を出力することはできるのですが、
速度が最大になってからの力をかけ続けることになるので、さらに速度が上がって行きました。
一定の速度を保つためには、力を変化させ続けないといけないのですが、私はそれが出来ていません、、、、
Atsushi Ueno
Atsushi Ueno 2021 年 12 月 14 日
  • 速度と力の表による力で駆動するモード
  • 一定速度になるよう調整した力で駆動するモード
自分は当初上記のモード切替方法を質問しているのだと思いました。後者の「速度制御モードにおける制御方法を知りたい」という質問だったのですね。確かに質問文を何度も読み返すとそのようですね。

サインインしてコメントする。

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 12 月 14 日
今必要としているのは、速度の制御方法ですね。
「制御工学の基礎」を学ぶ事が近道です。難しい事はありません。最初はビッグバン制御(ON/OFF制御)から始まります。もちろんそれでは速度が安定せずガクガクしてしまいます。ではどうするか⇒現在の速度に応じた制御(比例制御、速度と力の表も同じ考え)が考えられますよね。でもそれでも速度が安定しない。ではどうするか...といった内容です。古典制御はPID制御(様々あります)に至ります。
Stateflowを使用しているのだからSimulinkも使用していますよね。
まずSimulinkで全体の処理フローを作成してみてはいかがでしょうか?例を挙げると下図のようになります。モデルも添付しましたが、パラメータを設定していないので意図した動作はしません。
  • 速度が閾値未満時:速度と力の表による力で駆動するモード
  • 速度が閾値超過時:一定速度になるよう調整した力で駆動するモード
  • PID制御器と伝達関数のパラメータはデフォルトのままで調整していません
  • PID制御器についてはリンク先を参照ください(これが回答の本質で、制御パラメータを決める事が重要です)
  • 制御対象に力を入力するとどのような速度が出るかを実装してください
  • 私はStateflowを持ってないのでSimulinkブロックのRelayを置きました
  • モード切替処理の実装はStateflowの方が向いていると思います
  • フィードバック構成の実装はSimulinkの方が向いていると思います
  1 件のコメント
Yuga Kimura
Yuga Kimura 2021 年 12 月 15 日
詳細に回答してくださりありがとうございます。 Simulinkを駆使しながら、取り組んでまいります。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSimulink Function についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!