PyFMI

事例

【XCP】最小構成のMBD事例 第2章 その225【CAN-FD②】

XCPonCAN-FDに対応すべく現状の仮想ECU、仮想HILS構成を再確認。 CANのところをCAN-FD化。 XCP経由で変数のやり取りをしている部分を32bit化。 改造方針と同時に動作確認手段も模索する必要あり。 python-can、PyXCPを駆使すればなんとかなりそうという当たりだけ付けた。
事例

【XCP】最小構成のMBD事例 第2章 その224【CAN-FD①】

XCPonCANとしての課題を明確化。 CANのデータフィールド8byteの仕様がODTの限界値を決めていた。 よって、データフィールドが長くなれば解決と言える。 CANのデータフィールドの上限が8byteに対し、CAN-FDは64byte。 よって、4byte、3変数が載っても十分な長さ。
事例

【XCP】最小構成のMBD事例 第2章 その223【仮想HILS⑥】

ついに仮想ECUと仮想HILSの連携動作。 とりあえず動いたんで録画してYoutubeに上げた。 想定よりもキレイだはあるが、やはりカクついている。 カクついている原因は変数の精度も含まれているかもしれない。 変数を32bit長にすることで精度を上げられるがODTを増やす必要がある。 CAN-FDを使うと・・・。
事例

【XCP】最小構成のMBD事例 第2章 その222【仮想HILS⑤】

構成がややこしいことになってきたので仮想ECUと仮想HILSの実験構成を再確認。 ネットワーク構成と論理的構成を確認。 論理的構成はModelicaモデルベースでシンプルだが、ネットワーク構成は各信号をCANやXCPに変えてるため複雑化。 このようにノードを分割しておくと部分的に実物に差し替えるなどがし易くなる。
事例

【XCP】最小構成のMBD事例 第2章 その221【仮想HILS④】

ついに仮想HILSのPythonコード完成。 基本的には前回までの修正内容を盛り込んだだけ。 指令値取得用のCANバス初期化の位置を先頭から実処理の前に移動。 XCP関連のCANフレームがFIFOに詰まれてしまうため、それを避ける目的で移動。 使用する前にFIFOクリアしてもOK。
事例

【XCP】最小構成のMBD事例 第2章 その220【仮想HILS③】

XCP関連の処理を追加。 基本xcp_canクラスを呼び出すだけ。 DAQ受信とSTIM送信はFMU処理が実装してあるFMU_handler内で呼び出す。 DAQ受信はFMU処理直前。 STIM送信はFMU処理直後。 これにより、仮想ECU側の変数と仮想HILS側のシグナルの同期が取れる。
事例

【XCP】最小構成のMBD事例 第2章 その219【仮想HILS②】

DummyFMU化したPID制御の辻褄合わせを実施。 Dummy_FMUModelCS2のdo_stepメソッドをオーバーライドすればOK。 do_stepをdp_pidとして実装。 do_pid関数内部でPID.fmuの変わりに出力を決定する仕掛け。 このように入出力の辻褄合わせをすればOK。
事例

【XCP】最小構成のMBD事例 第2章 その218【仮想HILS①】

再びPyFMIを使うということでPyFMI関連の復習。 過去記事のリンクを貼っておいた。 PIDのFMUをDummy_FMUModel化実施。 FMUModelCS2でロードしていたものをDummy_FMUModelCS2でロードするに変えるだけ。 当然、これに伴う変更もあるが。
事例

【PyFMI】最小構成のMBD事例 第2章 その146【CAN連携⑩】

「指令器」と「FMU処理&グラフ描画処理」の結合実験実施。 共に問題無く動作。 CANの送信周期が100msというのもあって、波形もキレイ。 上記の状況を動画で確認。 「HILSもどき」というおおよそ目的を達成した気もするが、他のアプローチも試したいのでこのシリーズはまだまだ続く。
事例

【PyFMI】最小構成のMBD事例 第2章 その145【CAN連携⑨】

CAN連携の受信側(FMU処理、グラフ描画)のコードを開示。 __init__にバズ初期化とチェックボックス配置。 FMU_handlerでCAN受信。 ただし、タイムアウト0秒のポーリング方式。 一応起動することだけは確認済み。 あとは指令器側のCAN送信との連携を試すのみ。