В этом примере показано, как логгировать и воспроизводить сообщения CAN с помощью каналов MathWorks Virtual CAN в Simulink ®. Можно обновить эту модель, чтобы подключиться к поддерживаемому оборудованию в вашей системе.
Загрузите сохраненное сообщение CAN из sourceMsgs.mat
файл из папки примеров. Файл содержит сообщения CAN, представляющие 90-секундный цикл дисковода вокруг тестовой дорожки.
Преобразуйте эти сообщения в формат, совместимый с блоком CAN Replay, и сохраните их в отдельный файл.
Name Size Bytes Class Attributes canMsgTimetable 100000x8 33510851 timetable canMsgs 1x1 2401176 struct
Эта модель содержит:
Блок CAN Replay, который передает MathWorks Virtual Channel 1
.
Блок CAN Receive, который получает сообщения в сети CAN через MathWorks Virtual Channel 2
.
Блок CAN Receive сконфигурирован, чтобы блокировать все расширенные идентификаторы и разрешить только WheelSpeed
сообщение со стандартным идентификатором 1200
пройти.
Подсистема Wheel Speeds распаковывает информацию о скорости колеса из полученных сообщений CAN и строит график их в возможности. Подсистема также регистрирует сообщения в файле.
График показывает скорость колеса для всех колес на время тестового привода.
Блок CAN Log создает уникальный файл каждый раз, когда вы запускаете модель. Использование dir
в Командном Окне MATLAB, чтобы найти последний файл журнала.
WheelSpeeds_2011-May-03_020634.mat Name Size Bytes Class Attributes canMsgTimetable 100000x8 33510851 timetable canMsgs 1x1 2401176 struct outMsgs 1x1 154320 struct
Использование canMessageTimetable
для преобразования сообщений, записанных во время симуляции, в расписание, которое можно использовать в командном окне.
Для прямого доступа к сигналам сообщений используйте соответствующий файл базы данных при преобразовании наряду с canSignalTimetable
.
ans = 15x8 timetable Time ID Extended Name Data Length Signals Error Remote ___________ ____ ________ _______________ ___________________________ ______ ____________ _____ ______ 0.10701 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.1153 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.12349 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.13178 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.13998 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.14826 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.15647 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.16475 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.17338 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.18122 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.18941 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.19768 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.20591 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.2142 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false 0.2224 sec 1200 false {'WheelSpeeds'} {[39 16 39 16 39 16 39 16]} 8 {1x1 struct} false false ans = 15x4 timetable Time LR_WSpeed RR_WSpeed RF_WSpeed LF_WSpeed ___________ _________ _________ _________ _________ 0.10701 sec 0 0 0 0 0.1153 sec 0 0 0 0 0.12349 sec 0 0 0 0 0.13178 sec 0 0 0 0 0.13998 sec 0 0 0 0 0.14826 sec 0 0 0 0 0.15647 sec 0 0 0 0 0.16475 sec 0 0 0 0 0.17338 sec 0 0 0 0 0.18122 sec 0 0 0 0 0.18941 sec 0 0 0 0 0.19768 sec 0 0 0 0 0.20591 sec 0 0 0 0 0.2142 sec 0 0 0 0 0.2224 sec 0 0 0 0
Для этого примера использовались виртуальные каналы MathWorks CAN. Однако можно подключить свои модели к другому поддерживаемому оборудованию.