このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
ARXML を使用して BLF ファイルからデータを読み取る
この例では、ARXML をデータベースとして使用して BLF ファイルからデータを読み取る方法を示します。
ARXML ファイルを開く
arxmlDatabase
関数を使用して ARXML ファイル DecodingExample.arxml
を開きます。
arxmlObj = arxmlDatabase("DecodingExample.arxml")
arxmlObj = Database with properties: Name: "DecodingExample.arxml" Path: "C:\ExampleManager772791\user.Example_ARXMLCANDecoding\vnt-ex11728030\DecodingExample.arxml" CAN: [1×1 shared.vnt.arxml.protocol.CAN]
BLF ファイルの詳細を表示
BLF ファイルに関する情報を取得して表示します。blfinfo
関数は、Vector Binary Logging Format (BLF) ファイルの形式と内容に関する一般情報を解析し、その情報を構造体として返します。
blfin = blfinfo("BLF_ARXML.blf")
blfin = struct with fields:
Name: "BLF_ARXML.blf"
Path: "C:\ExampleManager772791\user.Example_ARXMLCANDecoding\vnt-ex11728030\BLF_ARXML.blf"
Application: "CANoe"
ApplicationVersion: "18.2.65"
Objects: 6075
StartTime: 15-Nov-2024 18:06:16.345
EndTime: 15-Nov-2024 18:07:17.460
ChannelList: [2×3 table]
blfin.ChannelList
ans=2×3 table
ChannelID Protocol Objects
_________ ________ _______
1 "CAN" 6070
2 "CAN" 0
BLFファイルからデータを読み取る
対象のデータは、BLF ファイルのチャネル 1 に保存されました。blfread
関数を使用して CAN データを読み取ります。関数呼び出しに ARXML ファイルを提供して、メッセージ名の検索と信号値のデコードを有効にすることもできます。
blfData = blfread("BLF_ARXML.blf", 1, "Database", arxmlObj)
blfData=6070×8 timetable
Time ID Extended Name Data Length Signals Error Remote
____________ _________ ________ __________ __________________________________ ______ ____________ _____ ______
0.050294 sec 2048 true {'Frame2'} {[ 250 0 16 0 4 0 1 0]} 8 {1×1 struct} false false
0.050526 sec 3 false {'Frame4'} {[210 236 104 118 52 187 124 192]} 8 {1×1 struct} false false
0.050694 sec 16 false {'Frame5'} {[ 0 3 89 100]} 4 {1×1 struct} false false
0.050898 sec 2047 false {'Frame1'} {[ 226 99 235 64 255 255]} 6 {1×1 struct} false false
0.051184 sec 536870911 true {'Frame3'} {[ 0 0 45 10 68 26 184 161]} 8 {1×1 struct} false false
0.10029 sec 2048 true {'Frame2'} {[ 237 0 12 0 6 0 0 0]} 8 {1×1 struct} false false
0.10053 sec 3 false {'Frame4'} {[ 0 56 252 27 254 13 75 64]} 8 {1×1 struct} false false
0.10071 sec 16 false {'Frame5'} {[ 0 252 200 92]} 4 {1×1 struct} false false
0.10091 sec 2047 false {'Frame1'} {[ 68 41 41 64 249 255]} 6 {1×1 struct} false false
0.1012 sec 536870911 true {'Frame3'} {[ 0 64 126 0 196 46 248 98]} 8 {1×1 struct} false false
0.15029 sec 2048 true {'Frame2'} {[ 118 0 24 0 4 0 0 0]} 8 {1×1 struct} false false
0.15052 sec 3 false {'Frame4'} {[ 120 21 188 10 94 69 132 64]} 8 {1×1 struct} false false
0.15069 sec 16 false {'Frame5'} {[ 0 252 161 14]} 4 {1×1 struct} false false
0.15089 sec 2047 false {'Frame1'} {[ 41 48 20 192 254 255]} 6 {1×1 struct} false false
0.15118 sec 536870911 true {'Frame3'} {[ 0 128 93 2 67 178 109 45]} 8 {1×1 struct} false false
0.20029 sec 2048 true {'Frame2'} {[ 152 0 24 0 4 0 1 0]} 8 {1×1 struct} false false
⋮
Frame2
メッセージに含まれる興味のある信号を表示します。
blfData.Signals{1}
ans = struct with fields:
Signal5: 27
Signal11: 7
関心のある信号値を再パッケージ化して可視化する
canSignalTimetable
関数を使用して、バス上の各固有メッセージからの信号データを signal timetable に再パッケージ化します。
signalTimetable = canSignalTimetable(blfData, "Frame2")
signalTimetable=1214×2 timetable
Time Signal5 Signal11
____________ _______ ________
0.050294 sec 27 7
0.10029 sec 20.5 6.5
0.15029 sec 89 8
0.20029 sec -22 8
0.25029 sec 68 7
0.30029 sec 10.5 7
0.35029 sec -19 7.5
0.40029 sec 13 6
0.4503 sec 40.5 5.5
0.50029 sec 51.5 6.5
0.55029 sec -4 6.5
0.60029 sec -8 6.5
0.65029 sec -14 5.5
0.70029 sec -28 6.5
0.75029 sec -11.5 7
0.8003 sec 61 7
⋮
関心のある信号を可視化するために、signal timetable の列を時間の経過に沿ってプロットし、さらに解析することができます。プロットは、Signal5
の最初の 5 秒間の値を示しています。
plot(signalTimetable.Time, signalTimetable.Signal5); xlim(seconds([0 5]));