バックナンバーはこちら
https://www.simulationroom999.com/blog/model-based-of-minimum-backnumber/
はじめに
前回はほぼ導入的な話で終了。
今回はもうちょっとだけ踏み込んだ話になる予定。
登場人物
博識フクロウのフクさん
![](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/指差しフクロウ.png)
まず、おおよその作業の流れを考えるか。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
何が欲しいとかある?
ある程度は用意してくれるっぽいよ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まずは
元々のラピッドコントローラで使ってるSimulinkモデルがあるなら、
丸ごと欲しいかな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
Simulinkモデルらしいんだけど、
インターフェースとかは専用の作りになっててそのままじゃ移植できないようなこと言ってたよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そのままじゃ無理だけど、
主要部分だけうまく抜き取って再利用したいだけ。
念のため、Simulinkモデル単体で動作確認はするけどね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
じゃー、手配してもらうよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
あとはネットワークMILSの回で話した流れと一緒かな。
絵で描くとこんなイメージ。
![MicroAutoBoxⅡ、元々これで動作していた、Simulink、振る舞いを精査、CANoe、VN1630A、CAN1、CAN2、ECU](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/02_全体像-1024x468.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
あれ?
ラピッドコントローラはMicroAutoBoxって知ってたの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
いんや。
でも業界的に選択肢が限られるし、
普通はdSPCASE社のMicroAutoBox使うと思うよ。
というかMicroAutoBoxで実現できてるだったら、
下手なことしないでMicroAutoBoxで運用すればいいのに。
![](https://www.dspace.com/_clickr/cfml/index.cfm?src=../../../../../../files/jpg20/microautobox1.jpg&width=1500)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
まぁ費用対効果の兼ね合いでいろいろあるんじゃない?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
おー、
まさか太郎くんの口から
「費用対効果」
なんて単語がでるなんて!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」11アップ.png)
バカにしてるのか?!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
一応、褒めてるし感心もしたよ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(うーん、釈然としない。しかも「一応」とか言ってるし)
Simulinkモデルの確認
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
一応、
MicroAutoBoxで使用していたSimulinkモデルをもらってきたよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
うーん、
入出力から追ってくと、ここら辺が主要ロジックかな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
おー。もう特定したの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
うん。
たぶん合ってる。
どうやら主要ロジックはMATLAB Functionで実現してるっぽいな。
MATLAB Function ブロックを使用すると、使用する MATLAB関数を Simulinkモデルで作成できます。作成した MATLAB 関数は、シミュレーションのために実行されて、Simulink Coderターゲット用のコードを生成します。
MathWorksウェブサイトより
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
MATLAB Function?
どういったもの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
Simulink上でMATLAB用スクリプト実行するためのブロック。
以前、S-Funcionってブロックを使ったと思うんだけど、
あれの親戚か兄弟的なブロックだね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
S-FuncionはCコードをMEXというライブラリにしてSimulinkブロックにしたものだっけ?
それのMATLABスクリプト版ってことだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
MATLAB Functionの場合はMEXにはしないけどね。
シフトのようにスイッチ的なものは積分、微分のような処理が入らない場合分け的な処理になるんで、
それをMATLABスクリプトで表現したのだろう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
あー、
確かにSimulinkで場合分けしようとすると、
スイッチブロックとかif-actionブロックとかでむしろ読みにくくなることあるよね。
だったら、もうスクリプトの方が良いじゃん!って思ったことはあるよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
あとはStateFlowを使う場合もあるけど、
ここでは特に追及しないでおこう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
で、中の振る舞いとかは追えそう?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
うーん。
・・・。
・・・。
・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
!!?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
ふむ。
今回はあえて中は見ない。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
そんなカオスなコードだったの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
(うん)
い、いや。意図的にブラックボックスとしてやってみるのも大事かなって。(震え声)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
(これは追及しない方が吉な感じだな)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
とりあえず、
Simulinkモデルの方はうまく抜き出しておくから、
次回に振る舞いを確認かな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者a」19アップ.png)
(フクさん・・・ガンバ。)
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 正直言うとまずはMicroAutoBox使った方が良い。
- すでに精度や性能の見積が出来ているのであれば、費用対効果を意識しだしても良い。
- プログラマブルな振る舞いの場合、MATLAB Functionブロックを使用した方が楽な場合がある。
- 可能であれば、StateFlowの利用も検討しておくと状態の見える化が出来て吉。
バックナンバーはこちら
コメント