TransmitCANFrame 中的驱动程序错误 11 XL_ERR_QUEUE_IS_FULL

Driver error 11 in TransmitCANFrame XL_ERR_QUEUE_IS_FULL

我在 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 也非常快,但不幸的是错误再次发生。

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

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

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

中看到的消息

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

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

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

Vector工具提供循环测试:

从 CH1 发送信息到 CH3。如果一切正常,那么问题似乎是由您的 CANoe 配置引起的。

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

下载驱动程序安装文件

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

CAN Low-speed 回路测试:http://kb.vector.com/entry/590/

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

注:

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

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

  • 在 CANoe 配置中选择的通道是否多于在矢量硬件配置中分配的 CANcabs?

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

  • 请检查矢量硬件配置中的通道和应用分配。

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

希望对您有所帮助!