В этом примере показано, как передавать данные по шине CAN с использованием CAN_MESSAGE типа данных и блоков CAN Pack и CAN Unpack, доступных в библиотеке блоков Vehicle Network Toolbox™. Тип данных CAN_MESSAGE может непосредственно обрабатываться блоками Real-Time™ Simulink Desktop.
В примере также показана разница в возможностях передачи данных между протоколами CAN и CAN FD. Максимальный размер данных протокола CAN составляет 8 байт. Этот протокол способен отправлять восемь значений двойной точности, значения должны быть масштабированы и преобразованы в тип данных uint8, теряя некоторую точность. Максимальный размер данных протокола CAN FD составляет 64 байта. Этот протокол способен передавать восемь значений двойной точности в их собственном формате без какого-либо преобразования и потери точности.
Модель отправляет данные в пределах одного компьютера, с одного виртуального канала CAN на другой. Два канала CAN могут быть либо виртуальными, либо физическими каналами в двухканальном устройстве CAN. Модель можно изменить для обмена данными между двумя компьютерами, разделив ее на части отправки и получения и запустив модели на двух компьютерах.
Желтые блоки используются для отправки данных. Синие блоки используются для приема данных.
Примечание.Эта модель работает только в Microsoft Windows.
Для переключения в обычный режим при необходимости на вкладке Моделирование (Simulation) выберите Обычный режим (Normal mode).
Чтобы начать выполнение в реальном времени, на вкладке Моделирование (Simulation) щелкните Выполнить (Run).
Чтобы запустить выполнение в реальном времени во внешнем режиме, на вкладке Рабочий стол в реальном времени щелкните Выполнить в реальном времени. Модель создается, подключается к Simulink во внешнем режиме и запускается.
Эти команды открывают модель и подавляют предупреждение о том, что плата не установлена.
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