【发布时间】: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) 时出现。所以没有重复。