技术博客

15/11/2024 作者 Adam Raymer

如何使用Memorator Pro的触发器功能分割日志文件以便于提取数据

当你需要记录大量数据时,一次性全部提取这些数据是一项繁重的任务。根据数据量的大小,一台PC可能需要花很长时间来处理所有的记录。那么,有没有办法使用Kvaser Memorator按时间分割日志,保持日志的顺序,并允许你提取某一记录时限内的数据呢?答案是:有!

通常你需要等待提取过程结束后再将日志分割成单独的文件。有时停止记录并重新开始在SD卡上创建新条目可能更方便。本文将讨论如何实现它。

我们将在Memorator Pro上使用触发器。基本触发器可在Kvaser Memorator 2xHS v2Kvaser Memorator Pro 2xHS v2Kvaser Memorator Pro 5xHS 上使用和访问。在本例中,我们会将日志按每两分钟的记录间隔进行分割。

第一步,从Windows开始菜单中打开Kvaser Memorator配置工具,然后选择你使用的Memorator。连接你的Memorator。必要时将Memorator时钟与系统同步,并进行磁盘维护(例如初始化或格式化)。

前往Kvaser Memorator配置工具左侧,在日志配置项下即可使用触发器。你可能需要取消勾选“Log Everything – the triggers are disregarded but the filters are still used”。如果勾选了该复选框,你创建的所有触发器都无法使用。该复选框默认勾选。

取消勾选“Log everything – the triggers are disregarded but the filters are still used”后,前往触发器。我们将在此创建两个触发器:一个在两分钟后停止记录,另一个重新开始记录。

在“Triggers”目录中,单击“Add”以创建一个新触发器。

你可以给触发器贴上任何你喜欢的标签。在本例中,“PowerOn”就很合适。然后,你可以选择默认的通道。

最后,协议可以设置为“None”(原始CAN数据)或“J1939”(J1939格式)。

在下一屏中,我们需要选择/define what the trigger reacts on。

对于PowerOn触发器,我们希望在出现特殊事件时触发,即在Memorator接通电源时启动。

在特殊事件用例中,我们希望Kvaser Memorator Pro 5xHS 启动。选择“Start Up”后,单击“OK”,然后单击“Next”。

在最后一个屏幕中,检查触发器,如果满意,单击“Finish”。现在该创建第二个触发器了。

创建第二个触发器的过程以同样的方式开始。创建触发器名称、读取触发器信息的通道,以及协议。在本例中,我们可以使用“Periodic”这一名称,因为它将创建一个两分钟的计时器。准备就绪后,单击“Next”。

下一步你需要创建一个Timer Event触发器。

你希望Periodic触发器计数120秒,并在完成后重新开始。将秒数设为120,然后勾选“Activate the timer cyclic”复选框,这样计时器就会重新开始。

在“Set trigger timeout”屏幕中,我们希望触发器运行但不保持激活状态。我们希望计时器启动一次,完成后立即停止,以便再次触发。单击“Next”继续。

单击“Finish”以完成触发器。现在我们有了两个触发器,分别是PowerOn和Periodic。这两个触发器一起工作,记录120秒(两分钟),停止记录,然后再次开始记录。

要使两个触发器协同工作,需要创建一个表达式来解释触发器之间的关系。在“1st Expression”字段中,键入(PowerOn|Periodic)。动作将是StartLogging。触发后,Post触发器将告诉触发器在119000毫秒(119秒)后停止。Post触发器的时间需要比Timer Event触发器(在本例中为名为“Periodic”的触发器)的时间稍微短一些。

连接电源后,Memorator将启动。PowerOn将触发,Periodic触发器的计时器将开始倒计时。由于PowerOn触发,设备将开始记录数据。记录119秒后,Post触发器时间将导致记录停止。一秒后,Periodic触发器计时器开始倒计时,触发为真,设备将再次开始记录。Post触发器时间和Periodic触发器将继续循环停止和开始记录的过程。

停止记录并重新开始记录的操作会在日志文件下的日志列表中创建新的日志文件。
如果需要不同的时间间隔怎么办?你可以随时更改Timer Event触发器时间和Post触发器时间。请记住,Timer Event的单位是秒,而Post触发器的单位是毫秒。如果你想要一小时长的间隔,Timer Event的触发时间应为3600秒,Post触发器时间应为3,599,000秒(比Timer Event少一秒)。

现在所有设置都已完成,你可以将配置下载到Memorator。

现在,当Memorator进行日志记录时,它会记录两分钟,然后停止记录,创建新的日志条目,并再次开始记录。提取数据时,你会看到多个日志文件,每个文件长五分钟。这样,你就可以选择某个时间段来提取日志,而不是从会话中提取整个日志,再将日志分割成若干段。

这种方法的缺点是,日志停止和重新启动时会有大约1秒钟的延迟。在此期间,数据会因设备未记录而丢失。如果你确实有大量数据需要记录,并且正在寻找一种更简单的提取方法,这仍然是一个不错的选择。

Author Image

Adam Raymer

Adam Raymer是Kvaser AB公司的一名现场应用工程师,位于美国底特律附近。Adam定期与客户保持良好沟通,是我们全球支持团队中的活跃成员之一。