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