KEI

事例

【XCP】最小構成のMBD事例 第2章 その185【PyXCP⑦】

メモリアクセス系コマンドということでSET_MTA、DOWNLOAD、UPLOADを実施。DOWNLOADの結果がUPLOADするまで分からないということと、一個ずつ試すがめんどいので一気に流した。UPLOAD→DOWNLOAD→UPLOADの流れでverifyすることで読み書きが正常に行われていることが確認できた。
事例

【XCP】最小構成のMBD事例 第2章 その184【PyXCP⑥】

SYNCHコマンドを投げた。想定通りERR_CMD_SYNCHを受け取れた。GET_COMM_MODE_INFOコマンドを投げた。今回使用しないがinterleavedMode、masterBlockModeの有無や関連パラメータが返ってくる。上記以外に適用しているXCP仕様Versionも取得可能。
事例

【XCP】最小構成のMBD事例 第2章 その183【PyXCP⑤】

早速PyXCPでCONNECTとGET_STATUSのコマンドを投げて見た。共に問題無く動作該当メソッドの戻り値でレスポンスの詳細が取得できる。かなり見やすい構造になっている。GET_STATUSはレスポンス内容の性質上、DAQ起動中やCAL_PAGEのROM書き戻し完了待ちなどの確認使用されることが多い。
事例

【XCP】最小構成のMBD事例 第2章 その182【PyXCP④】

コンフィグレーションパラメータ(JSON文字列)の作成と読み込みのコードを提示。readConfigurationにStringIOを渡しているが、拡張子がjsonのファイル名を設定しておく必要あり。コンフィグレーションを元にXCPマスターの生成。コンフィグレーションを渡すことでXCPマスターが生成される。
事例

【XCP】最小構成のMBD事例 第2章 その181【PyXCP③】

JSON文字列を再度確認。それぞれのパラメータについて一気に説明。使用できるCANインターフェースデバイスは多い。有名どころは網羅されている。トランポート層にSxIを指定できる。SPI、SCI(UART)のことでPyXCPに於いてはCOMポートになる。と言ってもそれほど利用シーンは無い。
事例

【XCP】最小構成のMBD事例 第2章 その180【PyXCP②】

PyXCPを利用する上で必要なimportを列挙。設定ファイルがJSONファイルを想定しており、Python内の文字列をファイル認識されるためにio.StringIOもimport。StringIOに引き渡すJSONを提示。比較的自明なパラメータが多いが一部分かり難いものもあるので次回説明。
事例

【XCP】最小構成のMBD事例 第2章 その179【PyXCP①】

Python-CANにXCPの上位プロトコルを載せたPythonLibraryが存在。その名はそのまんまでPyXCP。PyXCPのインストールはpip使えばOK。pip install pyxcp。PyXCPだけだと疎通確認も取れないからXCP BasicによるPCシミュレーション環境はかなり重要。
事例

【XCP】最小構成のMBD事例 第2章 その178【XCP Basic㉜】

再度DAQパケットを確認。XCPの一連のコマンド含めてCAN回線ログとして取得。DAQパケットだけ抽出し、タイムスタンプを確認。狙い通り10ms周期の送信周期になっていた。ソースコード等はGithubに上げておいた。Python側はJupyterNotebook形式。
事例

【XCP】最小構成のMBD事例 第2章 その177【XCP Basic㉛】

DAQパケット送信周期精度改善の方針を決めた。 時間精度を引き上げるためマルチメディアタイマを使用。 1ms精度の過去実績あり。 Sleepを挟んだWhileループをマルチメディアタイマによる1msコールバックに変更。 これに伴い10ms周期だけでなく、イベントチャンネル3も1ms保証ができる。
事例

【XCP】最小構成のMBD事例 第2章 その176【XCP Basic㉚】

DAQパケット送信周期の精度が悪い理由を確認。 イベントチャンネルが15msになってる。 Sleepで10ms周期を作ろうとしているが、実際は15msになってる。 この部分はPC依存な面はある。 上記により小手先の回収ではどうにもならなそう。 一応対策も考えてるので次回確認予定。