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

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

 採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 10 月 16 日
編集済み: Atsushi Ueno 2021 年 10 月 17 日

0 投票

>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 件のコメント

SS
SS 2021 年 10 月 17 日
途中で信号が切れるのではなくて,信号が絶えず続くようにしたいです。
例えば,パルス波が開始するときは,sin波のmax値からスタートするけど,minになってもパルス波は続いているようなものです。
ご教授ください。
Atsushi Ueno
Atsushi Ueno 2021 年 10 月 17 日
回答を修正しました。条件判定結果を保持(ラッチ)すればやりたい事が実現します。
SS
SS 2021 年 10 月 19 日
ありがとうございます。
ステップの立ち上がりにsin波の0部分を合わせたいのですが,時間遅れを考慮したいです。
その時間遅れの検出もしくは他のやり方等あるのでしょうか?
お願い致します。
Atsushi Ueno
Atsushi Ueno 2021 年 10 月 20 日
質問内容を絵(タイミングチャートや想定するブロック図)で描いてご説明頂けませんか?

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

その他の回答 (0 件)

カテゴリ

製品

リリース

R2021b

タグ

質問済み:

SS
2021 年 10 月 16 日

コメント済み:

2021 年 10 月 20 日

Community Treasure Hunt

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

Start Hunting!