【XCP】最小構成のMBD事例 第2章 その204【AUTOSAR⑩】

【XCP】最小構成のMBD事例 第2章 その204【AUTOSAR⑩】 事例
【XCP】最小構成のMBD事例 第2章 その204【AUTOSAR⑩】

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

はじめに

前回までで、AUTOAR-XCPのコンフィグレーションが終わったところ。
Xcp_Cfg.hで基本的な振る舞いを定義し、
Xcp_Cfg.cでイベントチャンネルやSegmentに関連するデータ構造を定義。

これで一応動く状態になったはずなので、
XCP basic、PyXCPの時のように動作確認していく。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

AUTOSAR-XCPの動作確認

太郎くん
太郎くん

ソースコードのPCシミュレーション向け修正とAUTOSAR関連のコンフィグレーションが終わったから、後は動かすだけだねー。

フクさん
フクさん

やることはXCP Basic、PyXCPでやったことをそのままやっていくだけなので、巻き気味に進めよう。

太郎くん
太郎くん

XCPのリクエストとしてはPyXCPを使う感じ?

フクさん
フクさん

そうだね。
そっちの方が楽そうだ。
以前も書いたが、以下がXCPコマンドを投げる前のPyXCPに対してのコンフィグレーションや初期化だ。

PyXCPのコンフィグレーションや初期化

from io import StringIO
from pyxcp.config import readConfiguration
from pyxcp import transport
from pyxcp.transport.candriver.pc_vector import Vector # "CAN_DRIVER": "Vector"を指定する場合に必要
from pyxcp.master import Master
from collections import namedtuple
import time

JSON = """{
"TRANSPORT": "CAN",
"CAN_DRIVER": "Vector",
"CAN_USE_DEFAULT_LISTENER": true,
"CHANNEL": "0",
"CAN_ID_MASTER": 2,
"CAN_ID_SLAVE": 1,
"CAN_ID_BROADCAST": 256,
"MAX_DLC_REQUIRED": false,
"CREATE_DAQ_TIMESTAMPS": true,
"SERIAL": 0,
"BITRATE": 500000,
"APP_NAME": "PyXCP-CAN"
}"""
CONF_JSON = StringIO(JSON)
CONF_JSON.name = "conf_can_vector.json"
CONFIG = readConfiguration(CONF_JSON)

xm=Master('can',config=CONFIG)
太郎くん
太郎くん

ここ以前と一緒だね。

フクさん
フクさん

まぁ今回はSTIMが出てくるまでは全部一緒だと思うよ。

CONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFO

フクさん
フクさん

一気にCONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFOを済ませてしまおう。

# CONNECT
conn = xm.connect()
print(conn)

# GET_STATUS
status=xm.getStatus()
print(status)

# SYNCH
res=xm.synch()
print(res)

# GET_COMM_MODE_INFO
CommModeInfo=xm.getCommModeInfo()
print(CommModeInfo)

結果

# CONNECT
Container: 
    resource = Container: 
        dbg = False
        pgm = False
        stim = True
        daq = True
        calpag = False
    commModeBasic = Container: 
        optional = True
        slaveBlockMode = False
        addressGranularity = (enum) BYTE 0
        byteOrder = (enum) INTEL 0
    maxCto = 8
    maxDto = 8
    protocolLayerVersion = 16
    transportLayerVersion = 16

# GET_STATUS
Container: 
    sessionStatus = Container: 
        resume = False
        daqRunning = False
        clearDaqRequest = False
        storeDaqRequest = False
        storeCalRequest = False
    resourceProtectionStatus = Container: 
        dbg = False
        pgm = False
        stim = False
        daq = False
        calpag = False
    sessionConfiguration = 0

# SYNCH
bytearray(b'\x00')

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

CAN回線のログ

フクさん
フクさん

そしてCAN回線ログ

# CONNECT
 0.000000 1  1               Rx   d 2 FF 00
 0.003645 1  2               Rx   d 8 FF 0C 80 08 08 00 10 10

# GET_STATUS
 0.068280 1  1               Rx   d 1 FD
 0.069255 1  2               Rx   d 6 FF 00 00 00 00 00

# SYNCH
 0.095945 1  1               Rx   d 1 FC
 0.097198 1  2               Rx   d 2 FE 00

# GET_COMM_MODE_INFO
 0.130867 1  1               Rx   d 1 FB
 0.132080 1  2               Rx   d 8 FF 00 00 00 63 00 63 10
太郎くん
太郎くん

当然と言えば当然なのかもしれないけど、
バッチリ動いてるね。

まとめ

フクさん
フクさん

まとめだよ。

  • AUTOSAR-XCPの動作確認開始。
    • XCPコマンドはPyXCPを使って実施。
    • XCP Basic、PyXCPで散々やったところなので巻き気味で推進。
  • 一気にCONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFOを実施。
    • 当然ながら問題無く動作。
    • CAN回線ログも一緒に確認。

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

コメント

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