Ввод/вывод CAN с Vehicle Network Toolbox

В этом примере показов способы передачи данных через шину CAN с использованием типа CAN_MESSAGE данных и блоков CAN Pack и CAN Unpack, доступных в Vehicle Network Toolbox™ библиотеки блоков. Тип CAN_MESSAGE данных может быть непосредственно обработан блоками Simulink Desktop Real-Time™.

Пример также показывает различие в способности передачи данных между протоколами CAN и CAN FD. Максимальный размер данных протокола CAN составляет 8 байт. Этот протокол способен отправить восемь значений двойной точности, значения должны быть масштабированы и преобразованы в тип данных uint8, потеряв некоторую точность. Максимальный размер данных протокола CAN FD составляет 64 байта. Этот протокол способен передавать восемь значений двойной точности в их родном формате без какого-либо преобразования и потери точности.

Модель отправляет данные в пределах одного компьютера, от одного виртуального канала CAN к другому. Два канала CAN могут быть как виртуальными каналами, так и физическими каналами на двухканальном устройстве CAN. Можно изменить модель, чтобы связаться между двумя компьютерами, разделив эту модель на части отправки и получения и запустив модели на двух компьютерах.

Желтые блоки используются для отправки данных. Синие блоки используются для приема данных.

Примечание.Эта модель работает только в Microsoft Windows.

Запуск модели в режиме Normal Mode

  1. Чтобы переключиться в режим normal mode, на вкладке Simulation, выберите Режим normal mode.

  2. Чтобы начать выполнение в реальном времени, на вкладке Simulation, нажмите запуск.

Запуск модели во режиме external mode

Чтобы начать выполнение в реальном времени во режиме external mode, на вкладке Desktop Real-Time, нажмите Run in Real Time. Модель строит, соединяется с Simulink во режиме external mode и запускается.

Откройте модель

Эти команды открывают модель и подавляют предупреждение о том, что плата не установлена.

w = warning('off', 'sldrt:blkgui:boardnotonlist');
open_system(fullfile(matlabroot,'toolbox','sldrt','sldrtexamples','sldrtex_canmessage'));
warning(w);

Закройте открытые возможности

close_system(find_system(gcs ,'BlockType', 'Scope'));

Очистка модели

clear
close all
bdclose all

См. также