В этом примере показано, как использовать Vehicle Network 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