exponenta event banner

Создание и использование групп параметров J1939

В этом примере показано, как использовать Toolbox™ сети транспортных средств с J1939 для создания групп параметров J1939 и управления ими с использованием информации, хранящейся в файлах базы данных CAN. В этом примере используется файл базы данных CAN, J1939.dbc. Создание и использование групп параметров таким образом рекомендуется при необходимости передачи данных в J1939 сеть.

Открыть файл базы данных

Откройте файл базы данных для доступа к определениям.

db = canDatabase('J1939.dbc')
db = 

  Database with properties:

             Name: 'J1939'
             Path: '/tmp/BR2021ad_1584584_202060/publish_examples1/tp7b109833/ex46196345/J1939.dbc'
            Nodes: {2x1 cell}
         NodeInfo: [2x1 struct]
         Messages: {2x1 cell}
      MessageInfo: [2x1 struct]
       Attributes: {3x1 cell}
    AttributeInfo: [3x1 struct]
         UserData: []

Создание группы параметров

Используйте j1939ParameterGroup создание группы параметров с использованием информации, содержащейся в базе данных.

pg = j1939ParameterGroup(db, 'VehicleDataSingle')
pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 6
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 254
    DestinationAddress: 254

   Data Details:
   -------------
             Timestamp: 0
                  Data: [255 255 255 255 255 255 255 255]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []

Установка адресов источника и назначения

Для полного определения группы параметров и логистики ее передачи в сети установите адреса источника и назначения.

pg.SourceAddress = 30
pg.DestinationAddress = 50
pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 6
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 254

   Data Details:
   -------------
             Timestamp: 0
                  Data: [255 255 255 255 255 255 255 255]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []


pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 6
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 50

   Data Details:
   -------------
             Timestamp: 0
                  Data: [255 255 255 255 255 255 255 255]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []

Установить приоритет

Установите Priority для дальнейшей настройки передачи.

pg.Priority = 5;

Просмотр информации о сигнале

Используйте Signals для просмотра значений сигналов для этой группы параметров. Эти сигналы можно непосредственно записывать и считывать для упаковки или распаковки данных в группе параметров.

pg.Signals
ans = 

  struct with fields:

    VehicleSignal4: -1
    VehicleSignal3: -1
    VehicleSignal2: -1
    VehicleSignal1: -1

Изменение информации о сигнале

Запишите непосредственно в сигнал, чтобы изменить значение, и прочитайте его текущее значение.

pg.Signals.VehicleSignal1 = 10
pg.Signals.VehicleSignal2 = 100
pg.Signals.VehicleSignal3 = 1000
pg.Signals.VehicleSignal4 = 10000
pg.Signals
pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 5
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 50

   Data Details:
   -------------
             Timestamp: 0
                  Data: [10 0 255 255 255 255 255 255]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []


pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 5
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 50

   Data Details:
   -------------
             Timestamp: 0
                  Data: [10 0 100 0 255 255 255 255]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []


pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 5
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 50

   Data Details:
   -------------
             Timestamp: 0
                  Data: [10 0 100 0 232 3 255 255]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []


pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 5
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 50

   Data Details:
   -------------
             Timestamp: 0
                  Data: [10 0 100 0 232 3 16 39]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []


ans = 

  struct with fields:

    VehicleSignal4: 10000
    VehicleSignal3: 1000
    VehicleSignal2: 100
    VehicleSignal1: 10

Запись новых прямых данных

Можно также записать значения непосредственно в Data свойство, хотя установка значений через Signals обычно рекомендуется и является предпочтительным.

pg.Data(1:2) = [50 0]
pg.Signals
pg = 

  ParameterGroup with properties:

   Protocol Data Unit Details:
   ---------------------------
                  Name: 'VehicleDataSingle'
                   PGN: 40192
              Priority: 5
         PDUFormatType: 'Peer-to-Peer (Type 1)'
         SourceAddress: 30
    DestinationAddress: 50

   Data Details:
   -------------
             Timestamp: 0
                  Data: [50 0 100 0 232 3 16 39]
               Signals: [1x1 struct]

   Other Information:
   ------------------
              UserData: []


ans = 

  struct with fields:

    VehicleSignal4: 10000
    VehicleSignal3: 1000
    VehicleSignal2: 100
    VehicleSignal1: 50