, ,,,
(北京空间飞行器总体设计部,北京 100094)
MIL_STD_1553B总线为一种广泛应用于航天器中的数字式时分制指令/响应型多路传输数据总线,具有较高的可靠性和实时性[1-2]。在传统的美国军用标准中,只提供了构造最大64 byte的消息交互服务,而并没有提供更加复杂的数据结构处理和数据流控制方法来实现更高层的通信和同步服务[3]。2008年,ECSS(European Cooperation for Space Standardization,欧洲空间标准化组织)在美军标的基础上,提出了一种基于时间同步的1553B总线通信协议标准。这种协议提供了更上层的接口服务,能够有效简化总线配置,实现总线资源的均衡分配和合理控制。目前这种通信协议已在我国多个遥感卫星型号中得到了应用,并在后续型号中持续推广。
在我国现有的航天器中,星上数据管理系统计算机常常作为星上1553B总线控制器(Bus Controller,BC),而为了验证其功能正确性,总线终端(Remote Terminal,RT)仿真是测试中经常使用的方法[4-5]。ALTA、Condor等商用总线仿真卡配套的仿真软件都可以实现基本的RT仿真功能。航天型号中常常通过对仿真卡进行二次开发来完成航天器型号测试,但是由于这些仿真软件缺少对上层通信协议的模拟,在应用基于时间同步1553B总线通信协议的型号中进行测试会遇到诸多困难[6-8]。
本文在对基于时间同步的1553B总线通信协议各服务对RT的基本要求进行分析的基础上,提出了完成该协议下RT仿真所需的软件需求,通过对商用总线仿真卡进行二次开发,设计实现了一种基于时间同步1553B总线通信协议的总线监视与仿真软件,在兼容原有商用软件的总线监视、BC/RT仿真、数据存储及回放等基本功能的基础上,增加了基于时间同步1553B总线通信协议的RT仿真功能。该软件能够满足应用该协议的各型号的各种测试需求,已经在多个航天器型号中得到了应用。
基于时间同步1553B总线通信协议在原有美军标的基础上,提供了时间服务、通信同步服务、置数/取数服务、数据块传输服务以及终端管理服务5种服务[9],这些服务并不是完全独立的:通信同步服务为协议要求的强制服务,它保证了协议的实时性,其它的服务都依赖于通信同步服务,这些依赖关系如图1所示。
图1 服务依赖性
基于时间同步1553B总线通信协议的最基本的特点是通过通信同步服务,把一个时间同步周期内的数据传输划分为若干个通信帧,通过约定特定的数据在特定的通信帧内传输获得确定的传输延迟,并达到均衡总线资源分配的效果,如图2所示。因此基于时间同步1553B总线通信协议中的RT首先要识别通信帧,进而根据当前通信帧完成协议规定的在固定通信帧内进行的动作。根据协议要求,RT通过获取帧同步消息来识别当前帧号,因而本软件首先要实现对帧同步消息的获取和识别。
图2 通信帧分解图示
置数/取数服务用于传输预先约定好的,固定长度的数据至目的地,置数服务用于BC->RT的数据传输,取数服务用于RT->BC的数据传输。这个过程中不涉及到握手过程,因而涉及的数据传输长度都是约定好的,BC为这些数据在约定的通信帧中预留相应的带宽,RT依据帧号进行数据的接收和发送。取数服务的使用要求RT仿真软件能够根据已经识别的帧号,向总线发送缓存写入不同的数据。
数据块传输服务能够响应发送端的请求来发起一次数据传输,并在数据传输结束后提供确认。为了区分在BC端和在RT端发起的数据块传输服务,我们称BC->RT的传输为数据块分发传输;RT->BC的传输为数据块获取传输。数据块分发的典型过程如下:
1)BC将需要发送的数据写入对应RT的协议规定的子地址(11-26)中,随后,向该RT的SA27中写入分发描述符,说明此次数据传输的长度、传输质量、使用的子地址等信息。
2)RT读取SA(Sub-Address, 子地址)27中的分发描述符,并按照其中的信息指示获取传输数据。之后对传输数据进行检查,在检查结果正确时,向SA27写入分发传输确认。
3)BC通过读取此RTSA27中的分发传输确认来确认此次数据传输正确,此次数据块分发过程结束。
数据块获取的典型过程如下:
1)RT在协议规定的子地址(11-26)中写入需要传输的数据,随后,在SA28中写入数据块获取请求,说明此次数据块获取的长度、传输质量、使用的子地址等信息。
2)BC获取此RTSA28中的数据块获取请求,判断此请求为一次新的有效请求。
3)BC在之后的某个通信帧里,按照数据块获取请求中描述的数据长度和子地址信息实现数据传输,并向该RT的SA28中写入数据块获取确认。
4)RT通过判断接收到相应的数据块获取确认来判断当前数据块获取传输结束。
通过以上分析可以看出,为了实现数据块服务,仿真软件应做到:对于数据块分发,要求仿真软件能够响应BC的数据块分发请求,包括数据块分发复位请求和数据块分发传输请求;对于数据块获取,则要求仿真软件能够根据协议要求,在特定时机提出数据块获取复位请求和数据块分发传输请求,根据请求类型将要传输的数据写入相应的发送子地址,并对请求信息中的计数和长度信息进行自主维护。
终端管理服务用于对RT进行健康监视、错误预警、终端配置和数据卷绕。在实际的型号应用中,只使用了协议中规定强制使用的数据卷绕服务,因而RT仿真也应能满足数据卷绕的要求。
现有航天器中各种突发性、周期性以及不同服务质量的数据传输要求都能通过这几种服务得到满足。通过上述分析可以看出,利用时间同步1553B总线通信协议进行数据传输时,RT的动作依赖于对当前通信帧号的判断。在利用数据块传输服务时,RT还需要按照协议要求与BC进行一系列的握手动作才能完成数据传输。而商用的1553B总线仿真软件不能提供这些服务,无法满足仿真要求。
根据上述分析,将时间同步1553B总线监视与仿真软件的功能需求分为两部分。一部分为面向标准总线协议的通用需求,包括总线仿真卡设置、总线监视(BM)、BC/RT仿真、数据存储、回放及查询等;一部分为专用需求,主要是模拟基于时间同步1553B总线通信协议的服务的RT的行为。具体来说,时间服务、置数服务都是完全由BC端控制,不需要RT做出特定的握手动作,因而并不会对RT仿真功能带来特殊需求;因而本软件主要对通信同步服务、取数服务、数据块服务和终端管理服务中的RT行为进行仿真。
本软件使用C++语言进行开发,使用模块化设计[10],主要有界面显示与交互、总线监视、数据存档、数据查询、配置文件管理、RT仿真、总线监视7个模块,模块间的关系和数据流如图3所示。软件采用多线程编程技术,提供图形化界面,实现对1553B总线进行总线监视、数据存档、回放以及查询等功能。这些功能与传统的仿真卡二次开发软件类似,在此不做具体说明。与商业总线仿真软件不同,本软件设计了专门的协议管理模块,配合RT仿真模块,实现对时间同步1553B总线通信协议中RT动作的仿真。本节主要对软件提供的针对时间同步协议的各项服务进行说明。
图3 模块关系和数据流
帧同步消息的传输形式为带数据字的方式字,根据协议要求在RT31的子地址31进行广播。软件协议管理模块能够获取每个帧同步消息,提取当前帧号。此帧号能够被数据存档、总线监视、RT仿真等多个模块获取并调用,提供了协议仿真的基础。
在型号应用中,对于某个RT可能会同时设置多个子地址进行取数,同一个子地址中取的通常是同一种数据,但其数据具体内容在不同的通信帧中可能会发生变化。商业仿真卡无法支持这种变化。
在本软件中,在对某RT的某个子地址进行仿真时,支持仿真数据的动态变化,数据中的变化区域和变化条件都可以指定。数据的变化方法可以选择递增/递减、在某个范围内随机变化或者几组固定数据循环变化。而变化的条件支持周期性变化,也可以用指定的消息来触发。当用帧同步消息作为触发消息时,结合数据变化的设置,就可以实现不同帧号下取数结果不同的效果。
2.3.1 数据块分发服务
根据协议要求,在进行数据块分发时,BC会在向RT发送数据或者提出协议复位时,在该RT的子地址27写入分发传输描述符(DTD),而RT应在接收对分发传输描述符后,一个通信帧的时间内,确认其内容,并在子地址27中给出分发传输确认(DTC),DTD和DTC的数据结构如表1、表2所示。
软件的具体实现过程是,对子地址27进行监控,在接收到DTD后,直接提取其中信息组成DTC后写入子地址27的发送缓存。除此之外,本软件还能对数据块分发次数进行统计,并提供单独界面对数据块分发的数据进行显示。
表1 分发传输描述符(DTD)结构
表2 分发传输确认(DTC)结构
表3 获取传输请求(ATR)结构
2.3.2 数据块获取服务
根据协议要求,在利用数据块获取服务进行数据传输时,RT需要在协议规定的子地址内写入需要传输的数据后,在子地址28中写入相应的获取传输请求(ATR),其数据结构见表3。
在航天型号中,对某个RT常常有多种数据需要通过数据块获取进行传输,且这些数据的触发条件各不相同。而且每进行一次数据块传输,其ATR中的获取块计数都要加1。可以看出,使用这种服务的数据传输过程,使用商业仿真卡根本无法自动模拟,而靠人工手动维护ATR的提起,没办法保证数据的周期性传输。为此,本软件对于每个RT的数据块获取仿真提供了以下功能:
1)能够维护一个获取传输列表,对每种获取传输设定不同的触发条件:可以单次传输、可以周期性传输也可以由某条消息触发传输;
2)对一个RT维护一个获取块计数,每发起一次获取传输请求,获取块计数自动加1;在提起获取传输复位时,该获取块计数清零;
3)在某条获取传输被触发时,能够根据ATR中的子地址模式和子地址将需要传输的数据写入对应子地址的发送缓存中;
4)当获取传输列表中多个获取传输同时被触发时,能够对仿真数据进行合并,并写入对应子地址,此时生成的ATR中的当前块长度应为被触发的多个数据块长度的和;
5)提供了数据块获取计数统计功能,对此RT的数据块获取状态进行实时显示。
目前在航天器型号中,终端管理服务只使用了数据卷绕服务,也就是说RT需要将子地址30接收到的卷绕数据回写到发送缓存中。在终端管理服务中,软件通过将RT的子地址30的发送和接收缓存设置为同一地址,实现了这一仿真要求。
以某应用基于时间同步1553B总线通信协议的航天型号中,某RT的总线传输要求为例,说明本文所述软件的RT仿真功能的使用。该RT需要在总线上进行仿真的包列表如表4所示。
表4 某型号某RT的总线传输包列表
使用传统仿真软件完成此RT仿真的难度是显而易见的。以采用数据块获取服务的RK2和PK3为例,为了实现PK2能够以2 s为周期传输,测试人员必须每2 s手动在该RT的子地址28进行一次获取传输请求仿真,数据格式如表3所示,且其中的获取块计数还要每2 s递增1;保持准确的2 s周期对手动操作来说已经很难实现,而同时还要保证这个传输请求是在通信帧10中被提起就更加不可能了。不仅如此,还需要同时兼顾以8 s为周期传输的PK3。可以看出,商用仿真卡已经完全无法实现此RT的仿真。
在本软件中,在此RT的子地址4对PK1的数据进行仿真。设置仿真数据中的包计数字段为按秒递增,则取数服务取到的数据为一个每秒包计数递增的遥测包。
利用数据块获取服务,对PK2和PK3进行仿真。分别对PK2和PK3的长度、数据内容、传输帧号和周期进行设置后,即可完成仿真(如图4所示)。仿真完成后,可以在总线上观察到RK2以2 s为周期传输,PK3以8S为周期传输,每次PK3传输时,PK2和PK3会被合并到一次数据块获取中被传输,本软件会自动维护ATR的提起以及发送数据的写入。
图4 编辑数据块获取界面
可以看出,本软件的使用大大降低了基于时间同步的1553B总线通信协议的RT仿真难度,对于提高使用该协议的航天型号测试效率和测试覆盖性具有重要意义。
1553B总线监视与仿真软件是航天器研制过程中经常使用的重要工具,其好用易用性对于总线通信功能测试效果有至关重要的作用。本软件兼容传统的总线监视与仿真软件的总线监视、总线消息存储、回放以及查询等功能,并通过对商用仿真卡进行二次开发,实现了适用于基于时间同步1553B总线通信协议的RT仿真功能,大大降低了采用基于时间同步1553B总线通信协议的型号的总线功能测试复杂度,提高了测试覆盖率。该软件已经应用于多颗遥感卫星的综合电子分系统软件测试中,取得了良好的效果。随着基于时间同步的1553B总线通信协议的推广将得到更加广泛的应用。