基于CVI的以太网和CAN总线传输
扫描二维码
随时随地手机看文章
引言
以太网(Ethernet)协议是当今现有局域网采用的最通用的通信协议标准,使用的是CSMA/CD(载波监听多路访问/冲突检测)的访问控制方法。CAN总线(ControlAreaNetwork,控制器局域)是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,使用的是CSMA/CA(载波监听多路访问/冲突避免)的访问控制方法。二者的主要区别在于对通信冲突的处理方式不同,从而决定了网络性能的不同。为实现方便快捷地对百兆/千兆以太网及CAN总线数据传输质量进行测试,并对相关的协议栈进行解包分析,本文给出了一种能够直观、快速地检测传输质量的测试系统设计方法。
1 系统整体设计构成
该系统是一种以太网、CAN总线数据传输质量及协议的测试分析系统,它能够实时监控测试正在运行中的网络参数和运行状态,可监控网络利用率、传输速率、帧速、帧大小等,并进行数据分析、协议分析和误码分析等。由于要求系统具有速度快,可靠性高,实用性强等特点,因此其硬件设备主要为两套PXI系统和两套连接PXI系统及控制计算机的PXI控制器。软件系统则是一套系统测试软件(Windows操作系统平台),可以包含所有设计的测试项目。
2 测试原理
本测试系统主要分为以太网测试和CAN总线测试两部分。但测试原理类似,均有端对端测试和环回测试两种测试模式。
端对端测试必须使用两套测试系统来组成如图1所示的测试链路。测试数据从测试仪I发出,经被测链路传输到测试仪Ⅱ上。在测试仪Ⅱ上,用户手动输入与测试仪I发出的测试数据和相同的参数设置,测试仪II接收到数据后,即可进行处理分析。
环回测试通常使用一台测试仪来与被测链路另一端进行环回连接。图2所示是其环回测试系统原理图。测试数据由测试仪产生后,即发送至被测链路。在被测链路另一端,则通过环回连接再次经过被测链路返回至测试仪,测试仪接收到后,即可进行自动分析与处理。
3 系统软件设计
软件设计是该测试系统设计的核心。软件功能最能体现系统的特性,其结构和用户界面设计的好坏直接影响着整个系统的性能指标。本系统采用Lab-Windows/CVI9.0为软件开发平台,CVI是NI公司针对测控领域推出的交互式C语言开发环境,具有很强的数据处理和分析功能,且与NI硬件驱动的整合能力较高。
测试系统分为以太网测试子系统和CAN总线测试子系统两部分,两个子系统使用不同的硬件设备和独立的软件程序。
3.1 以太网测试软件设计
以太网报文的组建和解包分析是整个以太网测试子系统软件设计的重点和关键。由于常规的以太网通讯中,用户接收到的或要发送的只是应用数据,而不是完整的以太网报文(一个完整的以太网报文由帧头、协议头部和应用数据构成),而且整个通讯过程不受用户支配,通讯中间若出现错误报文会被通讯软件丢掉。针对这一情况,本系统使用WinPcap技术进行通讯。对于四层网络结构来说,WinPcap技术可以穿过应用层、传输层和网络层,直接在数据链路层捕获或发送原始报文数据,因而可以控制整个通讯过程,校验每一帧报文,以确保对以太网链路测试的正确、有效。
以太网子系统由以下模块构成:报文结构定义及形成模块、测试配置模块、报文发送模块、误码插入模块(人为插入误码)、报文捕获模块、报文分析和统计模块、误码分析模块、数据显示模块、数据存储与还原模块和测试报告形成及打印模块。根据测试模式和测试端的不同,测试系统工作时可以调用不同模块来实现测试功能。其以太网测试程序结构图如图3所示。
在以太网测试的各个模块中,报文结构定义及形成模块、报文分析与统计模块和误码分析模块是核心模块。报文结构定义与形成的工作就是把应用数据一层层封装,添加协议头部和帧头,最终形成一个完整的以太网帧;报文分析的工作流程则相反,它把一个完整的报文层层剥离,剥离帧头和协议头部得到应用数据;误码分析的工作流程是校验每一层的协议头是否正确,并对应用数据用对比法进行校验,以判断这帧数据是否错误,有没有发生误码。
判断以太网帧有无发生误码,以及对各协议头部和数据进行校验所用的校验和程序如下:
3.2 CAN总线测试软件设计
CAN总线做为一种现场总线,在同一时刻只能有一个设备发送数据,该总线使用一系列显性电平和阴性电平作为数据的载体。鉴于这一情况,可以使用CAN总线卡的两个端口做为发送端和接收端(在环回模式时用同一个端口做为发送端和接收端)在被测链路上传输约定的测试数据和帧数,并使用NI5122示波器卡采集、测量CAN总线上的信号,最后把两种数据综合起来分析CAN总线的传输质量。CAN总线子系统由以下模块构成:CAN帧定义与形成、CAN设备获取、测试配置、CAN帧发送、CAN帧接收、数据分析、误码统计、数据显示、数据存储与还原、物理信号采集和测试报告形成与打印等。
CAN总线测试的测试数据釆用8级伪随机码,它具有类似白噪声的相关特性,故在通讯系统中被广发采用。使用线性同余算法计算8级伪随机码序列的公式如下:
该公式主要用递归方法得到模除后的伪随机数,从X(0)到X(n),每一项都只依赖于前面一项,一般地,X序列将产生m个不同的数,然后重复。其程序代码如下:
其中,RANDA.RANDC和RANDM使用的宏定义值分别为113,11和256。
4 结语
本系统是选用PXI系统及PXI总线的模块化仪器,配合自行开发的软件,可以实现对以太网和CAN总线数据传输质量的测试分析。通过实验证明,该系统配置优良,性能满足技术需求,同时具有可靠性高,实用性强,操作简单,维护方便等特点。