ブロックを積みながら(144) Scilab/Xcos、信号のルーティング、切り替える

Joseph Halfmoon

前回はスカラー値をまとめてベクトルの流れとしたり、ベクトルを複数のスカラー値の流れにバラシたりを練習。今回は信号の流れを「切り替える」奴らを練習してみます。手動で切り替え、データの大きさを判断して切り替え、与えられるイベントで切り替え。あると便利だけれども練習するのはメンドイです。ついでに前回の落穂ひろいもね。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはWindows 11のパソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。

Scilab 2024.0.0

今回練習のダイアグラム

信号を「スイッチ」するブロックは多数あるのですが、その中で今回練習してみるのは以下の3つです。

    1. SWITCH_f 手動(パラメータ設定)で信号の流れを切り替えるもの
    2. SWITCH2_m データの値で信号の流れを切り替えるもの
    3. RELAY_f 外部イベント(タイミング)で信号の流れを切り替えるもの

上記3つくらいあったら大抵の「切り替え」は出来るんでないかと。

ついでに前回積み残しの SCALAR2VECTORブロックも練習してみます。routing2Flow

SCALAR2VECTOR

このブロックは前回の落穂ひろいです。流れてくるスカラー値を所定の長さのベクトルに変換してくれるもの。今回のフローの設定が以下に。scalar2vectorSetting

入力には矩形波が与えられるのですが、そのスカラー値を上記設定で2個ならんだベクトルにして下流に流しだします。その様子を見やすくするのに前回練習したDEMUXブロックを使って要素毎に分離、スコープで観察してみてます。こんな感じ。scalar2vectorResults

この例だとありがたみが湧きませぬが、何等かの処理を行うための初期ベクトルの発生などに使えるかも。知らんけど。

SWITCH_f、スタティックな切替

設定例は以下です。2つの入力がありますが、通過させるのは「2」の方の入力になっています。SWITCH_f_setting

結果はこんな感じ。当然、正弦波の方が通過して、ランプ波形は「阻止」されてます。SWITCH_f_Result

シミュレーション時にいろいろ設定を変更したいときなどに使うと、フローそのもののトポロジーを変更しないでいろいろのケースが実行できるのではないかと。

SWITCH2_m、データの値で切り替える

次のSWITH2‗m はデータの値を判断して切り替えるブロックです。入力は3個あり、真ん中の「2」のポートがどちらのポートを通過させるか判断のもとになるデータを流し込むポートです。この条件判断により「1」が通過するか、「3」が通過するか決定されます。SWITCH2_m_setting

上記の黄色マーカ部分に判定のスレッショルド値が記入でき、その上の欄で判定条件が指定できます。

今回の例では振幅は同じで、位相が異なる2つの正弦波を、周期5の矩形波で切り替えてます。こんな感じ。赤線で切り替わってます。SWITCH2_m_result

RELAY_f、外部のイベントトリガで切り替え

まさにリレーで外部のトリガ信号が到来すると対応する入力ポートを出力に接続してくれるものです。RelaySetting

今回は、振幅とデューティが異なる矩形波を、時刻0.1から始まって3の倍数でトリガする信号と、時刻0.5から始まって5の倍数でトリガする信号で切り替えてます。RelayResult

赤の部分が振幅1の波形が通過できる範囲、そうでないところは振幅3の波形が通過です。

切替もできそうか?大丈夫か。

ブロックを積みながら(143) Scilab/Xcos、信号のルーティング、まとめる、バラす へ戻る

ブロックを積みながら(145) Scilab/Xcos、イベントのハンドリングその1 へ進む