このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
BLF ファイルから LIN データを復号化する
この例では、解析のために MATLAB ® の BLF ファイルから LIN データをインポートして復号化する方法を示します。この例で使用される BLF ファイルは、Vector CANoe™ から生成されました。この例では、LIN 記述ファイル (LDF) ExteriorLight_LIN_CH4.ldf
を使用して LIN ネットワーク情報を復号化します。
LDFファイルを開く
linDatabase
関数を使用して、ソース LIN ネットワークを記述するデータベース ファイルを開きます。
ldb = linDatabase("ExteriorLight_LIN_CH4.ldf")
ldb = Database with properties: File Information Name: "ExteriorLight_LIN_CH4.ldf" Path: "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex26110327/ExteriorLight_LIN_CH4.ldf" ProtocolVersion: 2.2000 LanguageVersion: 2.2000 BusSpeed: 19.2000 Network Information Nodes: [6×3 table] Frames: [7×5 table] Signals: [19×5 table]
BLFファイルを調査する
BLF ファイルに関する情報を取得して表示します。blfinfo
関数は、Vector Binary Logging Format BLF ファイルの形式と内容に関する一般情報を解析し、その情報を構造体として返します。チャネルの詳細は主にプロトコル別に整理されており、CAN と CAN FD がグループ化され、次に LIN プロトコルが続き、最後に ChannelID 別に並べられています。この例では、検出された最高チャネルが 7 であるため、CAN/CAN FD に 7 つのチャネルが表示されています。データが不足しているチャネルには 0 個のオブジェクトが表示されます。さらに、LIN データが検出された最高チャネルは 6 であるため、6 つの LIN チャネルがリストされています。
info = blfinfo("Logging.blf")
info = struct with fields:
Name: "Logging.blf"
Path: "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex26110327/Logging.blf"
Application: "CANoe"
ApplicationVersion: "18.2.65"
Objects: 3568
StartTime: 16-Jan-2025 14:44:41.936
EndTime: 16-Jan-2025 14:44:59.137
ChannelList: [13×3 table]
info.ChannelList
ans=13×3 table
ChannelID Protocol Objects
_________ ________ _______
1 "CAN FD" 314
2 "CAN" 0
3 "CAN" 258
4 "CAN FD" 314
5 "CAN" 0
6 "CAN" 0
7 "CAN" 86
1 "LIN" 0
2 "LIN" 0
3 "LIN" 1281
4 "LIN" 939
5 "LIN" 0
6 "LIN" 285
BLFファイルからデータを読み取る
対象の LIN データは、BLF ファイルのチャネル 4 に保存されました。blfinfo
関数の出力によると、LIN プロトコルのチャネル 4 には 939 個の LIN メッセージが含まれています。blfread
関数を使用して LIN データを読み取ります。LIN データにアクセスするには、「ProtocolMode
」NV ペア値を「LIN」として指定します。さらに、関数呼び出しに LIN データベース オブジェクトを提供すると、メッセージ名の検索と信号値のデコードが可能になります。
blfData = blfread("Logging.blf", ChannelID = 4, ProtocolMode ="LIN", Database = ldb)
blfData=939×8 timetable
Time ID Name Data Length Signals ErrorType ChecksumType Checksum
___________ __ ___________ ____________________________________________________ ______ ____________ _________ ____________ ________
0.10573 sec 21 DLFLeft_01 255 0 255 206 255 255 0 0 6 {1×1 struct} None Enhanced 219
0.1125 sec 22 DLFRight_01 254 0 255 255 255 255 161 255 8 {1×1 struct} None Enhanced 136
0.11875 sec 25 GWE_01 224 0 255 247 255 255 203 0 7 {1×1 struct} None Enhanced 193
0.12187 sec 26 GWE_02 244 0 0 0 0 0 0 0 1 {1×1 struct} None Enhanced 240
0.20625 sec 23 DLRLeft_01 0 254 34 255 255 255 255 0 7 {1×1 struct} None Enhanced 71
0.21146 sec 24 DLRRight_01 16 254 55 255 255 0 0 0 5 {1×1 struct} None Enhanced 224
0.21562 sec 27 WWS_01 253 4 170 0 0 0 0 0 3 {1×1 struct} None Enhanced 247
0.22135 sec 21 DLFLeft_01 255 0 255 235 255 255 0 0 6 {1×1 struct} None Enhanced 190
0.22812 sec 22 DLFRight_01 253 0 255 255 255 255 52 255 8 {1×1 struct} None Enhanced 246
0.23437 sec 25 GWE_01 224 0 255 247 255 255 122 0 7 {1×1 struct} None Enhanced 19
0.2375 sec 26 GWE_02 236 0 0 0 0 0 0 0 1 {1×1 struct} None Enhanced 248
0.30573 sec 21 DLFLeft_01 252 0 255 36 255 255 0 0 6 {1×1 struct} None Enhanced 137
0.3125 sec 22 DLFRight_01 253 0 255 255 255 255 116 255 8 {1×1 struct} None Enhanced 182
0.31875 sec 25 GWE_01 224 0 255 247 255 255 108 0 7 {1×1 struct} None Enhanced 33
0.32187 sec 26 GWE_02 236 0 0 0 0 0 0 0 1 {1×1 struct} None Enhanced 248
0.40625 sec 23 DLRLeft_01 0 254 128 255 255 255 255 0 7 {1×1 struct} None Enhanced 232
⋮
最初の「GWE_01
」メッセージからの信号を表示します。
blfData.Signals{3}
ans = struct with fields:
GWE_TurnIndicationLeft: 0
GWE_TurnIndicationRight: 0
GWE_WarningLight: 0
GWE_DrivingLight: 1
GWE_Reserved: 203
関心のある信号値を再パッケージ化して可視化する
バス上の各固有メッセージからの信号データを signal timetable に整理するには、hLINSignalTimetable
ヘルパー関数を使用します。この例では、LIN message timetable から、特定の関心メッセージ「GWI_01
」の signal timetable を作成する方法を示します。「GWI_01
」メッセージには、左折、右折、警告灯/ハザード灯、運転灯などの信号が含まれます。
signalTimetable = hLINSignalTimetable(blfData,'GWE_01')
signalTimetable=171×5 timetable
Time GWE_TurnIndicationLeft GWE_TurnIndicationRight GWE_WarningLight GWE_DrivingLight GWE_Reserved
___________ ______________________ _______________________ ________________ ________________ ____________
0.11875 sec 0 0 0 1 203
0.23437 sec 0 0 0 1 122
0.31875 sec 0 0 0 1 108
0.43437 sec 0 0 0 1 248
0.51875 sec 0 0 0 1 199
0.63437 sec 0 0 0 1 197
0.71875 sec 0 0 0 1 245
0.83437 sec 0 0 0 1 119
0.91875 sec 0 0 0 1 67
1.0344 sec 0 0 0 1 198
1.1187 sec 0 0 0 1 86
1.2344 sec 0 0 0 1 14
1.3187 sec 0 0 0 1 134
1.4344 sec 0 0 0 1 233
1.5187 sec 0 0 0 1 153
1.6344 sec 0 0 0 1 26
⋮
関心のある信号を可視化するために、signal timetable の列を時間の経過に沿ってプロットし、さらに解析することができます。
stackedplot(signalTimetable,{"GWE_TurnIndicationLeft","GWE_TurnIndicationRight","GWE_WarningLight","GWE_DrivingLight"},marker=".") title("Signals from 'GWE\_01' Message")