メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

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")

Figure contains an object of type stackedplot. The chart of type stackedplot has title Signals from 'GWE\_01' Message.