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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

PyXCPでXCPパケットを投げる準備が整ったことで、
前回は早速CONNECTとGET_STATUSのコマンドを投げて見た。
問題無く動作し、レスポンスも詳細に見れることも確認できた。

引き続きSYNCH等の非メモリアクセス系のコマンドを確認する。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

SYNCH

太郎くん
太郎くん

前回はGET_STATUSコマンドをやったから、
流れとしてはSYNCHだね。

フクさん
フクさん

そうだね。
まぁSYNCHは特に何かしてくれるコマンドでは無いが、
エラーハンドリングの際に使用する割と重要なコマンドなので、確認しておいた方が良いだろう。
使用するメソッドはsynchになって、戻り値にレスポンスコードが入ると思う。

太郎くん
太郎くん

これもそのまんまな名前なんだねー。
こんな感じで送ってみよう。

res=xm.synch()
print(res)

結果

bytearray(b'\x00')
太郎くん
太郎くん

この結果の00hが確かERR_CMD_SYNCHって名前の正常応答か。

フクさん
フクさん

そうそう。
エラーにカテゴリされた応答ではあるが、
SYNCHとしては正常応答だ。

GET_COMM_MODE_INFO

太郎くん
太郎くん

次はメモリアクセス系になるのかな?

フクさん
フクさん

その前にGET_COMM_MODE_INFOコマンドを試してみよう。

太郎くん
太郎くん

GET_COMM_MODE_INFO?
初めて出てきたコマンドなような?

フクさん
フクさん

前回のXCP Basicの動作確認ではやっていなかったが、
XCPの通信モードや適用されたXCP仕様Versionが読み出せる。

太郎くん
太郎くん

ほう。
じゃーそれもやってみよう。

フクさん
フクさん

メソッドとしてはgetCommModeInfo
戻り値でレスポンスの情報が見れるはずだ。

太郎くん
太郎くん

はいよー。

CommModeInfo=xm.getCommModeInfo()
print(CommModeInfo)

結果

Container: 
    commModeOptional = Container: 
        interleavedMode = False
        masterBlockMode = False
    maxBs = 0
    minSt = 0
    queueSize = 0
    xcpDriverVersionNumber = 16

GET_COMM_MODE_INFOのレスポンス内訳

太郎くん
太郎くん

なんか知らん単語がいっぱい出てきた気がする。

フクさん
フクさん

まぁ今回は使わないパラメータだし、
XCP Basicとしても対応していないから不要な情報ではあるんだよね。

太郎くん
太郎くん

使わないにしても知ってはおきたいかな。
何を示したパラメータになってるの?

フクさん
フクさん

まずは転送モード
今やってる通常のコマンドのやり取りがstandardMode
それ以外に
複数のコマンド一気に送れるinterleavedMode
DOWNLOAD_NEXTのようにレスポンスを待たずに連続で通信するmasterBlockMode
がある。
XCP Basicでは共にFalseで未対応となる。

フクさん
フクさん

そして、その下のmaxBsがmasterBlockMode時に連続で送れるフレーム数
そのフレーム数に到達したら一旦スレーブからレスが返る。

フクさん
フクさん

minSTはそのブロック転送時のフレーム間の最小時間だな。
例えば1となっていたら1[ms]以上空ける必要がある。

フクさん
フクさん

queueSizeはinterleavedModeで使用するパラメータで、
連続に送って良いコマンド数を示す。

フクさん
フクさん

最後のxcpDriverVersionNumberはスレーブ側が使用しているXCP仕様のVersionだな。
上位ニブル(4bit)がメジャーversionで下位ニブル(4bit)がマイナーversionを示す。
ここでは10進数で表記されているが、実際には16進数で見る必要がある。
つまり、今回の場合だと16=10h。
よって、メジャーVersion1、マイナーVersion0のXCP仕様ver1.0を使用していることを示している。

太郎くん
太郎くん

なんか雪崩のように情報が・・・。

フクさん
フクさん

まぁさっきも言ったが今回使うパラメータでは無いので、
こういうのがあるってのだけ認識しておけばOKだ。

太郎くん
太郎くん

そうするー。

まとめ

フクさん
フクさん

まとめだよ。

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

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

コメント

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