В этом примере показано, как передать данные через шину CAN, использовав тип данных CAN_MESSAGE, и Пакет CAN и CAN Распаковывают блоки, доступные в библиотеке блоков Vehicle Network Toolbox™. Тип данных CAN_MESSAGE может быть непосредственно обработан блоками Simulink Desktop Real-Time™.
Пример также показывает различие в возможности передачи данных между протоколами CAN FD и CAN. Размер данных максимума протокола CAN составляет 8 байтов. Этот протокол может отправить восемь значений с двойной точностью, значения должны масштабироваться и преобразовываться в uint8 тип данных, теряя некоторую точность. Размер данных максимума протокола CAN FD составляет 64 байта. Этот протокол способен к передаче восьми значений с двойной точностью в их собственном формате без любого преобразования и потери точности.
Модель отправляет данные в одном компьютере от одного виртуального канала CAN до другого. Эти два канала CAN могут быть или виртуальными каналами или физическими каналами на двухканальном устройстве CAN. Можно изменить модель, чтобы связаться между двумя компьютерами путем разделения этой модели в отправлять и получить части и выполнение моделей на двух компьютерах.
Желтые блоки используются, чтобы отправить данные. Синие блоки используются, чтобы получить данные.
Примечание: Эта модель работает на Microsoft Windows только.
Чтобы переключиться на режим Connected IO в случае необходимости, на вкладке Desktop Real-Time, выбирают Mode> Connected IO.
Чтобы запустить выполнение в реальном времени, нажмите Run в режиме реального времени.
Чтобы переключиться, чтобы Запуститься в Привилегированном режиме в случае необходимости, на вкладке Desktop Real-Time, выбирают Mode> Run in Kernel.
Чтобы запустить выполнение в реальном времени, нажмите 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