
素人老人がScilab/Xcosのデモを動かして学んでます。前回で制御分野のデモは一通り触ってみましたが、消化不良ギミ。今回は一歩立ち戻ってプリミティブなブロックの動作のデモを確認していきます。Sigbuilder(信号生成器)とな。信号を作る方は良いのだけれども、イベントポートにイベントが出てくるのは何時?
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
Sigbuilder、信号生成器
今回動作を確認する「信号生成器」のHelpファイルの冒頭部分が以下に。
ブロックのプロパティを開けば、本題である信号生成機能については入力欄があるので分かるのですが、お腹のところの赤い下向き3角、イベントポートにイベントが出力されるみたいなのですが、いつイベントが出てくるのか?イベント発生条件を指定するための入力欄などは見当たりません。どうするの?
さて、Sigbuilderをつかってみるデモを以下のデモ選択画面で起動できます。
上記をクリックすると開くSigbuilderのデモのフローが以下に。
左上から置かれている3個のブロックがそれぞれ異なる方法で波形を生成するSigbuilderブロックです。右の波形ウインドウで生成された波形を観察することができます。また、左下にイベントスコープがおかれているので、発生したイベントを捕捉することも可能です。
上のグラフを見ても、なんだかわからないのでフロー内部の設定を確認していきたいと思います。
フローの設定を見ていく
一番上の箱の設定は以下です。かなり細かい浮動小数点数でポイントを指定しており、Spline Method=3となってます。3であると各点を「3次スプライン補間」の中でも「ノット無(NOT-A-KNOT)」という方法で補間した値が波形として出力されるようです。
なお、周期信号か否かの設定が、n となっているので、上記の設定で1回だけ波形を生成するみたいです。
2番目の箱は、上の箱と同様に3次スプライン補間、ノット無で補間された値を出力します。大きな違いは周期信号に y となっているので、何度も繰り返し波形が出力されるようです。なお、上と大きく見栄えが異なるのは、x、yの各点の定義が整数であるためかと。
最後の箱のyベクトル設定は、sin、cos使った式で定義されてます。xベクトルは別途定義の変数。ただし、Spilie Methodは0。これはスプライン補間を行わず、x, y ベクトルで定義される点の値をそのまま「延長」していくもの。以下では周期信号にも指定されとります。
上記で参照されている x3 という変数(ベクトル)はコンテキスト設定内で定義されてます。こんな感じ。
イベント発生のタイミング
以下は、出力される信号波形に対する、イベントウインドウに捕捉されたイベントに手動にて矢印つけて対応を示したものです。
一番上のスプライン補間された単発波形の場合、信号定義の末尾のところで一発イベントが発生してます(緑の矢印。)、2番目のスプライン補間された周期波形の場合、各周期末から次の周期の冒頭のところでイベント発生(赤とピンクの矢印。)一方、3番目のスプライン補間しない「ステップ状」の波形の場合、イベントは発生していないようです。
どうも定義した波形の「繋ぎ」というか「断絶」部分でイベントが発生するみたい。ホントか?