兰 天,周凡卉,杨培尧,张红军,余 晟
(北京空间飞行器总体设计部,北京 100094)
1553B总线网络由1个总线控制器(BC)与若干个RT共同构成,网络中的所有通信均由BC发起[1]。自20世纪70年代末以来,由于其高可靠性,1553B总线已在航空、航天等多个领域得到了广泛的应用。但在美军标中只规定了1553B总线数据链路层接口协议,没有对更高层通信做出规定。传统航天器需针对BC与RT间的消息传输方式、内容进行个性化设计,虽能满足不同飞行任务的需求,但在协议协调、软件设计、测试验证上需花费大量的精力,且不利于通用化发展。
随着航天器任务日益复杂,这种个性化设计方式花费的代价对研制流程造成的影响越来越大。为解决这一问题,欧洲空间标准化组织发展出一种时间同步1553B总线通信协议[2],该协议在应用层与数据链路层之间建立了通用化的通信、同步接口,能够有效统一、简化总线接口配置。该协议将BC、RT间的数据通信抽象提炼成5种服务,并用原语方式说明了信息交换格式与时序安排,给出了RT子地址分配、使用的建议。该协议实现了BC、RT总线接口的通用化,通过时间同步简化了BC、RT间握手方式,为总线上各用户数据吞吐量和最坏服务延迟提供了有效保证,已在我国多颗智能遥感卫星综合电子系统中得到了应用[3-7]。
在时间同步1553B协议应用过程中,也遇到了一些新问题,RT并发数据传输控制就是其中之一。在传统总线通信协议中,通常为不同数据项开辟多个子地址,按照数据项产生顺序提服务请求,发出数据传输申请。而在时间同步1553B总线通信协议中,突发性数据和长周期数据需复用数据块传输服务,共享同一发送通道。随着航天器智能化水平的提升,RT产生的数据量大幅攀升,存在短期并发大量数据、需多次数据块传输发出的场景。若按传统方式进行传输,大数据量的遥测数据可能堵塞与程控相关的紧急消息,影响航天器程控动作实时性。因此如何合理调度RT并发数据,确保紧急消息的发送时延可控,是航天器软件设计的重要课题。
当前国内外针对1553B总线资源调度的研究多围绕BC展开,少有涉及RT[8-13]。而仅靠BC的资源调度,不能完全解决RT的并发数据发送问题。因此,本文提出了一种时间同步1553B总线通信协议的RT突发数据发送控制方法。首先按照RT并发数据的时间敏感性进行优先级划分,然后采用两级“生产者-消费者”模型[14-17],在并发数据源与总线通道之间引入总线组帧缓存区。总线组帧缓冲区“消费”并发数据,“生产”出按优先级组织的总线传输帧。本文设计的RT突发数据控制方法,能够大幅提升单次数据块传输的带宽利用率,并为紧急消息的实时传输提供保障。
时间同步1553B总线通信协议在总线通信中的作用方式如图1所示。从图1中可见,协议将应用层与数据链路层间的接口抽象为5种服务,分别为:时间同步、通信同步、置数/取数、数据块传输、终端管理等。这些服务可满足航天器使用的所有情况,如单消息传输、循环缓存传输、服务请求、广播等。5种服务间存在依存关系,通信同步服务是整个时间同步1553B总线通信协议的基础。
图1 时间同步1553B总线通信协议中各服务的位置和服务间关系示意
时间同步协议以时间同步周期为单位对总线带宽进行量化,并以通信帧为单位对每个时间同步周期内的带宽资源进一步细分,如图2所示。通信帧是一段时间内总线上允许传输的消息集合,一个时间同步周期内含有多个规划内容不同的通信帧,通信帧与星上时间、BC软件周期同步。在每个通信帧开始,BC首先通过总线以广播方式向各RT终端发送帧同步。帧同步后的带宽资源分为预分配带宽和自由带宽,预分配带宽排在帧同步之后,自由带宽排在预分配带宽之后。预分配带宽内的总线通信必然发生,自由带宽内的总线通信可能发生。
图2 时间同步1553B总线通信协议中典型通信帧分解示意
时间同步1553B协议提供的5种服务中,通信同步、时间同步、置数/取数、终端管理等4种服务在预分配带宽内传输;数据块传输服务在自由带宽内传输。对预分配带宽内的数据传输,可通过基于通信同步服务的错帧操作避免BC、RT间的读写冲突,不需要传统总线协议中的握手消息和相应的中断触发配置;对自由带宽内的数据传输,需要额外的握手消息。
RT通过数据块传输服务向外发送数据块的过程为:
1)RT检测确认发送通道为“空闲”状态时,将待发数据块写入数据块发送子地址;
2)RT向数据块获取服务握手发送子地址(SA 28T)写入获取传输申请(ATR)。同时,RT将发送通道状态设为“占用”,并启动数据块获取超时检测;
3)BC通过查询方式查得ATR,在自由带宽内完成获取数据块动作。完成数据块获取后,BC根据获取结果向RT的数据块获取服务握手接收子地址(SA 28R)中写入获取传输确认(ATC);
4)RT接收到ATC或等待超时后,清除ATR,并将发送通道标识设为“空闲”。
从上述数据发送过程可见,在发起一次数据传输后,为避免读写冲突导致的通信失败,RT在传输过程中无法追加数据。在RT软件出现突发性数据、长周期数据的并发工况时,数据项之间存在对数据发送通道的竞争。
传统1553B协议的处理方法是为不同的数据项设计不同的发送子地址,通过提服务请求的顺序控制数据项发送顺序。虽能保证突发数据的传输实时性,但所花费的软件代价更大、总线带宽利用率也较低。且当待发数据项种类增长到一定水平时,受限于总线芯片发送子地址数量约束,该方法会出现功能瓶颈。
在时间同步1553B总线通信协议中,RT外发数据有两种方式:取数服务和数据块传输服务。取数服务使用预分配带宽,拥有可预期的最大传输时延;数据块服务使用自由带宽,传输时延不确定,但可通过系统级总线规划在一个时间同步周期内为某RT分配确定的数据块传输机会。数据块传输服务对发送子地址进行了通用化设计,不再将子地址跟特定数据项绑定在一起。在总线芯片中,通过为数据块获取服务分配多个平铺的发送子地址或为单个发送子地址开辟大循环缓存的方式,能够获得比传统1553B总线通信协议更大的单次数据传输能力。在每次发送总线消息前,向发送缓存中依次填入多个数据项,并通过ATR对这些数据项的总长度进行描述。这种处理方法提升了单次数据的传输效率,但没有给出确保需多次数据块传输的并发数据中紧急消息发送时延的方法。
随着卫星综合电子系统智能化水平的提升,RT设备更强的计算能力使其承担了更多的功能,造成RT需外发的数据量大幅上升。RT方发出的数据项可分为周期与突发两类,突发数据项采用数据块传输服务,周期数据项需进一步考虑周期长短。数据项周期若小于或略大于时间同步周期,应在预分配带宽内以取数服务进行传输;若远大于时间同步周期,应在自由带宽内以数据块传输服务传输。按照数据特点,可将采用数据块传输服务的数据分为三类。
1)数据突发产生、数据量小、对时间很敏感,如星箭分离等会触发程控的紧急消息;
2)数据周期产生、周期长、数据量大,对时间较敏感,如卫星温度统计数据;
3)数据突发产生、对时间不敏感,如软件自主处置故障后产生的健康事件报告。
针对上述并发数据量大、产生周期多种多样、对时延敏感度不同的特点,在时间同步1553B总线通信协议基础上进行了改进:
1)数据集中调度,提升对单次数据块传输服务的带宽利用率;
2)按优先级发送,将时间敏感的紧急消息设为高优先级,实时遥测判读数据设为中等优先级,延时遥测回查数据设为低优先级。在发送时,按照优先级从高到低发送数据。
按照“数据集中调度”的设计思路,本文采用“生产者-消费者”模型进行RT并发数据调度设计。以某RT软件为例,为其数据传输需求建立“生产者-消费者”模型,如图3所示。
图3 两级“生产者-消费者”模型示意图
解决RT端数据发送问题的关键在于如何协调产生周期性数据的进程、产生突发性数据的进程与总线发送进程之间的关系,通过合理调度发送顺序、组织单次发送内容,实现对BC分配给本RT通信带宽的充分利用,快速、高效完成数据传输。
“生产者-消费者”模型是解决有限缓存约束下多进程同步问题的经典模型,该模型描述了共享缓冲区的进程间,即“生产者”和“消费者”,在运行时的读写冲突问题。该模型有两个设计重点:一是协调“生产者”、“消费者”间对缓存的互斥操作,以保证数据完整性;二是缓存区满时“生产者”不应继续添加数据。
从图3中可见,在第1级“生产者-消费者”模型中,软件各进程作为“生产者”,以CCSDS标准空间包格式生成待发数据项,并缓存在本进程的内部缓存中;总线组帧缓存作为“消费者”,将不同进程缓存中的数据项组织成帧,组帧缓存大小与单次数据块传输能力相匹配。总线组帧缓存按照固定优先级顺序组织,序号越小、优先级越高。
将RT待发数据分为高、中、低3个优先级,不同优先级的数据源对应固定范围的组帧缓存区。高优先级缓存对应初始化、程控A、程控B、程控C等进程,这几个进程的数据特点是突发性产生数据、数据量小、时间敏感度高,且部分数据有分多次发送的约束。中等优先级缓存对应温度统计、占空比统计等进程,这两个进程的数据特点是周期性产生数据、周期长、数据量大、时间敏感度较高,地面希望在数据产生时能通过实时遥测完成监视。低优先级缓存对应事件报告、自主健康、内存读出等进程。这些进程的数据特点是突发性产生数据、数据量不固定、时间敏感度低,地面不需要实时判读相关数据项,但要求可通过延时遥测进行数据回查。
在应用层,对部分数据发送方式有特殊约束,如程控A、B、C进程产生的事件包能够触发BC后续程控操作,为确保可靠触发BC相关程控,要求每个关键事件要传输三次事件报告,且三次事件报告需分别发送。针对这种个性化发送约束,在进程缓存与组帧缓存之间,按照优先级建立映射关系。软件更新一个组帧缓存内容时,按照映射关系遍历与之对应的进程缓存区,将其中所有待发数据项组织成一个总线传输数据项,提升单次数据块传输带宽利用率。例如:针对高优先级数据,组帧缓存2映射了程控进程A的事件A1、程控进程B的事件B1和程控进程C的事件C1等3个数据项。在这3个关键事件同时发生时,通过本文设计的方法能够将关键事件的紧急消息分别组织进缓存2、3、4中,并按照顺序通过三次数据块传输发送给BC。
在第1级“生产者-消费者”模型中完成对待发数据项基于映射关系的集中调度后,第2级模型以总线发送控制模块为“消费者”,采用基于优先级的发送策略,将总线组帧缓存内的数据帧逐次发送出去。发送控制流程如图4所示:
图4 RT方数据发送控制流程
1)RT首先检测数据发送通道是否可用,若通道为占用态,结束本次控制;若通道可用,继续后续检测;
2)顺序轮询按照优先级排序的总线组帧缓存,将轮询到的第一项待发数据拷贝到总线芯片数据块发送子地址中,并释放该总线组帧缓存;
3)更新数据块发送握手消息ATR,设置发送通道为占用态。
从上述步骤可见,该方法能在发送通道为空闲时将总线组帧缓冲区中优先级最高的数据帧发出。在紧急消息产生时,若RT方发送通道为空闲状态,相应紧急消息能马上发出;若RT方发送通道为占用态,相应紧急消息能在发送通道恢复空闲后马上发出。采用本方法发送涉及程控的关键事件时,最大传输延迟为本RT对应的两次相邻数据块传输的间隔。
在本文设计的发送控制方法中,临近资源有两类:1)总线组帧缓存区;2)总线芯片数据块发送用RAM区。对总线组帧缓存区,通过总线组帧逻辑与总线发送控制逻辑的顺序运行,避免读写冲突;对总线芯片数据块发送用RAM区,通过发送通道“占用”标志避免读写冲突。
在智能化敏捷遥感卫星的综合电子系统上,对本文提出的RT突发数据发送控制方法进行了验证试验[18-21]。将总线消息组织、传输耗时与消息间隔等考虑在内,一条32字消息在1 Mbps速率的1553B总线上传输耗时约为1 ms。考虑现有RT常用总线芯片的堆栈大小(64条消息),设定协议中通信帧长度为50 ms,时间同步周期为1 s,每个时间同步周期含20个通信帧。RT方设置由帧同步触发1553B总线中断,即使一个通信帧内只与一个RT通信,亦不会发生堆栈溢出。BC采用最高效服务质量(Qos)数据获取方式,在该方式的获取时序下每3帧完成从RT采集一个数据块的动作。总线上只有本RT产生数据块获取申请,RT端单次数据块传输最大发送能力1 024字节。
试验中测试了3个工况:工况1中多个程控事件同时发生;工况2中多个程控事件按照一定时间顺序发生,一个程控事件先发生,另外两个程控事件在第一个程控事件的第1条消息写入总线芯片时发生;工况3中一个程控事件在统计数据发送过程中发生。其中,每个程控事件分别产生3个事件包,每个包长度8字节,对3个包有分次发送要求。工况3中的统计数据一次性产生6个统计包,每个包长1 000字节,关键事件在统计包产生50 ms后产生。由于通过外部测试设备难以稳定触发3个测试工况的时序,为各工况分别开发了测试版本软件,通过软件内部定时器触发相应的时序。
在3个工况下,将本文设计的发送控制方法与传统发送方法进行比较。在传统发送方法中,按照数据项产生顺序发送数据,不对数据项进行拼帧操作,每次发送一个独立的数据项。通过1553B总线监视设备判读消息发送情况。针对各工况进行多次测试,对比了在两种方法控制下各程控事件对应的第一个数据项发出时间、各程控事件对应的最后一个数据项发出的时间及所有程控事件完成传输的总传输次数,结果如表1所示。
从表1可见,在多次测试中,由于BC、RT软件的时序不完全同步,观察到的时间有一定波动。在传统发送控制方法下,在工况1、2中需要9次传输将全部事件包发出,传输顺序与消息生成顺序一致。多个程控事件同时发生或接近同时发生时,只有首先占用发送通道的事件的发送延时能够得到保障,后续事件包的发送延时与取得发送通道的顺序有关。在工况3中,关键事件传输延时受已占用发送信道的统计数据影响,统计数据待发数据量越大,关键事件的传输延时也越大。
表1 传统RT数据发送方法与本文设计的发送控制方法的比较
在本文设计的发送控制方法控制下:
1)在工况1中,共发生3次数据块传输,每次传输包含分别属于3个事件的各一条紧急消息。满足各自事件对紧急消息发送方式的约束,为同时发生的关键事件提供了同等时延的传输服务,提升了对单次传输服务的带宽利用率,减少了对传输通道的占用。
2)在工况2中,共发生4次数据块传输。第1次传输中包含事件A的第一条紧急消息,第2次传输中包含事件B、C的第一条紧急消息,第3、4次传输中包含分别属于3个事件的各一条总线消息。可见在发送通道处于占用状态时,发送控制策略能够将后续发生的紧急消息组织、追加进处于待发状态的总线组帧缓存中。
对先产生的关键事件,这会造成其后续待传输的紧急消息时延增加。但从系统层面分析,每个关键事件发三次的目的是避免BC丢失消息导致未对相应的关键事件进行响应。在总线通信正常情况下,BC接收到关键事件对应的第一条紧急消息后,即会触发相应的程控,并不会响应后续两次备保的紧急消息。因此,优先传输后续关键事件的第一条紧急消息,能够提升整个系统的实时性。
3)在工况3中,通过基于优先级的发送控制对总线发送信道的占用次数与传统方法相同,但实现了紧急消息对正在发送中的统计数据的信道抢占。在当前占用发送通道的统计数据发出后,马上可以开始传输关键事件。在关键事件发生后,在其优先级为待发队列最高优先级时,最差情况下能在延迟一个数据块传输周期后得到服务。
从上述测试结果可见,本文设计的发送控制方法通过组帧缓冲区实现事件包的合帧发送,在满足发送约束的同时,改善了各事件的发送延时,降低了占用总线发送通道的次数。
本文针对采用时间同步1553B总线协议的RT并发数据发送控制问题,提出了一种基于两级“生成者-消费者”模型的突发数据控制方法。和传统发送方法比,该方法:
1)对RT负责检测、BC负责实施的关键程控动作,提供了可预期的传输时延保障;
2)在多个事件并发时,能在满足可靠性约束条件(分多次发送)的前提下,减少了对RT发送通道占用次数,使各事件复用发送通道;
3)在信道被数据量大、时间敏感度低的数据传输占用时,关键事件可抢占发送信道,提升系统对关键事件的响应实时性。
该方法已在多颗智能化敏捷遥感卫星的数管RT软件设计中得到应用,并已经过在轨验证,可为后续应用时间同步1553B总线通信协议的航天器提供软件设计参考。