バックナンバーはこちら
https://www.simulationroom999.com/blog/model-based-of-minimum-backnumber/
はじめに
前回、SimulinkのS-FunctionによるSILSをやったが、
「S-Functionを作る具体的な手順ってどうなってるの?」
という質問が来たので、そこの手順を記載。
登場人物
博識フクロウのフクさん
![](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
反省
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
なんか前回、説明を端折った分の補完回になりそうだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
そーだね。
冷静に見返すと、さも当たり前のように進んでた感があったんでちょっと反省。
S-Function Builder
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
S-Functionの作り方はいろいろあるんだけど、
ここでは一番簡単なS-Function Builderを使った方法を説明するよ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
うん。
これだとほぼSimulinkのUIだけでいけそうだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まず、
Simulinkライブラリブラウザーの中のUser-Defined-Functionsを選択。
そこにS-Function Builderがあるので、
これをSimulinkエディタ(ブロック線図を編集するこころ)にドラッグ&ドロップ
![Simulinkライブラリブラウザ、User-Defined Function、S-Function Builder](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/02_Simulinkライブラリブラウザー.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
Simulinkエディタに置いたS-Function Builderをダブルクリックして、
ライブライってタブを選択。
端子設定、ビルド対象のソースコード、インクルード文が記載できる。
![S-Function Builder。入力/出力・パラメータを設定、ヘッダファイル等の指定、ビルド対象のソースコードを指定、スタティックライブラリもOKらしい。](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/03_S-FunctionBuilderライブラリ-1024x629.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
あと、出力タブのところで関数の呼び出し条件なんかも調整できる。
今回の場合だと、
フィルタ内のバッファが溜まるまではシグマの算出はしないので、
バッファの充填判定を行ったりしたね。
![S-Function Builder、各種関数コールの仕方/順番を記載](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/04_S-FunctionBuilder出力-1024x733.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
右上のビルドってボタンを押せばOK
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
以上だね。
他に入力、出力のデータ型の調整とかもできるんで、
実際に触って遊んでみると良いかもねー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
Simulinkモデルに抵抗がある人はむしろS-Functionから入るというのも良いかもしれないね。
自分が書いたコードの振る舞いが簡単に波形で見れたり、
複数のロジックの入出力を線で結び直したりするだけでも面白いよ。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- S-Function Builderの使い方の説明。
- これ以外のS-Functionの作成方法もある。
- Simulinkに抵抗ある人はS-Functionから始めても良いかもしれない。
- 出力を波形で見れる。
- 複数のロジックの入出力の簡単な繋ぎ替えができる。
バックナンバーはこちら
コメント