在LIN从站传输的帧通过CAPL到达主站之前,对它们进行检查。

时间:2019-12-09 13:24:38

标签: bus capl canoe

在当前设置中,我有一个LIN Master和LIN Slave。时间表表是无条件的,并且永远不会重新协商:

  
      
  • 主框架

  •   
  • 从属帧

  •   
  • 从属帧

  •   

我正在使用物理总线和模拟主站(物理从站)。我的目标是将检查机制实时应用于某些LIN框架。

例如,我知道来自Master的请求(可能是单帧或多帧)将触发特定的Slave响应。我想捕捉这种响应,例如在CAPL脚本中,对内容进行检查并对其进行选择性检查,以使主服务器接收的帧不会说出从站首先传输的内容。当没有发送主请求时,主服务器和从属服务器都将继续发送空帧以满足计划表的要求。

我可以使用非透明的CAPL轻松地“捕获”帧,但是我不确定如何重新传输它。

根据output()关键字文档:

  

重新配置LIN帧的响应数据。在这种情况下,RTR选择器必须设置为0。LIN硬件使用新配置的数据响应指定帧的下一个请求

我不想在传输中增加一条消息的延迟。鉴于以下限制,我不知道如何执行此操作,或者甚至无法通过CANoe中的CAPL API做到这一点:

  • 我无法预见何时广播主请求;
  • 我知道从站会立即回复并确认;
  • 在我无法预见的一段时间之后,从站将发送我要检查的其他数据;
  • 从站答复必须被修改并重新发送;
  • 原始的从属答复一定不能到达主服务器。

拒绝的伪代码:

on linFrame 0x01    // <-- slave frame
{
    if( payload I'm looking for )
    {
        // edit payload content
    }
    output(this)
}

1 个答案:

答案 0 :(得分:1)

特别是

  

原始的从属答复一定不能到达主服务器。

您必须断开Master和Slave的物理连接,并将CANoe置于两者之间

您将需要一个具有(至少)两个LIN通道的网络接口-一个连接到主机,一个连接到从机-并需要将这两个通道设置为网关。即充当奴隶的主人,并充当奴隶的奴隶。

然后,在您的网关实现中,您可以对主服务器和从服务器之间交换的消息进行任何操作。

可行但没那么有趣。