【CAPL】CANoe数据监测功能statistics 及 获取并输出busload

CANoe数据监测功能

打开CANoe的数据监测窗口

  • Analysis标签下:statistics

  • 除了busload外,还有很多总线数据值
    图片
  • 运行中的数据监测窗口
    图片

在帮助文档中学习

  • 图片
  • 图片

CAPL获取busload

节点网络

  • switch节点发送报文,light接收报文
    image

要点注意

  • write("busload is %d",@sysvar::_Statistics::CAN1::Busload);:
    • 不写%d会导致错误,只输出字符串,不输出后面的busload值
  • 插入busload参数:右键选择
    图片
    图片

代码示例

  • 注:直接输出,值为0
    on start
    {
      //..
      setTimer(busloadTimer, 200);
    }
     
    on timer busloadTimer
    {
      write("busload is %d",@sysvar::_Statistics::CAN1::Busload);
      setTimer(busloadTimer,200);
    }
    

运行效果

  • busload在write中输出为0,与statistic窗口中的值不一致,全为0
    image
    image

获取statistics窗口中的参数并输出

添加program node

  • measurement的trace左侧小方块:右击-添加program node
    image

打开此program node的CAPL代码

  • 双击如图 P 可打开:第一次打开时为创建,输入文件名
  • 注意:P节点,是串在trace的必经之路上的,要在获取到busload值后将其发给trace
    image

创建系统变量保存busload的值

  • 设置初始值为0
    image

将busload赋值给系统变量busloadValue,并输出

  • traceNode.can:

    on sysvar sysvar::_Statistics::CAN1::Busload
    {
      @sysvar::MyNamesapce::busloadValue = @this;
    }
    
  • switch.can

    on start
    {
      setTimer(checkTimer,200);
    }
    
    on timer checkTimer
    {
      //write("busload: %d",@sysvar::_Statistics::CAN1::Bursts);
      write("busload: %d",@sysvar::MyNamesapce::busloadValue);
      setTimer(checkTimer,200);
    }
    

运行效果

  • write可以输出正常的busload值
  • 但trace窗口空白:因为 以上的P节点,作为中转没有将数据传递给trace
    image

P节点的数据传递给trace

  • traceNode.can: 添加 on message *
  • 解释为:拿到的任何消息,都发出来,即传递给下游的trace
    on message *
    {
      output(this);
    }
    

运行效果

  • image

END

posted @ 2025-08-14 00:37  anliux  阅读(79)  评论(0)    收藏  举报