ブロックを積みながら(196) Scilab/Xcos、Xcosデモ、scifuncブロック

Joseph Halfmoon

前回はSigbuilder(信号生成器)のデモを動かして、ちっとはSigbuilderが分かったような気になりました。今回はScifuncブロックです。Xcosの関数ブロックをScilabの言語表記で記述できるブロックなのですが、イベントの発出/受信も可能。どこでどうなっているんだかサッパリっす。情報なさすぎ。

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

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

    Scilab 2024.0.0

今回動かしてみるデモ

今回動かしてみるデモは、デモ選択ウインドウの以下から選べる「Scilabブロック」デモです。selectScifunc

「Scilabブロック」とは書いてありますが、ブロック名称で言えば

scifunc_block_m

です。ブロックに入力されたデータをScilabの言語記述で処理して、出力する「関数」ブロックです。言語記述なので、大概のことは何でも記述できる筈。何でもお任せ? でもね、Helpファイルみてもあまり詳しいことは載ってません。詳しくは

For more information see Scicos reference manual.

というような記述あるのですが、果たしてどのマニュアルであるのかトンと分からず。まあ、分からない原因は上記のデモ画面で開くフローを見ると分かります。scifuncFlowEC

ブロックに入力があれば良いのだけれど、今回は入力ポートが無し。なにか自分の中でイベントを発生し、それを自分で受け止めて、出力を生成しているみたい。そして、自らの関数は y1 = z であると。なんじゃらほい?

実際に上記のデモを動かすと以下のようなグラフが生成されます。ランダム?funcResult

関数定義はどこに書くの?

ブロックのプロパティを開けば、関数定義が書かれてるのでないの?というところで開いたのが以下です。blockParams

ここ見ても、どこにも y1 = z に相当する記述はありませぬ。むむ。。。

一方、赤丸したイベントポートのところ、Input、Outputとも1と書かれてます。これでイベントポートがブロック上下に出現するわけか。

プロパティ画面には「外形」を指定する項目はありますが、肝心の関数記述、あるいはイベント到着時のアクション、イベントを発するタイミングなどを記述するところがありませぬ。どしたら良いの?

その老人の戸惑いは、OKボタンを押してみたらば解消。defFunction

なんだOKボタンを押した先に関数定義のためのウインドウが出てくるじゃん。なお、上の入力欄は1行しか見えてませんが、複数行の入力可能っす。

関数記述はどうするの?

関数への入力は、スカラーであれば変数名 u1、ベクトル入力であれば u1、u2、…という具合になるようです。

一方、出力は、スカラーであれば変数名 y1、ベクトルであれば y1、y2、…という感じみたい。

まあ素直な入出力だけであればこれでOK。

しかし、上の画面をみると以下のような変数も定義されているみたい。

    • t
    • z
    • n_evi
    • rpar

こいつら何なのか?だいたい、今回は y1=z ということで z を出力しているみたいだし。。。

次々と現れるウインドウども

とりあえず関数定義のウインドウでOKを押すと現れるのが以下です。z

zを「更新」するための式を書きこむところみたいです。zは discrete stateと呼ばれてるものみたいですが、イベント到来時に上記の式を使って更新されるものであるようです。上記を解釈すればイベント到来の度に符号が引っくり返るということみたい。

さてさらにOKを押すと、こんな感じ。t_evo

 

 

トートツにt_evoという変数が登場しましたが、この変数こそは、イベント出力時刻を計算するものみたいです。つまり上記では t(これはシミュレーション時刻を示す時間変数ということで多分いい?)に対して、0から5の間の乱数の2乗だけ先の時刻を定義しているみたい。

その後も別なウインドウが現れますが、n_evi、rparについては記載なく不明。どこかに説明ないのか?

とりあえずイベント発生時刻に乱数が含まれないように以下のように変更してみました。t_evoU

すると、グラフはこんな感じ。t_evo_z

ちゃんと25毎に値が更新されとるね。まあ、scifuncブロックもなんとかなりそうか?どうなんだ?

ブロックを積みながら(195) Scilab/Xcos、Xcosデモ、信号生成器 へ戻る