在自动化开发中,无论是CAN通信测试,还是网络管理测试,亦或是休眠唤醒等等存在时间相关的,都可能会使用相关的时间函数;今天主要介绍的就是获取当前时间,我们知道vector工具的最大优势就是稳定和精确度高,这体现在我们使用工具的方方面面,今天我们来介绍的就是获取的运行的相对时间,包含10微秒级和纳秒级,下面我们就来看下CAPL都提供哪些获取当前时间函数吧!
10微秒级
timeNow
返回值:10ms级的CANoe工程启动到执行到该函数的时间;整数类型
常见用法:time_now_ms = timeNow()/100, time_now_ms就是CANoe启动到执行到该行的运行时间,单位为ms,一般来说大部分测试达到满足毫秒级即可,极个别需要精确到微秒甚至纳秒的时候我们才会使用其他方法。
timeNow:time_now_ms的最大值:2^32*10微秒=11小时55分钟49秒672毫秒96微秒;如果是长时间压力测试的时候使用该函数需要注意处理最大值,以免测试结果的误判。
timeNowint64:如果是长时间压力测试的时候建议使用该函数。
timeNowFloat
返回值:10ms级的CANoe工程启动到执行到该函数的时间;浮点类型
常见用法:time_now_ms = timeNow()/100, time_now_ms就是CANoe启动到执行到该行的运行时间,单位为ms,一般来说大部分测试达到满足毫秒级即可,极个别需要精确到微秒甚至纳秒的时候我们才会使用其他方法。
如果是长时间压力测试的时候使用该函数需要注意处理最大值,以免测试结果的误判。
timeDiff
message:CAN报文 例如:message 0x100 msg;则msg就代表报文ID为0x100的报文,msg.dlc即为报文0x100的长度都可通过msg.xx进行设置(FDF/BRS/R0/R1等等参数),设置内容函数MessageTimeNS中的message介绍。
NOW:当前时间
返回值:报文m1到当前的时间差或者报文m1和报文m2之间的时间差。
单位:10微秒
diff = timeDiff(m100, now);
diff = this.time - m100.time;
//this代表当前时间
纳秒级
timeNowNS & timeNowInt64
返回值:纳秒级的CANoe工程启动到执行到该函数的时间;整数类型
常见用法:time_now_ns =timeNowNS(), time_now_ns就是CANoe启动到执行到该行的运行时间,单位为ns,这里函数能够满足纳秒级的测试,满足更加精确的时间精度。
如果是长时间压力测试的时候使用该函数需要注意处理最大值,以免测试结果的误判。
MessageTimeNS
message:CAN报文 例如:message 0x100 msg;则msg就代表报文ID为0x100的报文,msg.dlc即为报文0x100的长度都可通过msg.xx进行设置(FDF/BRS/R0/R1等等参数)
message 100 msg;
msg.DLC = 1;
msg.BYTE(0) = 0xff;
output(msg);
linFrame:LIN报文 参考上面
以报文为参数,其中包含CAN报文或者LIN报文,返回值为CANoe启动到当前函数的时间,单位为纳秒,精度相当的高,这个主要用于检查特定报文出现的时间,比如检查Autosar网络管理中的的重复报文出现的时间和时间差,可直接用当前函数去获取并进行检查。
以上是我们在使用CAPL编程中常用的获取当前时间和或者时间差函数!!!