前回はスカラー値をまとめてベクトルの流れとしたり、ベクトルを複数のスカラー値の流れにバラシたりを練習。今回は信号の流れを「切り替える」奴らを練習してみます。手動で切り替え、データの大きさを判断して切り替え、与えられるイベントで切り替え。あると便利だけれども練習するのはメンドイです。ついでに前回の落穂ひろいもね。
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11のパソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
今回練習のダイアグラム
信号を「スイッチ」するブロックは多数あるのですが、その中で今回練習してみるのは以下の3つです。
-
- SWITCH_f 手動(パラメータ設定)で信号の流れを切り替えるもの
- SWITCH2_m データの値で信号の流れを切り替えるもの
- RELAY_f 外部イベント(タイミング)で信号の流れを切り替えるもの
上記3つくらいあったら大抵の「切り替え」は出来るんでないかと。
ついでに前回積み残しの SCALAR2VECTORブロックも練習してみます。
SCALAR2VECTOR
このブロックは前回の落穂ひろいです。流れてくるスカラー値を所定の長さのベクトルに変換してくれるもの。今回のフローの設定が以下に。
入力には矩形波が与えられるのですが、そのスカラー値を上記設定で2個ならんだベクトルにして下流に流しだします。その様子を見やすくするのに前回練習したDEMUXブロックを使って要素毎に分離、スコープで観察してみてます。こんな感じ。
この例だとありがたみが湧きませぬが、何等かの処理を行うための初期ベクトルの発生などに使えるかも。知らんけど。
SWITCH_f、スタティックな切替
設定例は以下です。2つの入力がありますが、通過させるのは「2」の方の入力になっています。
結果はこんな感じ。当然、正弦波の方が通過して、ランプ波形は「阻止」されてます。
シミュレーション時にいろいろ設定を変更したいときなどに使うと、フローそのもののトポロジーを変更しないでいろいろのケースが実行できるのではないかと。
SWITCH2_m、データの値で切り替える
次のSWITH2‗m はデータの値を判断して切り替えるブロックです。入力は3個あり、真ん中の「2」のポートがどちらのポートを通過させるか判断のもとになるデータを流し込むポートです。この条件判断により「1」が通過するか、「3」が通過するか決定されます。
上記の黄色マーカ部分に判定のスレッショルド値が記入でき、その上の欄で判定条件が指定できます。
今回の例では振幅は同じで、位相が異なる2つの正弦波を、周期5の矩形波で切り替えてます。こんな感じ。赤線で切り替わってます。
RELAY_f、外部のイベントトリガで切り替え
まさにリレーで外部のトリガ信号が到来すると対応する入力ポートを出力に接続してくれるものです。
今回は、振幅とデューティが異なる矩形波を、時刻0.1から始まって3の倍数でトリガする信号と、時刻0.5から始まって5の倍数でトリガする信号で切り替えてます。
赤の部分が振幅1の波形が通過できる範囲、そうでないところは振幅3の波形が通過です。
切替もできそうか?大丈夫か。