バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO-TPのシミュレーションをしよう。のシリーズ。
Pythonパッケージcan-isotpのマルチフレームリクエストのパラメータについて。
登場人物
博識フクロウのフクさん
![](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
can-isotpのマルチフレームリクエストを見た感じ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
前回、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
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
確かにこれだね。
無事に送信出来て良かったよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
これ見てなんか気づかない?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
え?
普通にFF送って、FC受けて、CF送って・・・で
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
あ!!
最後のCFにパディングが無い!!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
その通り。
どうやらcan-isotpのデフォルト状態だと。
「DLC最適仕様」が採用されるようなんだよね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
んー、でも一応ISO15765-2的にはOKな方式だから特に問題は無いよね?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ通信する分にはね。
ただ、完成車メーカ的には「DLC最適仕様」を許容しないとまでは行かなくても、
可能あれば採用しないで欲しいって場合もある。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
さっき、「デフォルト状態では」って言い方してたけど、
切り替えられるってこと?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
Yes!
can-isotpのDLC最適化仕様の切り替え
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まぁ手っ取り早くスクリプトを書いてみようか。
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()
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ん?
なんかCanStakに渡すパラメータが増えた?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
その通り。
CanStackにparamsという通信パラメータ設定用の引数があるんで、
これで振る舞いを切り替えられる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
よし、ちょっとこれで動かしてログ取ってみよう。
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
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」08アップ.png)
おー、今度はちゃんとパディングが入った!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
と言う感じで、振る舞いを変えるってことも可能って話でした。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- can-isotpのデフォルト状態だとDLC最適化仕様が採用される。
- CanStackに渡すパラメータでパディング、MIN_DLCを設定するとパディング仕様に切り替わる。
バックナンバーはこちら。
コメント