杨可
摘要:针对某航空交换机中CAN总线的测试,提出了一种自动化测试方法。首先描述了CAN总线的传输方案和功能要求,在此基础上介绍了自动化测试方法的实现架构,设计了针对功能和数据分析的测试流程,并详细介绍了针对各种功能的测试方法,最后通过在实际验证环境中的测试表明了该方法的正确性。
关键词:航空; 交换机; CAN总线; 自动化测试
中图分类号:TP336 文献标识码:A 文章编号:1009-3044(2016)05-0253-03
Abstract:Aiming at the test of CAN bus in one aviation switch, an automation test method is proposed. First describes the transmission scheme and function requirements of CAN bus. On this basis introduces the implementation architecture of automation test method. Then designs test process aiming at the function and data analysis, detailed introduces the test method for every functions. Finally, through the verify in the real environment shows that this method is correct.
Key words:aviation; switch ; CAN bus; automation test
1 应用背景
交换机是宽带网络中的核心部件,对满足航空电子系统对信息交换的需求起着关键性作用。[1]交换机的状态和性能影响整个航空网络的运行。在某FC网络中,为了在实时检测交换机状态的同时,又不影响交换机的正常交换功能,需要选择一种可靠性、实时性和灵活性高的总线[2]进行状态信息的传输。
CAN是一种多主从方式的串行数据通信总线,传输速率高,抗电磁干扰性强,能检测通信错误。作为一种技术先进、可靠性高、功能完善、成本合理的网络通信控制方式已被广泛应用到各个自动化领域。[3]CAN总线满足交换机状态信息传输的要求。
本文在分析CAN总线特点的基础上,描述了某FC网络中CAN总线的传输方案,根据传递的各种信息的要求,设计了一种自动化的测试方法。该测试方法在测试CAN总线是否满足功能要求的同时,自动对测试的结果进行解析、比对和显示。
2 CAN功能分析
2.1 CAN总线特点
CAN总线通信协议中,没有节点地址的概念,也没有任何与节点地址相关的信息存在,它支持的是基于数据的工作方式。[4]
在CAN总线中,数据以数据帧的格式进行传输。CAN数据帧由7种不同的位域组成:帧起始、仲裁域、控制域、数据域、CRC、应答域和帧结束。CAN网络中有4中不同类型的帧:数据帧、远程帧、错误帧和过载帧。[5]
2.2 传输方案
在本交换机中,使用可编程器件FPGA实现数据的交换功能,同时实现对交换机运行信息的检测和记录。FPGA中设置版本处理单元、工作状态处理单元和工作时间处理单元来处理版本信息、工作状态信息和工作时间信息。
版本处理单元:将版本信息进行存储和发送,版本信息包括交换机软件和逻辑版本,用于指示交换机的软硬件版本是否为最新状态;
工作状态处理单元:将收集到的状态信息进行转化、存储和发送,工作状态信息包括核心FPGA的实时温度和交换机的关键电压信息,用于检测交换机的温度和电压是否超出了允许的工作范围;
工作时间处理单元:对交换机的工作时间信息进行维护和上报,工作时间信息包括单次加电时间和累计加电时间,用于指示交换机是否正常工作以及正常工作的总时长。单次加电时间掉电清零,累积加电时间需要掉电保存并在上电时继续累加。
由于交换机信息已经超出了CAN总线标准数据帧的长度,使用扩展数据帧进行信息传输。在本设计中使用MCU实现CAN数据帧的解析和收发。根据CAN总线主从方式的特点,使用查询+应答的模式进行通信。
对于版本信息,使用版本查询和版本应答两条命令。对于工作状态信息,使用状态查询和状态应答两条命令。对于工作时间信息,使用加电时间查询和加电时间应答两条命令,为了防止计时寄存器溢出,使用加电时间清零命令将工作时间进行清零。同时使用复位控制命令在交换机出现异常时控制交换机进行复位,该复位不清除累计加电时间。
3 测试方法设计及验证
3.1 测试方法设计
基于标准测试设备的测试能完整的捕获、解析并显示CAN数据包中的信息,在前期验证中可以方便的定位故障,其缺点在于需要手动输入测试命令。
为了使交换机在等效的真实环境中完成CAN总线传输的测试,将测试部件设计成一个总线节点,模拟总线上除待测节点外的其他节点,成为模拟器或等效器,和待测节点通信,并把接收的数据上传处理,实现测试功能。[6]
使用带嵌入PPC440处理器的可编程器件FPGA实现模拟CAN命令发送和解析的测试节点,测试节点的实现框图见图2。由FPGA通过逻辑实现CAN协议的处理和CAN数据的收发,由PPC440处理器通过测试程序控制CAN命令的收发和测试结果的显示。这样既能完成CAN命令解析,又能自动发送命令进行全部CAN功能测试。
为了使设计的自动化测试方法同时满足功能测试和数据分析的要求,测试节点上运行的测试程序需要根据CAN功能测试的结果自动进行选择。测试程序首先判断是否执行数据分析,如果是,执行分支A,则循环将获取的状态信息进行显示。否则执行分支B,开始测试各种功能,如果测试正确则循环执行功能测试,如果测试错误则执行数据分析。测试程序流程图如图3所示。
版本数据显示:使用版本查询命令获取交换机的软件和逻辑版本,将读取到的数据直接打印出来;
工作状态数据显示:使用状态查询命令获取实时温度和关键电压,将读取到的数据直接打印出来;
加电时间数据显示:使用加电时间查询命令获取单次加电时间和累计加电时间,将读取到的数据直接打印出来;
复位功能测试:使用复位控制命令可以清除单次加电时间。在计时一段时间后使用加电时间查询读取单次加电时间,然后发送发送复位控制命令,随后再次发送加电时间查询命令。第二次读出的单次加电时间值应该比第一次的时间值小,根据对比的结果判断复位功能是否正确;
工作状态获取功能测试:使用状态查询命令获取实时温度和关键电压。对比实时温度是否在允许的工作范围内且随着时间逐渐增大,对比关键电压是否在预期电压的允许范围内,根据对比的结果判断工作状态获取功能是否正确;
版本获取功能测试:使用版本查询命令获取交换机的软件和逻辑版本,对比读取到的版本是否与最新的软件和逻辑版本一致,根据对比的结果判断版本获取功能是否正确;
加电时间功能测试:使用加电时间查询命令获取单次加电时间和累计加电时间,在计时一段时间后再次使用加电时间查询命令获取时间值,第二次读出的加电时间值应该比第一次的时间值大。随后发送加电时间清零命令,然后使用加电时间查询命令获取时间值,第三次读出的加电时间值应该比第二次的时间值小。根据对比的结果判断加电时间功能是否正确。
3.2 验证
搭建测试环境对设计的测试方法进行验证,测试环境见图4。直流电源分别给交换机和CAN测试节点供电,交换机和CAN测试节点间通过CAN电缆进行通信,按照图3的测试流程图执行测试程序,测试的结果通过串口线送给PC机进行显示。
通过测试可以看出,该测试方法可以完成功能测试和数据分析的要求。
4 总结
本文设计的自动化测试方法在测试功能正确性的基础上,自动对测试的结果进行解析、比对和显示。测试结果表明该方法适用于航空交换机CAN总线节点的测试,为同类应用提供了一个值得借鉴的解决方案。
参考文献:
[1] 罗海荣,罗庆,陈晓晨. AFDX交换机测试分析系统设计[J].飞机设计,2014,34(3):59-62.
[2] 黄勇. CAN总线在航天领域的应用[J].电讯技术,2005(5):172-174.
[3] 徐榕,何首文,朱昌明. CAN总线网络测试研究[J]. 微型机与应用,2010,29(22):55-57.
[4] 冯源,向桂林,李军. 基于C8051的冗余CAN总线智能节点设计[J]. 航空计算技术,2008,38(5):107-111.
[5] 王邦继,刘庆想,李相强. CAN总线应用层协议的研究与实现[J]. 计算机工程与应用,2011,47(20).
[6] 王海瑞,翟成瑞,王红亮. 基于FPGA的CAN总线通信事务的现场测试系统设计[J]. 科学技术与工程,2013, 13 (30):9078-9082.
[7] 程跃,康劲松,徐国卿. 一种车用CAN总线网络测试系统的研究[J]. 电气应用,2008,27(1):83-86.