Этот пример показывает вам, как использовать Vehicle Network Toolbox™ с J1939, чтобы создать и использовать каналы J1939, чтобы передать и принять группы параметра в сети. Этот пример использует файл базы данных CAN, J1939.dbc. Это также использует MathWorks Virtual CAN channels, соединенный в петлевой настройке
Откройте файл базы данных, чтобы получить доступ к определениям.
db = canDatabase('J1939.dbc');
Создайте каналы J1939, на которых можно отправить и получить информацию.
txCh = j1939Channel(db, 'MathWorks', 'Virtual 1', 1) rxCh = j1939Channel(db, 'MathWorks', 'Virtual 1', 2)
txCh =
Channel with properties:
Device Information:
-------------------
DeviceVendor: 'MathWorks'
Device: 'Virtual 1'
DeviceChannelIndex: 1
DeviceSerialNumber: 0
Data Details:
-------------
ParameterGroupsAvailable: 0
ParameterGroupsReceived: 0
ParameterGroupsTransmitted: 0
FilterPassList: []
FilterBlockList: []
Channel Information:
--------------------
Running: 0
BusStatus: 'N/A'
InitializationAccess: 1
InitialTimestamp: [0×0 datetime]
SilentMode: 0
TransceiverName: 'N/A'
TransceiverState: 'N/A'
BusSpeed: 500000
SJW: []
TSEG1: []
TSEG2: []
NumOfSamples: []
Other Information:
------------------
UserData: []
rxCh =
Channel with properties:
Device Information:
-------------------
DeviceVendor: 'MathWorks'
Device: 'Virtual 1'
DeviceChannelIndex: 2
DeviceSerialNumber: 0
Data Details:
-------------
ParameterGroupsAvailable: 0
ParameterGroupsReceived: 0
ParameterGroupsTransmitted: 0
FilterPassList: []
FilterBlockList: []
Channel Information:
--------------------
Running: 0
BusStatus: 'N/A'
InitializationAccess: 1
InitialTimestamp: [0×0 datetime]
SilentMode: 0
TransceiverName: 'N/A'
TransceiverState: 'N/A'
BusSpeed: 500000
SJW: []
TSEG1: []
TSEG2: []
NumOfSamples: []
Other Information:
------------------
UserData: []
Можно создать группы параметра J1939, чтобы отправить в сети.
pgSingleFrame = j1939ParameterGroup(db, 'VehicleDataSingle') pgSingleFrame.SourceAddress = 30; pgSingleFrame.DestinationAddress = 50; pgMultiFrame = j1939ParameterGroup(db, 'VehicleDataMulti') pgMultiFrame.SourceAddress = 30; pgMultiFrame.DestinationAddress = 255;
pgSingleFrame =
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: [1×1 struct]
Other Information:
------------------
UserData: []
pgMultiFrame =
ParameterGroup with properties:
Protocol Data Unit Details:
---------------------------
Name: 'VehicleDataMulti'
PGN: 51200
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 255 255 255 255]
Signals: [1×1 struct]
Other Information:
------------------
UserData: []
Чтобы начать использовать каналы для передачи и получать операции, разместите их онлайн.
start(rxCh); start(txCh);
Функция transmit отправляет группы параметра на сеть. Канал J1939 автоматически отправляет группы параметра, требующие сверхкадра, обменивающегося сообщениями с помощью его транспортного протокола.
transmit(txCh, pgSingleFrame) transmit(txCh, pgSingleFrame) transmit(txCh, pgMultiFrame) transmit(txCh, pgSingleFrame) transmit(txCh, pgSingleFrame) pause(1);
Функция receive получает информацию из канала, который представляет обмен сообщениями, который произошел в сети.
pgRx = receive(rxCh, Inf)
pgRx =
1×5 ParameterGroup array with properties:
Protocol Data Unit Details:
---------------------------
Name
PGN
Priority
PDUFormatType
SourceAddress
DestinationAddress
Data Details:
-------------
Timestamp
Data
Signals
Other Information:
------------------
UserData
Посмотрите детали полученной информации.
pgRx(1)
ans =
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.0262
Data: [255 255 255 255 255 255 255 255]
Signals: [1×1 struct]
Other Information:
------------------
UserData: []
Группы параметра отправили, использование транспортного протокола восстановлены в полных деталях каналом.
pgRx(3)
ans =
ParameterGroup with properties:
Protocol Data Unit Details:
---------------------------
Name: 'VehicleDataMulti'
PGN: 51200
Priority: 6
PDUFormatType: 'Peer-to-Peer (Type 1)'
SourceAddress: 30
DestinationAddress: 255
Data Details:
-------------
Timestamp: 1.9336
Data: [255 255 255 255 255 255 255 255 255 255 255 255]
Signals: [1×1 struct]
Other Information:
------------------
UserData: []
Чтобы прекратить получать данные из сети, остановите каналы J1939.
stop(rxCh); stop(txCh);