APP下载

基于COTS的航天器CAN总线测试方案

2024-03-12李宏亮谭征

航天器工程 2024年1期
关键词:测试软件轮询航天器

李宏亮 谭征

(北京空间飞行器总体设计部,北京 100094)

控制器局域网(CAN)总线简称CAN总线,是一种串行通信协议总线,因其高可靠性、较低成本、高灵活性等特点被广泛应用于包括工业控制、机械制造、航空航天等工业领域[1-3]。近年来,随着微小航天器应用需求的不断攀升,为兼顾航天器数据通信需求和总体成本,越来越多的航天器选择使用CAN总线作为星载总线通信方案。

航天器CAN总线测试实现方法种类繁多,在硬件架构层面,基于现场可编程门阵列(FPGA)的总线通信方法被用于进行卫星CAN总线数据传输及星上运动机构、电源控制器等单机或部件的调试测试[4-6];基于单片机芯片模拟CAN总线通信节点功能,并用于小卫星CAN总线通信测试验证[7];利用嵌入式虚拟软件测试平台模拟CAN总线接口功能,也被用于航天器CAN总线性能测试[8]。某卫星微振动测量系统CAN总线测试中,通过数字信号处理(DSP)驱动CAN总线控制器芯片进行星地总线接口测试[9]。然而,上述测试方案的实现或依赖于高度定制化的工业机箱,或仅利用接口电路板进行接口调试,均无法胜任航天器密集综合电性能测试对测试设备集成度、可靠性、低成本的复合要求。由于国际标准化组织在ISO 11898-1标准[10]中仅规定了CAN总线物理层和数据链路层协议格式,对应用层数据格式并未作详细规定,各行业CAN总线测试软件对总线应用层数据格式的设计通常仅适用于自身特定工作任务,复用性较差;此外,航天器星务管理系统对节点间总线数据的轮询-应答实时性也有明确限制,须软硬件具备完善的适配性优化设计。

为解决上述问题,本文提出一种基于商用货架产品(COTS)CAN总线硬件模块和配合支持应用层数据格式动态配置的CAN总线测试软件,完成航天器CAN总线系统级测试的方案,该方案具有成本低、通用性好、设备规模小、测试接口易于与航天器综合测试系统集成等特点,可有效支持航天器CAN总线系统级测试实施。

1 航天器CAN总线架构及测试需求

航天器CAN总线网络通常采用双冗余总线网络结构,如图1所示,包括A、B两条总线,二者互为备份。每条总线均为双绞线,两条导线分别标识为CAN-H和CAN-L,数据信号在总线上传输时为差分信号,使CAN总线具有较强的抗干扰能力。为消除信号在总线末端反射带来的电压变化,每条总线两端均配置一个终端匹配电阻。各网络通信节点同时连接在A、B两条总线上,在任一时刻,主节点选择使用两条总线中的一条与从节点通信,从节点应答主节点使用的总线与主节点发送数据使用的总线保持一致。

图1 航天器CAN总线网络结构

航天器CAN总线是器上星务数据管理分系统进行星内、星间总线数据通信的物理基础,承担着总线数据传输的重要任务。航天器CAN总线功能、性能测试是整器综合电性能测试的重要内容之一。综合当前主流航天器平台任务类型,航天器CAN总线测试需求主要包括以下几方面。

(1)通信节点模拟。为验证航天器CAN总线设计,需要总线测试设备具备总线通信节点模拟能力。CAN总线通信节点的物理层和数据链路层功能由硬件模块实现,该部分功能虽有不同实现方式,但具有高度通用性,因此通常通过应用层数据协议的差异性作为CAN总线通信节点的区分方式。CAN总线测试设备需要具备对不同CAN总线应用层协议设计的适应性,通过灵活可调节的协议字段自定义配置能力,满足不同航天器的总线通信协议需求。

(2)总线数据处理。航天器总线测试设备是整器综合测试设备的一部分,除了面向航天器CAN总线实现必要的节点模拟功能外,另一重要作用是作为数据处理前端,对测试中获取的总线数据进行分析、处理,使之满足测试过程中的数据收发、数据查询、遥测解析、源码存储等测试需求。以遥测解析需求为例,由于CAN总线数据帧的数据域长度为8byte,当航天器遥测数据通过器地CAN总线接口下传时,整帧遥测数据(帧长通常远大于8byte)会分解到数个至数十个CAN总线数据帧中;为了满足综合测试总控数据服务的相关要求,需要总线测试设备具备与综合测试总控设备通信及总线数据解析、遥测拼帧、遥测数据转发、源码存储等诸多功能。为了满足在不具备整器加电的条件下可以实施相关测试设备调试的需求,CAN总线测试设备还需具备总线数据回放、数据格式自定义等功能。当总线测试设备作为主节点时,需按照规定的时间间隔向总线发出广播数据、轮询数据等,并可设置数据接收超时阈值,当发出需要从节点应答的数据后,在设定时间内准确接收从节点应答数据,如在设定的超时阈值内未正常收到应答数据,可自主进行通信过程处置;当作为从节点时,需按照规定的应答时间以规定数据格式正确应答主节点数据。

(3)总线数据监视及过滤。在航天器测试中实时获取当前工作总线上各节点通信数据,具备数据源码查询、存储等基本能力。为了区分星务总线数据中不同应用数据类型,通常将CAN总线数据帧中仲裁域部分进行自定义,常见的定义类型包括数据优先级、通信地址、帧类型、信息标识、帧序列标识等。为了在系统级测试中达到理想的数据监视效果,需要测试方案具备根据总线数据仲裁域自定义类型、星务时间进行实时和非实时数据过滤功能,以便于快速定位分析所需的特定数据类型。需要注意的是仲裁域数据的类型定义方式是根据不同航天器的特定工程任务专门制定的,不同航天器的仲裁域数据子域定义方式可能完全不同,要求测试方案具备适应航天器总线数据应用层协议格式、自定义数据子域的能力。

2 CAN总线测试方案设计

2.1 CAN总线测试设备系统架构

CAN总线测试设备硬件采用COTS CAN总线模块产品,已被封装为集成化、小型化工业设备盒,便于通过耳片、支架等配件上架集成。采用标准220V供电接口,无需专用直流电源供电。对外信息接口包括RJ45标准以太网接口和DB9串口,其中以太网接口用于硬件与上位机软件通信,串口用于硬件通过总线测试电缆与航天器上CAN总线节点通信。硬件模块集成了终端匹配电阻,可根据航天器上总线节点匹配电阻配置情况选择是否启用。

CAN总线测试软件采用功能模块方式设计,将软件的核心功能分解为数个功能模块,各模块功能相对独立。模块间通过特定接口函数传递数据,保证各模块功能封装的完整性和安全性。软件采用C++语言开发。

基于COTS的CAN总线测试设备架构如图2所示。测试软件共划分为6个功能模块,具体如下。

注:图中TCP/IP为传输控制协议/网际协议。

(1)设备管理模块,负责软件与硬件模块的通信,通过以太网接口控制硬件模块中的总线接口开关、初始化、复位、数据接收、数据发送等,并向软件传递硬件模块的运行状态信息。

(2)配置管理模块,通过配置文件方式管理软件的全部配置项,包括总控MTP通信相关配置、状态参数汇报相关配置、总线应用层协议字段相关配置、数据存储转发相关配置等。配置项动态管理是实现CAN总线测试设备适配不同航天器、不同应用层总线协议格式的核心。

(3)网络通信模块,负责软件的对外网络接口实现,建立与总控MTP、测试前端管理软件的网络连接,接收测试前端管理软件发出的控制命令并向其汇报自身状态参数;接收总控MTP发出的控制命令并向其转发处理后的总线数据,用于数据实时解析、显示、源码入库等测试服务。

(4)数据存储模块,负责对软件接收、产生的全部数据源码进行分类实时存储,按照工作总线、接收/发送、转发MTP等类别进行分类。

(5)显示/操作模块,实现总线测试软件的人机输入/输出交互界面,显示软件自身运行状态、数据收发情况、硬件模块状态等信息,对测试人员的操作进行响应。

(6)数据处理模块,是总线测试软件的核心功能模块。根据配置管理模块输入的配置信息,接收总线数据帧,完成数据识别、解析、数据重组;发送总线数据帧,根据总线应用层协议及配置信息,对接收到的特定总线数据按照协议规定格式进行应答。

CAN总线测试软件的对外信息交互接口为两个标准以太网接口,分别是与硬件模块的通信接口(图2中的网络接口A)和与总控主测试处理机(MTP)通信接口(图2中的网络接口B)。两个接口均采用TCP/IP协议,均为服务器/客户端模式。其中,网络接口A中,硬件模块为服务器端,CAN总线测试软件为客户端;网络接口B中,CAN总线测试软件为服务器端,MTP为客户端。

2.2 CAN总线COTS产品选用

航天器CAN总线测试的实现基于CAN总线硬件终端及适配硬件,遵循航天器CAN总线通信应用层协议的测试软件。总线硬件终端的核心单元是CAN总线控制器、总线控制芯片、总线驱动芯片,其性能直接决定了总线数据通信能力的高低。

CAN总线控制器的常见实现方式包括:CPU芯片控制器、基于FPGA的控制器、基于进阶精简指令集机器(ARM)架构微处理器的控制器等。工业界已形成较为成熟和全面的商用CAN总线测试产品线,为便于工业环境接口转换,商用CAN总线测试产品常见的总线转换接口包括:USB接口总线模块,外设部件互连标准(PCI)接口总线模块、高速外设部件互连标准(PCIe)接口总线模块、串口接口转总线模块、以太网接口转总线模块、Wi-Fi接口转总线模块等。

综合当前各类航天器产品的总体技术特点、整器研制周期和成本管控因素,航天器系统级测试对CAN总线测试设备的要求如下。

(1)支持各类型CAN总线协议,如标准CAN总线2.0A协议(标准帧格式)、CAN总线2.0B协议(支持扩展帧协议)、可变速率控制器局域网(CAN FD)协议(支持可变传输速率、支持更高数据负载)。

(2)支持总线数据格式自定义配置,以适应不同航天器总线应用层协议设计。

(3)支持总线数据快速处理,如某航天器CAN总线标准规定总线数据应答转换时间(主节点发送数据结束到从节点开始发送数据的时间间隔)不大于3ms,这对于测试设备数据实时性响应提出了很高的要求。

(4)设备鲁棒性高,需要测试设备对总线过载、阻塞等非常规情况具有较强的适应性和容错性,在总线通信异常后可通过复位、初始化等手段快速恢复正常工作状态。

(5)设备成本低,硬件接口丰富,软件可扩展性好。

结合以上设备需求,本文所述方案选择CAN总线COTS,主要有几项关键因素:一是转发延时尽可能小;二是具备便捷完备的二次开发接口;三是价格尽量低廉。第一方面主要从完成工程任务的技术角度考虑,第二、三方面主要从控制研制成本考虑(自研软件+采购费用低)。

从市面上可调研到的CAN总线模块产品来看,大部分产品均为USB转CAN产品,该类产品经过前期测试,已证明受限于USB总线传输速率,产品自身时延约为16~20ms,无法满足工程需求;从工程实践出发,选用以太网接口产品是接入综合测试系统的最佳接口。

GCAN-202[11]是可调研到的一款以太网转CAN总线产品,该产品可查询到的转发时延小于5ms,仅支持12V或24V直流供电,同时未提供明确的二次开发接口,难以满足工程需求;GY8505、GY8506系列以太网转CAN总线适配器[12]状态与GCAN-202类似,同样不支持工程需求。

在充分调研市场主流商用CAN总线模块产品后,本文提出的总线测试方案选择CANFDNET系列[13]以太网转CAN总线硬件模块(简称硬件模块)作为测试硬件设备,该产品具有较高性能的工业级数据转换能力,总线控制器采用FPGA架构,数据转发延时可低于2ms;同时将总线接口转换为标准以太网接口,便于设备以网络方式与航天器综合测试系统集成;该产品还提供丰富的接口函数库,便于使用人员进行二次开发。因此,综合技术、成本、接口等各方面因素,本文所选致远电子CAN转以太网产品是最优选择。

2.3 CAN总线测试软件设计

硬件模块作为总线通信物理终端,主要负责CAN总线网络中物理层和数据链路层通信。CAN总线测试软件则承担着CAN总线应用层功能的实现,是总线数据处理、协议格式转换、数据轮询应答、工作模式切换等应用任务的实现载体。

下文对总线测试软件中涉及通信节点模拟、总线数据处理、总线数据监视及过滤的3个关键功能实现方法进行介绍。

2.3.1 协议字段配置

应用层协议字段配置功能是实现CAN总线测试软件型号复用、协议格式动态配置的关键功能。协议字段配置本质上是对链路层数据帧格式中的仲裁域(由11位或29位标识符位和1位运程位组成)和控制域(由1位标识符扩展位、1位保留位、4位数据长度位组成)数据位按需进行配置管理。

CAN总线数据帧根据CAN总线协议有2种帧格式,即标准帧和扩展帧,分别具有11位仲裁域标识符和29位仲裁域标识符。本文所述测试软件按照支持扩展帧格式设计,可兼容标准帧数据格式。

不同航天器由于总体设计方面的原因,对总线数据帧仲裁域标识符位的用途划分具有很大的差异性,且各个型号的总线业务数据的种类和数量各不相同,CAN总线测试软件设计时无法预设固定格式满足不同型号需求。为解决这一问题,本文所述软件通过动态二维数组进行数据位管理。

假设某航天器须进行标识符配置的总线数据类型数量为M。在软件初始化过程中,将动态创建一个如图3所示的大小为M×29的二维字符串指针数组,数组的第二维大小为仲裁域扩展帧标识符位数。数组的第一维实际上是一组数量为M的指针,分别指向一块大小为29bit的内存块,用于存储当前编号对应总线数据帧的仲裁域标识符。软件配置文件中的数据标识符配置格式为IDX1_X2,其中X1、X2可分别取值自0~28的整数,用于标记标识符位置。扩展帧使用完整内存块,高位在前,低位在后存储;标准帧使用分配内存块的低11位,即18~28位存储标识符,第0~17字符置0。

图3 CAN总线帧仲裁域标识符位动态内存分配

2.3.2 快速轮询应答

轮询和应答是CAN总线通信中的两个重要过程。当总线上的主节点向指定从节点发出轮询数据后,从节点需在规定时间内向主节点发出符合卫星总线通信协议要求的应答数据。应答过程主要由两部分组成:应用层涉及轮询数据接收、轮询数据判别、应答数据组帧、应答数据发送等环节,主要由CAN总线测试软件完成;数据链路层和物理层要将处理完成的总线数据帧组成符合CAN总线协议的数据链路帧,并通过物理信道进行收发,这部分工作主要由硬件模块完成。二者共同配合实现一次数据轮询-应答过程。假设硬件模块完成一次数据接收和发送的时间(简称硬处理时间)为t1,CAN总线测试软件完成一次轮询-应答过程对应数据处理的时间(简称软处理时间)为t2,则完成一次轮询-应答过程的总时间为t1+t2。

由于航天器星务管理计算机需要处理大量数据,为了保证数据处理实时性,航天器CAN总线通信协议通常约定在主节点发出轮询数据后,从节点应在2~3ms内向主节点回复应答数据,否则将该次通信视为超时。这一实时性要求,对于运行在以消息响应为底层调度机制的非实时性操作系统上的应用软件来说,并不容易实现。

本文所述CAN总线测试方案选择的硬件模块,标称单次数据收发时延小于2ms;将硬件模块两路总线通道进行自环回,并通过厂商配套上位机软件数据时标比对,实测该时延约为1.928ms,即硬件时间t1为1.928ms。该时间已接近航天器CAN总线协议规定的轮询-应答时间窗口,需要测试软件对软处理时间t2进行充分优化,以保证单次轮询-应答过程的实时性满足要求。

以某航天器对外总线接口测试任务为例,器上星务计算机作为总线主节点,向作为从节点的CAN总线测试软件发出遥控数据轮询帧,以检查航天器对外总线接口工作状态。当从节点有待发送的遥控数据时,在从节点收到轮询帧后,发出生成的遥控数据;当从节点无待发送的遥控数据时,在从节点收到轮询帧后,发出固定格式的无遥控应答数据。CAN总线测试软件对上述数据轮询-应答过程的处理流程如图4所示。

图4 CAN总线测试软件轮询-应答处理流程

假设该航天器发出遥控轮询数据帧的周期是500ms。在该周期内,主节点有且仅有一次发出轮询数据,测试软件为保证不遗漏接收数据,将轮询-应答过程的处理放置于一个独立运行的线程中,循环调用数据接收函数进行数据接收操作。在单次循环中,如收到数据,以尽可能快的速度完成数据处理,发出数据,进入下次循环;如未收到数据,直接退出当前循环,进入下次循环,再次调用数据接收函数。为避免出现线程反复进出循环,导致软件大量占用计算机硬件资源的情况,在每次退出当前循环后,调用Sleep函数强制计算机CPU对该进程进行短时休眠,休眠时间参数设置为1ms。

一次数据轮询周期中的大量无效循环大大降低了测试软件的应答实时性,这是由于未对数据接收过程进行针对性判别导致。另外,操作系统的消息响应机制也难以保证将进程的单次休眠时间控制在毫秒量级。为此,通过分析软件-轮询应答过程的执行机制,进行以下3个方面优化。

(1)退出当前循环时,对本次循环中的接收数据计数、接收数据类型进行判别,当且仅当该次循环接收到有效数据且该数据是需要进行应答响应的遥控轮询数据帧时,才进行进程休眠操作,以减少大量无效循环的休眠耗时。

(2)设置遥控轮询应答帧接收次数统计,累计接收达到一定次数后,再进行进程休眠,进一步减少进程休眠耗时。

(3)启动数据接收线程时,将数据接收线程的执行优先级设置为最高级别(THREAD_PRIORITY_TIME_CRITICAL)。

针对流程优化前后的100次轮询-应答时间进行统计对比,统计结果分别如图5和图6所示。可以发现,流程优化前,由于频繁进程休眠且未对接收数据进行针对性判别,单次轮询-应答时间表现出明显的波动性,单次应答时间均值约为2.475ms,数据方差0.06161;流程优化后,单次轮询-应答时间稳定性明显增加,单次应答时间均值缩短为约2.006ms,数据方差0.01411,优化幅度明显。

图5 流程优化前轮询-应答时间统计(样本数100)

图6 流程优化后轮询-应答时间统计(样本数100)

2.3.3 总线数据过滤

CAN总线测试软件的另一重要功能是总线数据过滤。数据过滤条件通常根据当前卫星制定的总线数据格式指定。过滤条件设置字段除仲裁域的标识符位之外,还可以根据数据域内特定数据进行配置。过滤条件设置实现方法与软件配置功能相同,采用动态分配的二维数组保存。

相比于数据处理过程,数据过滤过程中需要考虑的因素除数据格式外,为便于精细化检查总线工作状态或进行故障诊断,需要精确知晓某个具体时间范围内的数据情况。

硬件模块收到总线数据后,会在每帧总线数据后添加8byte时标信息,该时标由硬件模块FPGA程序产生,精度可达到微秒级。然而,硬件模块产生的数据时间是相对时,其时间零点是硬件模块当次加电时刻,难以满足测试中通过UTC时间进行数据过滤的要求,因此必须进行时间转换。进行时间转换的难点在于,硬件模块总是先于测试软件启动的,总线测试软件无法获得模块启动的准确时刻。

为此,设计了如下时间转换方案。

(1)软件接收总线数据后会进行实时存储,记录收到第一帧数据的系统时间,并将该时间作为数据存储文件的名称。

(2)进行数据过滤时,读取需要进行数据过滤的源码文件,通过文件名称获取该文件生成时的系统时间Tfile_start,同时读取该文件的第一帧数据对应的时间标识码,获取该帧数据的硬件模块时标Tdelta;

(3)将硬件模块时标Tdelta换算为协调世界时间(UTC)时刻;

(4)通过文件生成系统时刻Tfile_start与硬件模块时标Tdelta的差值,计算得到硬件模块启动UTC时刻Tdevice_start;

(5)通过软件过滤条件中的起始时刻Tstart、终止时刻Tstop,分别得到上述两时刻相对硬件模块启动UTC时刻Tdevice_start的时间差值,比较数据帧时标与Tstart、Tstop、Tdevice_start的关系,得到期望时间段内的总线数据过滤结果。

3 应用效果

基于COTS的航天器CAN总线测试方案已成功应用于某型号航天器综合测试。图7展示了CAN总线测试软件的运行界面。COTS硬件模块通过总线电缆与被测航天器CAN总线测试接口连接,同时通过千兆以太网线与运行CAN总线测试软件的计算机连接。该计算机接入综合测试系统,总控主测试处理机(MTP)可通过设计的远程控制命令控制硬件模块开关、初始化、接口复位,也可控制总线测试软件进行总线通道切换、数据类型选择、测试接口选择等。图8展示的软件中的总线监视窗口可以根据选择的数据过滤条件和起止时间,进行实时数据过滤和历史数据过滤。型号测试应用表明:该方案软硬件协同运行实时性良好,数据通信无响应超时现象。

图7 CAN总线测试软件界面

图8 CAN总线测试软件数据帧过滤功能

硬件模块和CAN总线测试软件整体还作为被管理测试前端,接入航天器前端测试设备自动化管理系统[14],通过设计的程控命令和状态参数,可以实现设备远程自动化监控,支持航天器星地一体化自动化测试。

4 结束语

本文面向航天器CAN总线系统级测试,提出了一种基于COTS的通用化、低成本航天器CAN总线测试解决方案。该方案以COTS产品为硬件基础,自主开发CAN总线测试软件,并针对不同航天器CAN总线应用层数据格式差异、总线数据通信实时性优化、数据过滤时标转换等方面问题,实现了总线数据应用层格式动态配置、数据快速轮询应答、数据过滤时标精确转换等关键功能,具有硬件设备规模小、软件功能集成度高、适配自动化测试等特点,可为后续航天器CAN总线系统级测试的设计、实施提供参考。后续将开发CAN总线测试软件对CAN FD协议灵活数据长度的兼容功能,以进一步提升本测试方案对航天器CAN总线测试的支持能力。

猜你喜欢

测试软件轮询航天器
2022 年第二季度航天器发射统计
网络自适应测试软件运行方法设计
2019 年第二季度航天器发射统计
基于等概率的ASON业务授权设计∗
2018 年第三季度航天器发射统计
2018年第二季度航天器发射统计
自动化检测EPU10A板卡系统设计与实现
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
远程开放教育学生自主学习能力评价的研究