バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はPID制御器のコードを用意した。
過去に使用したものを修正しただけだが。
10ms周期の制御としてとりあえず組み込んだ。
として、それの動作確認をするわけだが、
PyXCPで適切なテストパターンを組む必要がある。
そして、折角なのでHILSもどきにも流用したい。
登場人物
博識フクロウのフクさん
イラスト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
PID制御器の動作確認方法
AUTOSAR-XCPに埋め込んだPID制御器の動作確認はPyXCPでやるんだよね?
そうだね。
ただ、そのままPyXCPを使うのではなく、この後の
HILSもどきへの組み込みを想定して、クラス化しておきたい。
あれ?
PyXCPもクラス化されてるよね?
まぁクラス化は当然されてるが、
XCPマスターとしての目的に於いてのクラス化であって、
HILSもどきの目的に於いてのクラス化ではないな。
簡単に言うと、もう一層抽象化する層を追加したいってイメージ。
HILSもどきの目的に沿った抽象化
となると、その「HILSもどきの目的」って何?
話になるかな。
そうね。
まぁ大体以下になるかな。
- XCPのセットアップを簡単にしたい。
- 計測値を簡単に取得したい。
- RAM値変更を簡単にしたい。
とななんかどれも「簡単に」とか入ってて、サボる気まんまんな仕様だなー。
抽象化とサボりは密接な関係にはあるな。
サボりたいってことは、「そこは気にしたくない」って動機なんでね。
HILSもどきとしては変数としての取得や変更は必須だけど、
そこにXCPならではの都合は気にしたくないってことだな。
まぁ言われてみれば、そうかも。
テストコード実装方針
さっきも言ったがクラス化する。
そしてそのクラスのテストをできるように、
同一ファイル内に
if __name__ == ‘__main__’:
を定義して、単体呼び出しされた際はテストコードが走る用にする。
別スクリプトから呼び出される場合はクラスを呼び出して、
XCPを簡単に使えるライブラリと言う体にする。
if __name__ == ‘__main__’:
って、Pythonのエントリーポイントとして実行されたときのみに処理させる部分に指定する奴だったよね。
単体で呼び出す時とライブラリとして呼び出す時で振る舞いをかえるのか。
上位の振る舞いが変わるだけで使用するクラスが一緒だから、
クラス自体の動作確認もできるってことか。
そうそう。
こういう作り方は品質の積み上げができるから、結構便利。
というわけで、次回までに動作確認用のコードを仕上げて来よう。
まとめ
まとめだよ。
- PID制御器の動作確認方法としてPyXCPを使う。
- HILSもどきから使用することを想定してクラス化。
- クラス化は目的次第で隠蔽する度合いが変化する。
- つまり何をサボりたいかが動機になり易い。
- エントリーポイントとして呼び出すかライブラリで呼び出すかで振る舞いを変えると便利。
- 単体テストをする場合はエントリーポイント。
バックナンバーはこちら。
コメント