simulinkにて​、Counterブロ​ックからの出力信号を​一定時間保持する方法​はありますか?

69 visualizaciones (últimos 30 días)
Koki Hibino
Koki Hibino el 25 de Feb. de 2022
Comentada: Koki Hibino el 27 de Feb. de 2022
Matlab R2017aを使用し、simulinkにて
①PWM Generatorでデューティ比0.5、周波数500Hz(周期0.002s)のパルス波をを生成
②生成したパルス波をCounterに入力し、立ち上がりエッジが360回入力されたらHit、Counterから1を出力
というプログラムを作成しました。
実行結果として、パルス波の立ち上がりエッジが360回入力された時点でCounterからの出力は1になりましたが、この出力は0.002s経過後に再び0に戻ってしまいます。
この出力を、0.01sの間1のまま保持したいのですが、そのような動作が可能なブロックもしくは回路はありますか?
ご存じの方、ご教示いただけますと幸いです。

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 26 de Feb. de 2022
>この出力を、0.01sの間1のまま保持したいのですが、そのような動作が可能なブロックもしくは回路はありますか?
 リンク先にライブラリの投稿があります。R2017aでも動作確認しました。
「ある制約」を満たす場合は序盤の回答が直感的で分かりやすいです。言葉で書くと「入力信号とその遅延信号の差分を出力とする」です。制約とは「入力信号の周期/2[s] ≧ 遅延時間[s]」です。今の要件は0.002[s]*360=0.72[s] ≧ 0.01[s]なので問題ありません。
2番目のロジックを「Counterからの出力1を0.01sの間保持したい」要件を満たすためには下記の様にすれば良いと思います。2通り作りましたが、Transport Daleyブロックは「何秒遅延するか」を設定でき、Delayブロックは「何周期遅延するか」を設定できます。シミュレーションの連続/離散・ステップ時間の扱いにより選択できます。
  2 comentarios
Atsushi Ueno
Atsushi Ueno el 26 de Feb. de 2022
基本ブロックで説明すると:
左側は入力パルスの立上りエッジを360回数えるカウンタ、右側は0.01秒カウントするカウンタです。左側の結果でS-Rフリップフロップをセット、右側の結果でリセットすれば、目的の事が出来ます。
Koki Hibino
Koki Hibino el 27 de Feb. de 2022
ご回答ありがとうございます。 flip flop回路を使用する発想は無かったので、大変勉強になりました。 無事、目的の動作をさせることができました。 この度はありがとうございました。

Iniciar sesión para comentar.

Más respuestas (1)

Toshinobu Shintai
Toshinobu Shintai el 26 de Feb. de 2022
Stateflowを使うと簡単に実現できます。添付のモデルをご確認ください。R2017aで作成しています。
以下のような状態遷移を構築しています。ちょっと雑な作りになってしまっている点はご容赦ください。
結果は以下のようになります。
  1 comentario
Koki Hibino
Koki Hibino el 27 de Feb. de 2022
ご回答ありがとうございます。 フローチャートのように記載できるブロックが存在するのですね。勉強になります。 無事、動作させることができました。 この度はありがとうございました。

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!