【问题标题】:Continuous signal transmission in Vector CANoeVector CANoe 中的连续信号传输
【发布时间】:2017-02-22 19:21:31
【问题描述】:

我使用Vector软件在CANoe中创建了一个节点,并为其分配了设计的数据库。

我需要传输连续的消息,为此我创建了一个带有按钮的面板。当我继续按下按钮时,消息的信号应始终取值 1,否则为 0(释放按钮)

应该传输的消息具有以下特征:

按下按钮后发送消息的代码:

variables {

 message messageDeclaredInDb myMessage;
 msTimer cyclicTimer200ms;
}
on envVar ev_Button_Status
{

  switch (getValue(this)) {

   case 0: myMessage.Sig = 0;
           write("button released");
           break;

    case 1: myMessage.Sig = 1;
            write("button pressed");
            break;

    default: write("Default");
  }

  setTimerCyclic(cyclicTimer200ms, 200);

}

on timer cyclicTimer200ms 
{

  myMessage.Sig = getValue(ev_Button_Status);
  output(myMessage); 
}

我在图形中可视化结果:

但想要的结果应该是这样的,没有信号的上下波动:

请问有什么建议吗?知道我不使用任何交互层。

【问题讨论】:

    标签: simulation capl canoe


    【解决方案1】:

    注意GenMsgILSupport = Yes 属性,这意味着此消息启用了交互层支持。 IL负责根据数据库中定义的属性(如循环时间)接收和发送消息。

    使用 IL 支持,您可以直接访问信号。您既不需要定义消息变量也不需要定义计时器,只需在信号名称前放一个$ 字符并设置值即可。示例:

     $Sig = 1;
    

    完整示例 1:

    on envVar ev_Button_Status
    {    
         switch (getValue(this)) {    
         case 0:
             $Sig = 0;
             write("button released");
             break;
    
          case 1:
              $Sig = 1;
              write("button pressed");
              break;
    
          default:
              write("Default");
        }    
    }
    

    如果您不使用任何交互层,请确保为您的消息禁用它。此外,您的代码存在一些问题:

    1. 您应该在on start 中启动计时器,而不是在on envVar 中。
    2. on envVaron timer 中设置信号值,但不能同时设置。

    完整示例 2:

    variables {
        message messageDeclaredInDb myMessage;
        msTimer cyclicTimer200ms;
    }
    
    on start
    {
        setTimerCyclic(cyclicTimer200ms, 200);
    }
    
    on timer cyclicTimer200ms 
    {
        myMessage.Sig = getValue(ev_Button_Status);
        output(myMessage);
    }
    

    【讨论】:

    • 感谢您的解释!实际上问题在于,当我试图模拟它时,ECU 是物理连接的,所以我在发送信号,同时 ECU 也在发送信号。这就是我们在图表上看到这种行为的原因!
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2016-06-15
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多