【上流検証】最小構成のモデルベース開発事例 その16【SILS】

事例

バックナンバーはこちら

スポンサーリンク

はじめに

前回、ACG(AutoCodeGenerator:自動コード生成)を実施し、そのコードを委託先へサンプルコードという位置づけで送付。
そろそろ成果物として上がってくるが・・・。

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

ACGを元にした成果物

太郎くん
太郎くん

一応、PIDとフィルタのCコードが仕上がったみたいだよ。

フクさん
フクさん

結構早かったね。

太郎くん
太郎くん

でも、

本当にこれが良いか僕も委託先の方々も判断が付かなくてちょっと困ってるんだよね。

フクさん
フクさん

まぁ、そうだろうね。
というよりも、

そこに疑問を持てることは良いことだよ。

太郎くん
太郎くん

おー。なんか普通に褒められた!

太郎くん
太郎くん

で、

なんか策があるようなこと言ってたけど。

フクさん
フクさん

うん。
SimulinkのS-Functionという機能を利用したSILS(Software In the Loop System)をやってみようと思う。

太郎くん
太郎くん

S-Function?

フクさん
フクさん

説明をMathworks社Webサイトから抜粋してきた。

S-Function は MATLAB、C、C++ または Fortran で記述された Simulink ブロックをコンピューター言語で記述したものです。

C、C++、および Fortran S-Function は、mex ユーティリティを使用して MEX ファイルとしてコンパイルされます。

Mathworks社Webサイトより抜粋
太郎くん
太郎くん

????

フクさん
フクさん

簡単に言うと、Cコードの関数をSimulinkのブロックとして配置できるってイメージ。
絵で描くとこんなん。

フクさん
フクさん

Simulinkブロックの中に

S-Function Builderってのがあるんで、
これを使うと簡単にできるよ。

太郎くん
太郎くん

おー。
ソースコードとヘッダファイルを指定してあげれば良い感じだね。

フクさん
フクさん

ちゃんとコンパイルが通れば、

Simulinkのブロックとして動作する。

PIDをS-Function

フクさん
フクさん

S-Functionができところでブロックを差し替える。

フクさん
フクさん

そして、シミュレーションしてみる。

太郎くん
太郎くん

おー。バッチリなんじゃない?

フクさん
フクさん

まぁ、

精査は必要だとは思うが、

とりあえずはOKってところだね。

シグマフィルタのS-Function

フクさん
フクさん

次はシグマフィルタだね。
こっちは、元のSimulinkモデルと比較できるよう重ね合わせを想定しておこう。

フクさん
フクさん

そして結果。

太郎くん
太郎くん

こっちもバッチリだね。

フクさん
フクさん

特性も実際の出力結果も同一だし、

大丈夫と言えるだろう。

太郎くん
太郎くん

手間とかは大してかかってないけど、

なんかすごいことしたような気分になる。

フクさん
フクさん

実際すごいことだと思うよ。
これをモデルベース開発の概念無しでやろうと思ったら、

毎回実車で確認することになるから、結構時間が掛かるし、

場合によっては危険なことにもなるかもしれない。

太郎くん
太郎くん

確かにそうだね。
モデルベース開発ってのは、

楽をするための物なんだね。

フクさん
フクさん

その発想はとても良い。
「モデルベース開発はすごいもの」というよりも、

いままで大変だったものが楽になるもの」と捉えた方が現実に即していると思うよ。

太郎くん
太郎くん

うーん。

いろいろと目から鱗だった。

まとめ

フクさん
フクさん

まとめだよ。

  • CコードをS-Function化することでSimuklinkブロックとして扱えるようになる。
    • MILSの一部を差し替えても同様の動きになるかを確認できる。
    • 元のSimulinkモデルと同一の入力にして出力を比較することで一致性確認ができる。

バックナンバーはこちら

コメント

タイトルとURLをコピーしました