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 矢量硬件的正确通道
希望对您有所帮助!
我在 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 矢量硬件的正确通道
希望对您有所帮助!