-1

作为 CanTp 协议相关测试的一部分,我一直在尝试测试N_AsN_Ar超时错误,其中N_AsMax = 1000msN_ArMax = 1000ms.

是否可以使用 CANalyzer 和/或使用 CAPL创建N_As和超时?N_Ar如果您可以分享一种使用 CANalyzer 或 CANoe 测试这些时序参数的可能方法,那将是非常有帮助的。

4

1 回答 1

1

CanTP 是一种将任何给定 CAN 数据帧的最大数据长度(以字节为单位)扩展超过传统 8 字节的协议,请参阅 ISO 15765-2。在这里,您可以拥有单帧或多帧,它们是相关帧的序列,每个帧都承载整个 PDU 的一部分。流量控制帧通常由接收方发送,以寻址和指示发送方使用的协议用于帧拆分。

根据文档

N_Ar[是] 在接收端传输 CAN 帧(任何 N-PDU)的时间(参见 ISO 15765-2)

N_As[是] 在发送方传输 CAN 帧(任何 N-PDU)的时间(参见 ISO 15765-2)。

此外,以下要求是相关的:

[SWS_CanTp_00075] ⌈如果在最长时间(等于 N_As)后仍未收到发送确认,CanTp 模块应像收到不成功的发送确认一样行事,任何迟到的确认都应忽略。CanTp 模块应(在内部)取消失败的传输。⌋ ( )

[SWS_CanTp_00311] ⌈如果发生 N_Ar 超时(CAN 驱动程序没有确认发送的任何 FC 帧),CanTp 模块将中止接收并通过调用指示函数 PduR_CanTpRxIndication() 通知上层此失败,结果为 E_NOT_OK . ⌋ ( )

回到你的问题:

是否可以使用 CANalyzer 和/或使用 CAPL 创建 N_As 和 N_Ar 超时?

是的,通过osek_tp.dll您应该在本地 CANoe 安装中的文件(我使用的是 CANoe v10.0)。帮助文档AN-IND-1-012_CAPL_Callback_Interface.pdf中详细记录了如何使用它的示例,同样它应该分布在您的 CANoe 安装文件夹中。

根据该文件,

基本上,OSEK_TP.DLL 实现了必须显式启用的故障注入功能,以防止意外使用。激活后,可以在下一次数据传输期间执行的连接上设置特定故障。

我会敦促阅读它,并参考链接的文档。我希望这可以为您指明正确的方向。

附加信息:

于 2020-03-18T09:16:39.583 回答