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