当前位置: 代码迷 >> 综合 >> Canoe logging block
  详细解决方案

Canoe logging block

热度:80   发布时间:2023-09-20 14:05:01.0

Canoe 录制trace功能

    • 创建logging Block
    • 配置 logging file
    • 配置logging trigger model
      • 方式一:Entire measurement
      • 方式二:user defined
      • 方式三:CAPL
        • setLogFileName()
        • startLogging()
        • stopLogging()
        • triggerEx()

创建logging Block

  1. 点击工具栏的analyze -> Measurement Setup

Canoe logging block

  1. 在任意block上点击右键,然后选择 insert logging block,创建logging block ,名字默认是:blogging

Canoe logging block
3.或者通过下图的方式创建logging block ,名字默认是logging2
Canoe logging block

Canoe logging block

配置 logging file

  1. logging file的名字可以编程定义,如下图可以是系统时间也可以是电脑名

Canoe logging block
2.文件的后缀可以是下图所示 常用后缀 .asc ;.blf
Canoe logging block

配置logging trigger model

  1. 在logging block上单击右键 ,然后点击configuration。

Canoe logging block

方式一:Entire measurement

  1. 这种触发方式,无差别的把trace全部录制下来,下面的图很形象的表示从start 一直录制到stop

  2. 还以选择手动操作,稀土的左边圆的图标是暂停,|| 是开始,当把工程run起来的时候,是可以通过鼠标点击的

  3. 下图二,最后红色圈起来的,表示可以通过按键触发,开始和暂停之间来回切换。
    Canoe logging block
    Canoe logging block

  4. 通过空格键active logging block ,然后 开始你的工程。

Canoe logging block

  1. 停止工程,将switch开关打到 offline
  2. 双击下图红色框内,调出logging文件选择对话框,选择刚才配置的路径下的logging文件

Canoe logging block

  1. 点击工具栏的Analysis ,选中Trace ,分析trace
  2. 刚才我在工程运行了10ms左右,按下了按键‘t’,20ms左右再次按下‘t’,这样10ms到20ms之间的数据我就没有录到,如下图所示
    Canoe logging block

方式二:user defined

用户自己定义,可以选择的方式有很多,通过信号,报文,变量都可以触发,下面我通过变量值得改变触发logging,当选择的系统变量等于5开始录制,等于6停止录制
Canoe logging block
创将一个simulation node .can文件,定义一个定时器,当工程开始5000ms之后设置变量为5,也就是开始录制,时间到后再设置变量为6,停止录制。

/*@!Encoding:1252*/
variables
{
    msTimer start_logging;
}
on start
{
    @sysvar::vin::EDR_type = 0;setTimer(start_logging, 5000);
}
on timer start_logging
{
    if(@sysvar::vin::EDR_type == 0){
    // start trgier@sysvar::vin::EDR_type = 5;setTimer(start_logging, 5000);}else if(@sysvar::vin::EDR_type == 5){
        // stop trgier@sysvar::vin::EDR_type = 6;}  
}

下图 trace中 5s的时间点,开始录制
Canoe logging block
下图 trace中 10s的时间点,停止录制
Canoe logging block
4.8s开始录制,10.2s停止录制,是因为设置了下图的 Pre-triger time 和 Post-triger time 等于200ms,也就是前后多录制200ms时间的数据
Canoe logging block

方式三:CAPL

在CAPL脚本中通过API控制logging的开始与停止,下面是一些常用的API.

setLogFileName()

设置logging文件的存放路径,不设置,会默认存放在logging block 设置的路径.

Canoe logging block

startLogging()

开始录制trace,可以指定logging block 和 preTriggerTime 时间
Canoe logging block

stopLogging()

停止录制可以指定logging block 和 postTriggerTime 时间

Canoe logging block

logging block 中设置如下
Canoe logging block
定义一个定时器,工程开始5s后开始录制,10后停止录制

/*@!Encoding:1252*/
variables
{
    int i =0;msTimer start_logging;
}
on start
{
      
//设置 logging文件的路径和文件名setLogFileName("logging", "C:\\Temp\\log1\\{UserName}_{LocalTime}.blf");setTimer(start_logging, 5000);
}
on timer start_logging
{
    if(i==0){
    startLogging("logging", 1000);setTimer(start_logging, 5000);}else{
    stopLogging("logging", 1000);}i++;
}

解锁如下图所示,5s开始录制,10s结束录制
Canoe logging blockCanoe logging block

triggerEx()

发送一个trigger信号到指定的logging block,第一次执行这个API是开始录制,第二次执行时暂停,第三次是录制是开始。。。
Canoe logging block

variables
{
    int i =0;msTimer start_logging;
}
on start
{
     setLogFileName("logging", "C:\\Temp\\log1\\{UserName}_{LocalTime}.blf");setTimer(start_logging, 5000);
}
on timer start_logging
{
    if(i==0){
    
// startLogging("logging", 1000);triggerEx("logging");setTimer(start_logging, 5000);}else{
    triggerEx("logging");
// stopLogging("logging", 1000);}i++;
}

回放logging文件的结果和上面相同。

  相关解决方案