私はMatlab 7を使用していますが、特定の時間「1」にレイズし、その後「0」にフォールするモノフロップの作成に問題があります。Matlab/Simulink 7 でこれを行うにはどうすればよいですか? 私は他のバージョンを持っていないので、新しいバージョンの「単安定」ブロックを使用できません。
何か案は?
こんにちは、ポエシュクロン
これを行うには、所定の時間にパルス(つまり「モノフロップ」)を発生させるかどうか、または別の信号(立ち上がりエッジなど)に応答して発生させるかどうかに応じて、いくつかの方法があります。
一度に0から1にステップし、時間が経過しtOnset
た後に0に戻る単一のパルスを作成する場合は、 Stepブロック、Transport Delayブロック、およびSumブロックを使用してこれを行うことができます。レイアウトは次のようになります。tDur
StepブロックのSteptimeをにtOnset
設定し、Transport DelayブロックのTimedelayをにtDur
設定してから、元の信号から遅延信号を減算します。
これはもう少し複雑になります。2つのDetectIncreaseブロック、Relayブロック、Transport Delayブロック、Gainブロック、およびSumブロックが必要になります。レイアウトは次のようになります。
入力信号が1または0のいずれかであるとすると、Relayブロックのスイッチオンポイントを0.5に設定し、スイッチオフポイントを-0.5に設定することにより、最初のDetectIncreaseブロックは入力が0から1にステップするときに1を出力します。、これにより、リレーにヒステリシスが生じ、立ち上がりエッジが検出されたときに発生する短いパルスの後、出力が「オン」状態(つまり、出力1)で持続します。
指定された時間の後にRelayブロックを「オフ」状態(つまり、出力0)に戻すには、TransportDelayブロックの時間遅延tDur
をに設定します。フィードバックループのDetectIncreaseブロックは、遅延信号が0から1にステップするときに1を出力し、この出力は、GainブロックのGainを2に設定することによってスケーリングされます。tDur
入力信号から差し引くと、このゲインにより、正の入力(0または1)に関係なく、Sumブロックからの出力を-0.5未満に引き下げることができるため、Relayブロックのスイッチオフポイントに確実に到達します。遅延信号に立ち上がりエッジがあるとき(つまり、tDur
経過した後)、その出力はオフになります。この結果の1つは、最初の立ち上がりエッジの後および時間中にtDur
モデル入力で発生する追加の立ち上がりエッジが無視されることです。モデルからの出力が0に戻ると、モデル入力の次の立ち上がりエッジが別のパルスをトリガーします。