在汽车的世界里,各个控制模块之间的通信就如同人体的神经系统一样,任何一个环节的失误都可能导致整个系统的崩溃。因此,通信的稳定性和可靠性验证就成为了我们必须要面对的重要问题。lin(local interconnect network)作为一种基于控制器局域网的通信协议,广泛应用于汽车控制系统中。lin协议一致性测试可以确保所有相关的电子设备都能正常工作,从而防止由于软件错误或硬件故障导致的安全问题。在之前的文章中,我们给大家介绍了lin总线高效测试方案,今天我们来谈一谈如何实现lin多通道测试。
痛点
在lin的实际测试场景中,我们常常会遇到包含多个lin网段的主节点样件。在进行测试时,常规的操作是把这个lin件视为多个lin主节点样件进行测试。
假设现在要测试一个包含5个lin网段的样件,那么我们在测试的时候就需要将同样的测试规范,同样的测试步骤重复5遍。如果每次对一个lin主节点的测试需要2个小时,那么对这个包含5个lin网段样件的完整测试就需要测试人员在工作时间内每隔2小时进行一次操作,一天的时间浪费掉了。
假设我们实现了多通道测试,那测试人员仅需在下班的时候点击测试开始按钮,第二天上班就可以看到测试结果啦。
难点
有需求就有了动力。我们先来整理一下多通道测试需要工程代替测试人员实现什么。
同时测试五个网段对测试机柜和工控机要求很高,我们可以模仿测试人员把样件分成五个主节点测试。5个主节点就有5条lin线。因此我们的第一个需求就是实现工程代替测试人员自动切换lin线。
lin协议一致性测试可以大致分为物理层测试,通信层测试和网络管理测试3个部分。通信层测试和网络管理层测试对测试人员没有过多要求,这部分我们略过。物理层测试包含了lin信号电平,占空比等波形的测试和lin线容错的测试。因此我们的第二个需求就是需要实现工程代替测试人员在测试时切换示波器测试通道,第三个需求需要实现工程代替测试人员制造lin线短路断路等故障。
硬件的部分解决了,我们再来看看软件需要实现什么。测试规范是不变的,测试网段的内容是可变的,我们按照测试规范准备一份测试工程代码循环网段测试即可。第四个需求就是实现代码自动区分不同网段的测试输入资料。第五个需求便是实现循环网段测试。
金年会金字招牌信誉至上的解决方案
让我们来逐一实现需求。首先简单介绍一下怿星自研板卡eh6466。
eh6466 是一款 can/lin 测试板卡,分别支持 6 路独立的 can 和 lin 通道测试,能够接入示波器,万用表,vh6501等设备,能够设置各种 can/lin 总线故障,支持 can 管理控制。
1实现工程代替测试人员自动切换lin线。
这个部分可以通过eh6466实现。我们把样件的5条lin线分别通过机柜预留接口接到eh6466的5个通道上,通过can 管理控制实现不同网段的lin线接入测试环境。
2实现工程代替测试人员切换示波器测试通道。
canoe软件支持scope直接分析lin报文。但需要提前设置好测量的lin通道:
如果样件网段过多scope测量通道也会不够用。而我们在测试的时候既不能手动切换测量通道也不能通过内部函数实现切换。这么看来scope切换测量通道似乎不好实现。既然软件不支持那我们借助硬件解决。eh6466支持6条lin通道测试,现在我们在simulation setup中预留出lin6作为scope测量专用通道,同时将示波器的测量通道指定为lin6。每次调用scope测试的时候都通过eh6466控制将测试lin网段共享到lin6上,这样的话就可以在lin6上获取到测试lin的报文啦。
3实现工程代替测试人员制造各种lin线故障。
eh6466板卡可以完美解决这个问题。eh6466内置了故障注入模块。在测试的时候只需通过can 管理控制就能制造出lin线短路断路等故障。
4实现代码自动区分不同网段的测试输入资料。
不同的测试网段就需要不同的测试输入资料。常规操作是准备一份测试资料输入配置表project_lin,测试不同网段的时候由测试人员更改配置。现在我们来做个小改动。
首先按照网段名将测试资料输入配置表分为5份:
然后在测试工程中按照网段名新建5个系统变量:
最后在测试代码中,我们只需要提前指定测试通道(将对应通道的系统变量置1)就可以实现通过系统变量指定读取相应网段的测试资料输入配置表。
5实现循环网段测试。
这是多通道测试的核心部分。先正常实现一个网段的测试。
按照单网段测试的方式新建一个test moudles,加入提前准备好的.can和.vxt文件(.can文件为测试脚本,.vxt文件可以指定用例的测试执行顺序):
在实现第四个需求的时候我们将测试输入资料分成了5份,通过系统变量实现了读取不同网段的测试资料输入配置表,那么同样可以使用这个方法来区分不同网段。将test moudles复制5次:
canoe可以通过调用系统变量的方式实现模块之间衔接,我们可以借助这种方法实现循环测试。在配置testnode configuration的时候将system variable与不同网段的系统变量关联,并将其初始值设为0即可。
最后一步,在测试代码中确定测试顺序。我们可以通过将不同网段的系统变量置位实现。网段测试顺序由系统变量置位顺序决定,在测试开始之前将网段对应的系统变量置1,测试结束之后将网段对应的系统变量置0,下一个网段对应的系统变量置1:
这样做不仅可以实现各网段之间的衔接测试,还可以通过更改系统变量置位的方式实现固定网段的测试。到这里我们就实现了工程自动执行多通道测试啦。
方案核心
硬件
怿星自研eh6466板卡。本方案中5个需求有3个是靠eh6466板卡实现的。
1.通过eh6466板卡的6路独立can/lin通道实现不同网段的切换测试。
2.通过eh6466板卡的内部6路通道集连实现scope抓取不同网段报文。
3.通过eh6466板卡的故障注入模块实现lin短路断路等故障测试。
软件
canoe的使用。本方案中5个需求有2个是靠canoe系统变量调用实现的。
1.通过系统变量实现读取不同的资料输入配置表。
2.通过系统变量实现调用不同的test moudles模块。
成果展示
最后来看一下成果: