メインコンテンツ

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

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])); 

Figure contains an axes object. The axes object contains an object of type line.