Журнал и воспроизведение сообщений CAN

В этом примере показано, как логгировать и воспроизводить сообщения 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

Эта модель содержит:

  • Блок 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. Однако можно подключить свои модели к другому поддерживаемому оборудованию.