事例 【XCP】最小構成のMBD事例 第2章 その220【仮想HILS③】 XCP関連の処理を追加。 基本xcp_canクラスを呼び出すだけ。 DAQ受信とSTIM送信はFMU処理が実装してあるFMU_handler内で呼び出す。 DAQ受信はFMU処理直前。 STIM送信はFMU処理直後。 これにより、仮想ECU側の変数と仮想HILS側のシグナルの同期が取れる。 2022.01.12 事例
事例 【XCP】最小構成のMBD事例 第2章 その219【仮想HILS②】 DummyFMU化したPID制御の辻褄合わせを実施。 Dummy_FMUModelCS2のdo_stepメソッドをオーバーライドすればOK。 do_stepをdp_pidとして実装。 do_pid関数内部でPID.fmuの変わりに出力を決定する仕掛け。 このように入出力の辻褄合わせをすればOK。 2022.01.11 事例
事例 【XCP】最小構成のMBD事例 第2章 その218【仮想HILS①】 再びPyFMIを使うということでPyFMI関連の復習。 過去記事のリンクを貼っておいた。 PIDのFMUをDummy_FMUModel化実施。 FMUModelCS2でロードしていたものをDummy_FMUModelCS2でロードするに変えるだけ。 当然、これに伴う変更もあるが。 2022.01.10 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その217【PID制御⑧】 DAQリスナーの動作確認実施。 問題無く動作した。 やや表示範囲が有ってないが次に作る「HILSもどき」向けの設定になってる。 「HILSもどき」改め「仮想HILS」と命名変更。 仮想HILS作成に向けてのロードマップ確認。 下位レイヤの動作が先に保証済みになっていると計画が立てやすい。 2022.01.09 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その216【PID制御⑦】 DAQリスナーのPythonコードを開示。 基本的にはPython-canで受信。 DAQパケットならば取り込む。 上記を元にmatplotlibで描画。 波形表示はリアルタイムではあるが負荷低減のため0.2秒周期。 ここらへんの描画負荷の事情はHILSもどきの時と一緒。 2022.01.08 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その215【PID制御⑥】 HILSもどきの前にDAQパケットを取得して波形表示する機能が必要。 仮想ECU側の内部変数を表示することが目的。 DAQパケットはECU側の計測値なので、内部変数と解釈しても差し支えない。 上記機能はDAQリスナと命名。 DAQリスナの実験構成を図示した。 横からCANを覗き見るだけのシンプルな機能。 2022.01.07 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その214【PID制御⑤】 仮想ECU側のPID制御器の入出力する信号の種類を確認。 実際にXCPのDAQ、STIMを実施して制御状態を計測。 想定通りの挙動になっていた。 CAN回線モニタを確認。 DAQとSTIMの目標値、実施のレイアウトを合わせていたので、縦に慣れべることで挙動が推測できる。 2022.01.06 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その213【PID制御④】 PID制御器動作確認用Pythonコードを開示。 コンフィグレーション、XCPマスター生成、DAQ起動、計測、書き換えを隠蔽している。 エントリポイントとして起動した際は簡単なXCP通信をしてXCPスレーブの挙動が見れる。 ライブラリとして呼び出すことも可能。 こんな感じのちょっとずづの積み上げが割と重要。 2022.01.05 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その212【PID制御③】 PID制御器の動作確認方法としてPyXCPを使う。 HILSもどきから使用することを想定してクラス化。 クラス化は目的次第で隠蔽する度合いが変化する。 つまり何をサボりたいかが動機になり易い。 エントリーポイントとして呼び出すかライブラリで呼び出すかで振る舞いを変えると便利。 単体テストをする場合はエントリーポイント。 2022.01.04 事例
事例 【仮想ECU】最小構成のMBD事例 第2章 その211【PID制御②】 PID制御器のコードを用意した。 過去に使用したものを今回向けに修正したもの。 ecu_t10ms_job関数で10ms周期で処理。 ecu_init関数で初期化処理。 変数の初期化を実施。 コンパイルが通ることのみ確認済み。 動作確認にPyXCPを使用するが具体手なコードは次回以降に説明。 2022.01.03 事例