Начало работы с группами параметра J1939 в MATLAB

Этот пример показывает вам, как создать и управлять группами параметра J1939, использующими информацию, хранившую в файлах DBC. Этот пример использует файл J1939.dbc. Создание и использование параметра группируются, этот путь рекомендуется при необходимости передать данные к сети J1939.

Откройте файл DBC

Откройте файл DBC с помощью canDatabase получить доступ к определениям.

db = canDatabase("J1939.dbc")
db = 
  Database with properties:

             Name: 'J1939'
             Path: '/tmp/BR2021bd_1751886_255755/mlx_to_docbook2/tpadb915a3/vnt-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 = 
  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.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: 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 = 
  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.Signals.VehicleSignal2 = 100
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.Signals.VehicleSignal3 = 1000
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.Signals.VehicleSignal4 = 10000
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: []

pg.Signals
ans = struct with fields:
    VehicleSignal4: 10000
    VehicleSignal3: 1000
    VehicleSignal2: 100
    VehicleSignal1: 10

Запишите новые прямые данные

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

pg.Data(1:2) = [50 0]
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: []

pg.Signals
ans = struct with fields:
    VehicleSignal4: 10000
    VehicleSignal3: 1000
    VehicleSignal2: 100
    VehicleSignal1: 50