【问题标题】:Driver error 11 in TransmitCANFrame XL_ERR_QUEUE_IS_FULLTransmitCANFrame XL_ERR_QUEUE_IS_FULL 中的驱动程序错误 11
【发布时间】:2019-12-09 12:40:55
【问题描述】:

我在 2 个 ECU 之间使用 CANCase VN1640A 来伪造 CAN 消息。桥梁模拟设置下方:

在我的 CAPL 代码中,从通道 1 接收到的消息将被重定向到通道 3,反之亦然。 (到目前为止,我没有伪造任何消息)

variables{
message can1. msgCAN1;
message can3. msgCAN3;
}

on message can1.{
 msgCAN3=this;

 if(this.dir == rx)
 output(msgCAN3);
}

on message can3.{
 msgCAN1 = this;

 if(this.dir == rx)
 output(msgCAN1);
}

但是当我启动 CANoe 时,我收到以下错误消息:

此错误意味着 CANoe 尝试发送更多信息。发送缓冲区溢出。我已将 Transmit Queue size 的硬件配置更改为最大 32768 条消息,并将 Receive Latency 更改为非常快,但不幸的是错误再次发生。

有没有人有任何提示可以帮助解决这个问题,提前感谢。

【问题讨论】:

  • 是否有接收器?此外,“将队列大小传输到最大 32768 条消息”是无稽之谈,CAN 是实时总线,如果您有那么多消息未决,您将杀死所有实时消息。
  • 你能确认一下吗,例如通过观察跟踪窗口,每个总线的消息只出现一次?也许你在复制它们。
  • 您的 Mainip 网络节点同时存在于 CAN1 和 CAN3 总线上,CAN1 已收到一些消息,并且 Mainip 节点已将消息转发到 CAN3 上,直到这里一切正常。我建议你,检查接收器是否正确连接到 CAN3?检查 CANH 和 CANL 之间的 120 欧姆电阻!检查您的 CAN3 通道分配,检查 CANoe 中的波特率,您还可以显示跟踪吗?您还可以将 CAN3 分配给虚拟并查看错误消息是否被删除只是为了验证设置
  • CAN1收到一些消息,Mainip节点输出了CAN1和CAN3上的消息,这里可以使用output(CAN3.msgCAN3)
  • @M.Spiller 在跟踪窗口中,由其 ID 标识的每条消息都会在收到 (rx) 和重定向 (tx) 时出现。所以没有重复。

标签: can-bus capl canoe


【解决方案1】:

错误消息可能意味着 CANoe 尝试发送更多信息。发送缓冲区溢出。这可能有几个原因:

  • 总线上充满了高优先级消息,因此 CAN 硬件无法发送
  • 您有一个程序可以非常快速地将消息写入缓冲区,因此卡无法发送(while 循环)。
  • 发送时出现错误帧,因此卡无法发送。

Vector 工具提供循环测试:

从 CH1 向 CH3 发送消息。如果一切正常,则问题似乎是由您的 CANoe 配置引起的。

必要的测试程序是 Vector Driver Setup Files 的一部分,位于 Common 文件夹中。您可以从 www.vector.com/driver-setup 下载驱动程序设置文件。

CAN 高速环路测试:http://kb.vector.com/entry/589/

CAN 低速环路测试:http://kb.vector.com/entry/590/

如果循环测试工作正常,您可以看到时间、总线负载等。如果没有,您将收到一条失败的消息。

注意:

  • 减少CANoe/CANalyzer下使用的通道数:

    配置 | 选项 | 测量 | 一般 | 频道使用情况

  • CANoe 配置中的选定通道是否比矢量硬件配置中分配的 CANcab 多?

    开始 | 控制面板 | 硬件和声音 | 矢量硬件

  • 请检查 Vector Hardware Config 中的通道和应用程序分配。

【讨论】:

  • 此错误并不意味着 CANoe 尝试发送更多信息。而是意味着:我们在 CAN 总线上有(许多)错误帧。我已经添加了对此问题的回复
  • 这意味着“发送时出现错误帧,因此卡无法发送”。请为您的回答提供更多详细信息,“我说过”的陈述对任何人都没有帮助
【解决方案2】:

请检查 CANoe 中的硬件映射。当映射不正确或受到干扰时,通常会出现此错误。 转到硬件-> 网络硬件配置-> 驱动程序-> 为矢量硬件选择正确的通道

我希望这会有所帮助!

【讨论】:

  • CAN 总线上有很多错误帧。现在修复错误帧后可以正常工作了。
【解决方案3】:

所以这个错误并不意味着 CANoe 尝试发送更多。

这意味着: CAN 总线上有(很多)错误帧。 CANoe 尝试发送不起作用的消息(无论出于何种原因)-> 结果是错误帧。 CAN 控制器将重试发送可能再次导致错误帧的帧。现在,随着时间的推移,发送请求会累积并导致更多错误帧。在某些时候,错误帧的缓冲区确实会溢出,从而导致您在写入窗口中看到消息。

解决方案: 我们必须检查 Trace Window 并检查我们到达那里的错误帧类型(然后采取适当的措施来防止它们)。

【讨论】:

    猜你喜欢
    • 2022-01-28
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多