目录
ChkStart_PayloadGapsObservation
代码示例
ChkStart_PayloadGapsObservationTx
代码示例
ChkStart_PayloadGapsObservationRx
代码示例
我们在做CAN&CANFD通信或者CAN&CANFD网络管理的时候,就会测试到DBC中报文各种信号和位的使用状态,今天主要是对dbc中未使用信号位的测试,我们如何完成这种测试呢?下面我就来详细的介绍一下。
对于某一个报文中未使用位的值是否能够与测试目标需求一致,我们可以使用ChkStart_PayloadGapsObservation函数进行验证;如果是想要检查某个节点中所有的发送报文或者接收报文的未使用位是否与测试目标需求一致,则可以使用ChkStart_PayloadGapsObservationTx、ChkStart_PayloadGapsObservationRx函数,下面我会进行详细的介绍。
ChkStart_PayloadGapsObservation
功能:检查消息的有效负载间隙和 DLC。
如果有效负载间隙与指定的默认位值不匹配或 DLC 与数据库的指定 DLC 不匹配,则违反检查条件。
带有参数 aMessageId 的数字函数/构造函数不能用于 FlexRay。 而是使用带有参数 slotID 的数字构造函数(只能应用于 FlexRay 总线)。对于 FlexRay,仅将有效数据帧和 PDU 识别为通信,忽略空帧和错误帧。
说明:根据所使用的参数类型,如果相应的数据库对象不明确,则只需在调用函数之前设置多总线环境中的适当总线上下文。
aMessage:存在于dbc数据库中的message报文
defaultBitValue:有效负载间隙必须具有的默认位值
aCallback:该参数必须在仿真节点中指定; 它在测试模块中是可选的。
aMessageId:需要检测的报文ID, 相应的消息应在数据库中定义。
slotID:该数字指定特定的 FlexRay 插槽,它的值必须在 1 到 2047 之间。
cycleOffs:该数字表示基本周期,该值必须小于重复因子,并且范围在 0 到 63 之间,该值与重复因子一起确定 FlexRay 帧的“循环复用”。
cycleRep:该值必须介于 1 到 64 之间,并且是 2 的倍数(例如 1、2、4、8、16、32 或 64),该值与基本周期一起确定 FlexRay 帧的“周期复用”。
channelMask:标识通信控制器的 FlexRay 通道。 值 1 将检查通道 A 上的帧,值 2 将检查通道 B 上的帧,值 3 将检查任何通道 (A/B) 上的帧。
返回值:
0:无法创建支票且不得引用(数据库中不存在指定的消息对象)
> 0:检查已成功创建,可以使用返回的(句柄)值进行引用。
代码示例
// 检查消息的有效负载间隙
checkId = ChkStart_PayloadGapsObservation(MsgToObserve, 0);
TestAddCondition(checkId);
// 不同动作和等待条件的序列
TestWaitForTimeout(1000);
TestRemoveCondition(checkId);
ChkStart_PayloadGapsObservationTx
功能:检查节点所有 Tx 消息的有效负载间隙和 DLC。
如果有效负载间隙与指定的默认位值不匹配或 DLC 与数据库的指定 DLC 不匹配,则违反检查条件。
说明:根据所使用的参数类型,如果相应的数据库对象不明确,则只需在调用函数之前设置多总线环境中的适当总线上下文。
aNode:节点必须存在数据库中
defaultBitValue:有效负载间隙必须具有的默认位值。
aCallback:该参数必须在仿真节点中指定; 它在测试模块中是可选的。
返回值:
0:无法创建支票且不得引用(数据库中不存在指定的消息对象)
> 0:检查已成功创建,可以使用返回的(句柄)值进行引用。
代码示例
// 检查消息的有效负载间隙
checkId = ChkStart_PayloadGapsObservationTx(NodeToObserve, 0);
TestAddCondition(checkId);
// 不同动作和等待条件的序列
TestWaitForTimeout(1000);
TestRemoveCondition(checkId);
ChkStart_PayloadGapsObservationRx
功能:检查节点的所有 Rx 消息的有效负载间隙和 DLC。
如果有效负载间隙与指定的默认位值不匹配或 DLC 与数据库的指定 DLC 不匹配,则违反检查条件。
说明:根据所使用的参数类型,如果相应的数据库对象不明确,则只需在调用函数之前设置多总线环境中的适当总线上下文。
aNode:节点必须存在数据库中
defaultBitValue:有效负载间隙必须具有的默认位值。
aCallback:该参数必须在仿真节点中指定; 它在测试模块中是可选的。
返回值:
0:无法创建支票且不得引用(数据库中不存在指定的消息对象)
> 0:检查已成功创建,可以使用返回的(句柄)值进行引用。
代码示例
// 检查消息的有效负载间隙
checkId = ChkStart_PayloadGapsObservationRx(NodeToObserve, 0);
TestAddCondition(checkId);
// 不同动作和等待条件的序列
TestWaitForTimeout(1000);
TestRemoveCondition(checkId);
以上3个是我们常见的3种类型的未使用位的检测,包括:发送节点的未使用位检测、接收节点的未使用位检测以及特定报文的未使用位的检测;这就涵盖了我们所有的需要检测的情况,只需要我们将需要检测的节点或者ID只需要加入到检测事件中,然后将默认值填入即可,这样就能够检测我们需要的未使用位的检测,接收的报文将会与dbc对比检测。然后给出检测结果。
variables
{
dword checkId;
}
void MainTest ()
{
BGCheck_UnusedBits();
}
testcase BGCheck_UnusedBits() // 报文的未使用位检测
{
checkId = ChkStart_PayloadGapsObservation(message_1,0); // 检查报文的未使用位值是否为0,函数的第一个参数为需检查报文的名称,第二个参数为未使用位期望的数值
TestAddCondition(checkId);//添加检测条件,若报文未使用位的数值不满足要求,则会在报告中记录下来
TestWaitForTimeout(10000); //持续检测10s
TestRemoveCondition(checkId);//移除检测条件
}