バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO-TPのシミュレーションをしよう。のシリーズ。
Pythonパッケージcan-isotpのマルチフレームリクエストのパラメータについて。
登場人物
博識フクロウのフクさん
イラスト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
can-isotpのマルチフレームリクエストを見た感じ。
前回、can-isotpのマルチフレームリクエストやったんだけど、
その時のログがこれ。
Begin Triggerblock
0.000000 Start of measurement
0.000000 1 18DA10F1x Rx d 8 10 1E 01 02 03 04 05 06
0.001598 1 18DAF110x Rx d 8 30 00 00 CC CC CC CC CC
0.003047 1 18DA10F1x Rx d 8 21 07 08 09 10 01 02 03
0.003170 1 18DA10F1x Rx d 8 22 04 05 06 07 08 09 10
0.003285 1 18DA10F1x Rx d 8 23 01 02 03 04 05 06 07
0.003334 1 18DA10F1x Rx d 4 24 08 09 10
End TriggerBlock
確かにこれだね。
無事に送信出来て良かったよ。
これ見てなんか気づかない?
え?
普通にFF送って、FC受けて、CF送って・・・で
あ!!
最後のCFにパディングが無い!!
その通り。
どうやらcan-isotpのデフォルト状態だと。
「DLC最適仕様」が採用されるようなんだよね。
んー、でも一応ISO15765-2的にはOKな方式だから特に問題は無いよね?
まぁ通信する分にはね。
ただ、完成車メーカ的には「DLC最適仕様」を許容しないとまでは行かなくても、
可能あれば採用しないで欲しいって場合もある。
さっき、「デフォルト状態では」って言い方してたけど、
切り替えられるってこと?
Yes!
can-isotpのDLC最適化仕様の切り替え
まぁ手っ取り早くスクリプトを書いてみようか。
import isotp
import time
from can.interfaces.vector import VectorBus
isotp_params = {
'tx_padding' : 0xCC,
'tx_data_min_length' : 8
}
bus = VectorBus(channel=0, bitrate=500000)
addr = isotp.Address(isotp.AddressingMode.NormalFixed_29bits, source_address=0xF1, target_address=0x10)
stack = isotp.CanStack(bus, address=addr, params=isotp_params)
#stack.send(b'\x01\x02\x03\x04\x05\x06\x07’)
stack.send(b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\
\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\
\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10')
while stack.transmitting():
stack.process()
time.sleep(0.0001)
bus.shutdown()
ん?
なんかCanStakに渡すパラメータが増えた?
その通り。
CanStackにparamsという通信パラメータ設定用の引数があるんで、
これで振る舞いを切り替えられる。
よし、ちょっとこれで動かしてログ取ってみよう。
Begin Triggerblock
0.000000 Start of measurement
0.000000 1 18DA10F1x Rx d 8 10 1E 01 02 03 04 05 06
0.001294 1 18DAF110x Rx d 8 30 00 00 CC CC CC CC CC
0.003219 1 18DA10F1x Rx d 8 21 07 08 09 10 01 02 03
0.003309 1 18DA10F1x Rx d 8 22 04 05 06 07 08 09 10
0.003359 1 18DA10F1x Rx d 8 23 01 02 03 04 05 06 07
0.003408 1 18DA10F1x Rx d 8 24 08 09 10 CC CC CC CC
End TriggerBlock
おー、今度はちゃんとパディングが入った!
と言う感じで、振る舞いを変えるってことも可能って話でした。
まとめ
まとめだよ。
- can-isotpのデフォルト状態だとDLC最適化仕様が採用される。
- CanStackに渡すパラメータでパディング、MIN_DLCを設定するとパディング仕様に切り替わる。
バックナンバーはこちら。
コメント