【仮想ECU】最小構成のMBD事例 第2章 その212【PID制御③】

【仮想ECU】最小構成のMBD事例 第2章 その212【PID制御③】 事例
【仮想ECU】最小構成のMBD事例 第2章 その212【PID制御③】

バックナンバーはこちら。
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もどきから使用することを想定してクラス化。
    • クラス化は目的次第で隠蔽する度合いが変化する。
      • つまり何をサボりたいかが動機になり易い。
  • エントリーポイントとして呼び出すかライブラリで呼び出すかで振る舞いを変えると便利。
    • 単体テストをする場合はエントリーポイント。

バックナンバーはこちら。

コメント

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