モデルベース開発

事例

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

仮想ECU側のPID制御の入出力定義はポインタで実施。元々が符号付き16bit変数へのポインタだったのでこれを符号付き32bit長変数に差し替え。上記に伴い、参照先のアドレス境界を16bitから32bitに切替。PID制御器の入力はfloat64で、参照変数が16bitか32bitかは気にしなくてもOKなコード。
事例

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

AUTOSAR-XCPのパケット長変更を実施。MAX_CTOとMAX_DTOを8から64に変更すればOK。CTO、DTOについては過去記事で復習。念のためCANFD_SUPPORTで#ifdefで切り分けられるようにしておく。
事例

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

AUTOSAR-XCPのCAN-FD対応に向けての方針を決める。CanIf相当の部分とXCPのパケット長のところを修正する必要あり。といってもCanIf相当の部分は実はすでにCAN-FD対応済みCAN-FD対応の際はDLCの仕様の特殊さに注意する必要がある。8以下の時と8を超えた時で雰囲気が変わる。
事例

【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。