习颖慧,滕学剑
(中国科学院 国家空间科学中心,北京100019)
“嫦娥四号”巡视器有效载荷研制在探月工程实施以来首次开展了国际合作,引入中性原子探测仪(ASAN 探测仪)。该仪器系目前国际上首个在月球表面开展中性原子探测的仪器,其主要功能是探知太阳风与月球表面的作用机制以及二者相互作用对月球环境的影响。为适应月面环境要求,ASAN 探测仪的工作时段为月昼上午和月昼下午,每次工作时间不超过1小时,科学数据产生率最高不超过1 kbit/s;月午和月夜时段则关机。该探测仪属舱内设备,为降低系统集成复杂度,减少载荷管理开销,提高可靠性,探测仪与有效载荷电控箱之间通过RS422 串行总线进行通信。
RS422总线具有传输距离长、波特率可调、速度快、抗干扰能力强等诸多特点,在航空航天以及工业控制领域有着广泛的应用[1]。“嫦娥四号”有效载荷电控箱与ASAN 探测仪的RS422串行总线通信采用软件管理RS422接口单元方式[2],RS422通信约定为主从结构——载荷电控箱是主机,ASAN探测仪是从机;每次通信都是由主机发起命令,从机应答命令或数据。
图1 外部RS422总线消息传输格式Fig.1 External RS422 bus message transfer format
RS422消息指令类型多样,传输格式、性能参数以及传输和响应要求各不相同,主机一方面要保持正常的总线通信,另一方面要对消息通信结果做出实时处理并反馈。因此RS422总线消息通信具有复杂多样性及严格实时性[3],合理设计RS422的消息通信模式,成为衡量系统优劣的重要因素。
本文提出一种基于RS422时间片管理机制的通信模式,以满足有效载荷电控箱与ASAN 探测仪之间的通信时间响应要求,保证数据传输的有序和有效性。
RS422通信的波特率为115.2 kbit/s,消息传输格式见图1。
RS422总线通信中包括的消息类型为:
1)工作模式指令发消息以及接收的应答消息,工作模式消息指令有6种,均为随机消息,在收到消息后2 s之内转发即可;
2)周期工程采集指令消息以及接收的工程参数帧消息,消息周期为4 s;
3)周期科学数据采集指令消息以及接收的科学数据帧消息,消息周期为4 s;
4)周期校时指令消息以及接收的校时消息应答,消息周期为300 s。
在多条RS422消息指令通信的情况下,目前的嵌入式系统RS422总线通信模块中一般使用一问一答的模式。从消息开始组织,写入RS422接口模块,由RS422总线发送后,必须等待相对应的应答接收结束后才能交出RS422总线控制权,称为“一对一法”。定义消息通信过程中独占RS422总线消耗的时间为TP,每种消息可允许的时间为TS。通信过程见图2。
图2 传统RS422通信模式图Fig.2 Diagram of traditional RS422 communication mode
等待接收数据的方式有2种,轮流查询指令接收缓冲区状态或者中断处理方式。查询方式控制简单但效率低,中断处理方式实时性高但占用FPGA资源。嵌入式实时控制系统应尽量减少中断的使用,故在查询接收满足通信要求且不影响实时性的情况下,尽量采用查询方式接收数据[4]。
巡视器有效载荷电控箱与ASAN 探测仪RS422之间的通信特性:
1)ASAN回送的科学数据帧变长,最大长度为4096字节,且大部分情况下ASAN 回送的科学数据的长度为4096字节,传输数据量大;
2)科学数据帧传输时间长,仅传输数据时间就需要大约284 ms;
3)消息类型多样,包括随机消息以及周期消息,且周期消息既有同步的也有异步的;
4)随机消息与周期消息,周期消息与周期消息之间发生碰撞的概率很大,消息处理复杂耗时。
以最简单情况来分析,本系统有Msg1(工作模式)、Msg2(工程参数)、Msg3(科学数据)和Msg4(校时)4种类型的消息,均使用RS422总线进行通信。Msg1是随机消息,Msg2、Msg3、Msg4是周期消息,Msg2、Msg3周期同步。在系统某时刻,Msg1、Msg2、Msg3、Msg4消息同时时间到,处于就绪状态,每个消息发送前若检测到总线忙碌便处于等待状态。等待时间取决于TP,TP越大等待时间越长,消息执行发送的时间就越晚,会导致不能及时响应消息请求。而“一对一法”适用于消息数据量小,消息等待以及数据接收时间短的系统,显然不适合本系统的RS422总线通信。
本系统CPU 采用单片机(型号为80C32)、单线程,由FPGA 实现的RS422接口单元只提供1个RS422发送FIFO,1个RS422接收FIFO;且RS422通信无法实现并发设计,必须对发送进行有序控制,才能保证数据接收的有效性和完整性。因此,需要重新设计支持大数据量传输、等待时间充足、并发处理能力好的RS422通信方案。
针对巡视器电控箱与载荷ASAN探测仪之间RS422通信的特殊性,提出时间片通信模式方案。
RS422总线是主从结构,任何时候都是主机发起通信,从机应答,任何时刻只能有1种消息类型得到RS422的控制权,即消息只能互斥使用RS422总线。为优化起见,借鉴帧的组织方式以及操作系统时间片调度策略,提出一种随机多周期消息时间片排布架构[5-6]。以整个RS422时间作为1个大时间片(时间周期),大时间片再以小时间片方式分配给各消息发送接收使用。
首先,在系统中如何确定恰当的RS422时间片(时间周期),是保证系统运行稳定可靠,满足系统性能要求,确保系统正常工作的关键;其次,如何划分小时间片确保各消息发送接收的准时完成,需要采取适当的调用策略;最后,如何减小周期消息碰撞的概率,减轻数据接收处理模块的压力,提高总线处理能力和CPU 效率,也是本设计的意义所在。
时间周期设置太短,会导致过多的RS422消息交互,占用资源,降低CPU 效率,无法满足大量RS422消息传输的时间要求;而时间周期设置太长,又可能引起对短的交互请求的响应变差。本系统随机指令的最小发送间隔为2 s,3种周期指令最小间隔为4 s,因此将时间周期定为2 s是比较合理的折中选择。
RS422大时间片确定后,RS422通信采用时间周期的方法。2 s的时间周期到,时间周期前半段(180 ms)进行总线切换、维护以及所有时间周期到的指令发送操作;中间设置1 s的等待时间;后半段设置数据接收处理标识,主循环中查询此标识并统一处理接收到的数据,此处理时间预留820 ms。本设计中的时间片设置见图3。
图3 RS422时间片划分Fig.3 RS422 timeslice partition map
2 s时间周期大体划分为4个时间片:Tm为总线维护时间片;Tx为消息发送时间片,按照系统最大负荷量并预留足够的硬件处理时间;Tw为消息等待接收时间片;TR为接收处理时间片。
Tx时间片要处理的消息类型有数据注入消息、工程参数消息、科学数据消息和时间码消息4种。如何安排消息的发送通信时间片,保证各类型消息通信的时间度,保证消息通信的一致性、无差错性是确保系统工作的关键。
本系统的消息类型包括随机消息(事件驱动型消息)和周期消息[7-8]。
事件驱动型消息安排:地面数据注入产生的工作模式消息。每当地面有数据注入消息以及工作模式指令发送错误并重试时产生消息,这类随机消息会被立即存入工作模式指令循环缓冲指令队列,利用指令队列的先进先出特性,避免消息数量大时丢失指令。RS422时间周期到,立即安排这种类型消息指令的发送,其消息指令优先级为最高。
同周期、不同周期消息安排:通过参考周期任务调度的速率单调调度(RMS)算法[9],根据消息的周期设置消息优先级,周期越短优先级越高。本系统中,工程参数与科学数据消息周期同步,周期为4 s;校时消息周期为5 min。故优先级由高到低的安排是工程参数、科学数据、校时消息。考虑到同周期消息每个时间周期势必会碰撞(同时满足时间条件,处于就绪状态),为减少同一个时间周期内待发送消息的数量,降低时间周期总线的强度,减轻接收模块处理压力,提高RS422通信效率,本系统采用了乒乓设计方法,即将工程参数和科学数据消息采集的起始点错开,使得这2类消息分布在不同的时间周期,见图4。
图4 乒乓设计方法Fig.4 Ping-pong design diagram
综上,对于随机消息和周期消息,按照优先级的设置形成队列,当RS422时间片周期到的时候,再把RS422控制权分配给就绪的指令,并令其占用1个时间片。时间片的大小是可调整的,一般是根据消息指令的发送以及传输字节数的时间来定,并预留足够的硬件发送指令的时间。当时间片用完时,通过计时器的中断计数,停止该类型消息指令的RS422控制权,保留当前指令信息状态,切换到下一种类型消息指令。这样可保证所有就绪的指令在给定的时间内均能得到处理。
利用单片机定时器中断,设置其步长为20 ms,产生1个2 s 的RS422时间周期。定时器采用自动装载模式,可避免定时器翻转手动重新装载数据造成的精度误差。时间周期中的小时间片区是通过定时器20 ms步长的计数实现的。
本文中RS422时间片模式实现的数据发送以及等待功能都在中断中实现,保证了数据的实时性和完整性。1个RS422时间周期中,数据接收时间片中的数据接收处理是在主循环中完成的,主循环1次运行最长时间为300 ms,软件预留了820 ms的接收处理时间片,完全能保证该周期中接收数据的处理,不会因为下一周期时间片消息发送而影响数据的完整性。软件架构及流程见图5。
图5 时间片管理流程Fig.5 Flow chart of time slice management
经过实践,时间片通信模式的新设计,对“嫦娥四号”载荷ASAN 探测仪的RS422总线通信时间片进行了恰当的划分,并增加了乒乓的可靠性设计方案,确保了各类型消息的准时准确发送以及完整性接收,满足了目前RS422总线通信的时间响应要求,保证了系统运行稳定可靠,取得了良好的效果。