Регистрируйте и воспроизведите сообщения CAN

Этот пример показывает вам, как регистрировать и воспроизвести использование сообщений CAN MathWorks Virtual CAN channels в 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 передайте со стандартным ID 1200 передать.

Подсистема Скоростей Колеса распаковывает информацию о скорости колеса из полученных сообщений 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 Virtual использовались для этого примера. Можно однако соединить модели с другим поддерживаемым оборудованием.