作为 CanTp 协议相关测试的一部分,我一直在尝试测试N_As
和N_Ar
超时错误,其中N_AsMax = 1000ms
和N_ArMax = 1000ms
.
是否可以使用 CANalyzer 和/或使用 CAPL创建N_As
和超时?N_Ar
如果您可以分享一种使用 CANalyzer 或 CANoe 测试这些时序参数的可能方法,那将是非常有帮助的。
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 实现了必须显式启用的故障注入功能,以防止意外使用。激活后,可以在下一次数据传输期间执行的连接上设置特定故障。
我会敦促阅读它,并参考链接的文档。我希望这可以为您指明正确的方向。
附加信息: