Main Content

记录和重播 CAN 报文

以下示例说明如何在 Simulink® 中使用 MathWorks® 虚拟 CAN 通道记录和重播 CAN 报文。您可以更新此模型以连接到您的系统上支持的硬件。

从示例文件夹中的 sourceMsgs.mat 文件加载保存的 CAN 报文。该文件包含 CAN 报文,这些报文表示绕试车道一周 90 秒的驾驶循环。

将这些报文转换为与 CAN Replay 模块兼容的格式,并将其保存到一个单独的文件中。

  Name                      Size               Bytes  Class        Attributes

  canMsgTimetable      100000x8             33510851  timetable              
  canMsgs                   1x1              2401176  struct                 

CAN Replay 模型

该模型包含:

  • 一个 CAN Replay 模块,用于向 MathWorks Virtual Channel 1 传输报文。

  • 一个 CAN Receive 模块,用于通过 MathWorks Virtual Channel 2 接收 CAN 网络上的报文。

CAN Receive 模块配置为阻止所有扩展 ID,并且仅允许具有标准 ID 1200WheelSpeed 报文通过。

Wheel Speeds 子系统对收到的 CAN 报文中的轮速信息解包,并将它们绘制到示波器中。该子系统还将报文记录到一个文件中。

可视化轮速信息

绘图显示试驾期间所有车轮的轮速。

加载包含所记录报文的文件

每次运行模型时,CAN Log 模块都会创建一个唯一文件。在 MATLAB® 命令行窗口中使用 dir 查找最新日志文件。

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 虚拟通道。但是,您可以将模型连接到其他支持的硬件。