simulinkで入​力値がある値を超えた​時に、プログラムが実​行し続けるプログラム​を、作りたいです。

5 views (last 30 days)
SS
SS on 16 Oct 2021
Commented: Atsushi Ueno on 20 Oct 2021
simulinkで入力値がある値を超えた時に、プログラムが実行し続けるプログラムを、作りたいです。入力値は三角関数です。

Answers (1)

Atsushi Ueno
Atsushi Ueno on 16 Oct 2021
Edited: Atsushi Ueno on 17 Oct 2021
>simulinkで入力値がある値を超えた時に、プログラムが実行し続けるプログラムを、作りたいです。入力値は三角関数です
下記の様に解釈してモデルを作成しました。
(追記)ちょっとsin波の入力の鋸波をRepeating Sequenceブロックから自作のロジックに変更しました。理由は前者がシステム時間を基にするのでEnabled Subsystemの無効時に「時間が止まらない」為で、システム時間の代わりに自分で鋸波を作成しました。(追記:開始条件追加等複雑になった為Resettable Delayを使いました)
  • 入力値(三角波)がある値(1.9)を超えた時にsin波を出力する
  • 入力値(三角波)がある値(1.9)を超えない時sin波を停止する⇒(追記)停止しない
(さらに追記)コメントを受けてモデルと画像を差し替えました。「simulinkで入力値がある値を超えた」条件判定結果を保持(ラッチ)して、その値でEnabled Subsystemを動かせばやりたい事が実現します。
保持(ラッチ)にはDelayとSwitchを使いましたが、将来この保持状態をリセットする条件等も必要になってくるでしょう。その際にはS-R flip-flopブロックを使っても良いと思います。Model an S-R flip-flop - Simulink - MathWorks 日本
  4 Comments
Atsushi Ueno
Atsushi Ueno on 20 Oct 2021
質問内容を絵(タイミングチャートや想定するブロック図)で描いてご説明頂けませんか?

Sign in to comment.

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!