ステートフローでen,du:interp1(A,B,C)をステート1に入力時、条件を超えた時の値を一定出力し続ける出力し続ける方法を知りたい
1 回表示 (過去 30 日間)
古いコメントを表示
ステートフローでen,du:X=interp1(A,B,C)をステート1に入力時、CがC_maxを超えるという条件で,次のステート2に移るのですが、ステート2においてC_maxを越えた時のC(A)の値に対するBを出力し続ける内容にしたいのですがうまくいきません
5 件のコメント
Atsushi Ueno
2021 年 12 月 14 日
- 速度と力の表による力で駆動するモード
- 一定速度になるよう調整した力で駆動するモード
自分は当初上記のモード切替方法を質問しているのだと思いました。後者の「速度制御モードにおける制御方法を知りたい」という質問だったのですね。確かに質問文を何度も読み返すとそのようですね。
採用された回答
Atsushi Ueno
2021 年 12 月 14 日
今必要としているのは、速度の制御方法ですね。
「制御工学の基礎」を学ぶ事が近道です。難しい事はありません。最初はビッグバン制御(ON/OFF制御)から始まります。もちろんそれでは速度が安定せずガクガクしてしまいます。ではどうするか⇒現在の速度に応じた制御(比例制御、速度と力の表も同じ考え)が考えられますよね。でもそれでも速度が安定しない。ではどうするか...といった内容です。古典制御はPID制御(様々あります)に至ります。
Stateflowを使用しているのだからSimulinkも使用していますよね。
まずSimulinkで全体の処理フローを作成してみてはいかがでしょうか?例を挙げると下図のようになります。モデルも添付しましたが、パラメータを設定していないので意図した動作はしません。
- 速度が閾値未満時:速度と力の表による力で駆動するモード
- 速度が閾値超過時:一定速度になるよう調整した力で駆動するモード
- PID制御器と伝達関数のパラメータはデフォルトのままで調整していません
- PID制御器についてはリンク先を参照ください(これが回答の本質で、制御パラメータを決める事が重要です)
- 制御対象に力を入力するとどのような速度が出るかを実装してください
- 私はStateflowを持ってないのでSimulinkブロックのRelayを置きました
- モード切替処理の実装はStateflowの方が向いていると思います
- フィードバック構成の実装はSimulinkの方が向いていると思います
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Simulink Function についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!