Этот пример показывает вам, как использовать 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);