李经松,陈朝晖,党纪红,李昊然,董晓刚,李晓锋
分布式系统的各子系统间系统时间同步技术算法复杂,设计困难,一直以来深受研究领域的关注.实现分布式系统时间同步的设计思路有如下两种:1)非对称式时间同步方法,选取某一时钟精度高,稳定、可靠的节点,以此节点的时间作为基准,向其他节点广播同步;2)对称式时间同步方法,所有节点的时间都参与系统的时间同步,每个节点的时间对于时间同步的作用是一样的[1].
航天器系统作为一种分布式实时控制系统,任务调度及控制要求具有实时特性,各个分系统或功能部件的时钟来源互相独立,晶振频率、漂移特性等各不相同.若无时间同步机制,航天器系统不具备一个统一的时间基准,统一协调能力将大大降低,直接影响任务执行的效果甚至成败[2].基于1553B总线的航天器系统[3],鉴于1553B总线的主从式通讯方式,系统通常采取非对称式时间同步方法,选取某单一精确时钟源(原子钟、GPS时钟)对全系统进行整体时钟同步[4].本文所涉及的1553B芯片均为DDC公司ACE(advanced communication engine)系列1553B总线协议芯片[5-7].
分布式系统的时间同步是指系统中所有或部分节点拥有相同的时间基准,时间同步的目的是维护一个全局一致的物理或逻辑时钟,使得系统中的信息、事件及各节点与时间有关的行为具备一种全局一致的解释,确保节点发送数据和接收数据在时间逻辑上是一致的.下面首先对时钟模型、时间同步问题的现状进行阐述.
在计算机系统中,时钟通常用晶体振荡器脉冲来度量,即
其中:ω(τ)是晶振的频率;k是依赖于晶振物理特性的常量;t是真实时间变量;c(t)是构造的本地时钟,间隔c(t)-c(t0)用来作为时间度量.对于理想的时钟,ω(τ)为常值,但在工程实践中,因为温度、压力、电源电压等外界环境的变化,往往会导致晶振频率产生波动[8].
由于分布式系统主要基于网络构建,其通常利用网络协议约定网络中所有节点的同步机制,在无序的网络环境中提供精确和健壮的时间服务,比较有代表性的网络协议有网络时钟协议(network time protocol,NTP)、简单网络时钟协议(simple network time protocol,SNTP)、IEEE1588协议等,这些时间同步协议能够很好地适用于网络环境,利用网络资源来满足分布式系统的时间同步需求.
基于1553B总线的航天器系统,采用软件实现的时间同步设计方法,根据同步时间偏移补偿的精确程度分为:时间同步粗补偿方法、时间同步精补偿方法.航天器系统中,时间同步的发起方(bus controller,BC端)通常具备相对精确的时钟源,对系统中的其他分系统(remote terminal,RT端)进行时间基准的分发.
1553B芯片具有一套自身的时间基准,即1553B时标.1553B时标功能主要基于1553B芯片内部的时标计数器,时标计数器与处理器的硬件计数器功能相同,具有计数或计时功能,时钟来源既可以是内部时钟源,也可以是外部时钟源,具体依据应用而定.时标计数器为16位字长的加计数,表示范围为0x0000~0xFFFF,翻转循环使用;计时分辨率具有粒度粗细多种选择:2,4,8,16,32和64 μs/LSB(least significant bit).1553B芯片允许软件通过时标寄存器访问时标计数器的内容,根据需要写入、读取时标寄存器的值;消息块时标字自动锁存记录消息SOM(start of message)、EOM(end of message)的时刻.下文介绍的时间同步设计方法就是通过对时标分辨率、时标寄存器、消息块时标字等功能的有效设置来实现的.
时间同步粗补偿方法,是指对时间同步消息传输时延、处理时延的测算及补偿,仅能对RT端自身可观测因素进行处理,RT端不可观测因素则假定为理想状态,时延不做考虑.此方法同步时间偏移补偿的精度稍低,但能够满足当前多数系统的同步需求.时间同步粗补偿过程如表1所示.
表1 时间同步粗补偿过程Tab.1 The process of time synchronization’s coarse compensation
表1中,步骤1~3即为RT端不可观测因素,步骤1、3时延不做考虑,步骤2的时延粗略估算得到;步骤4的时延属于RT端可观测因素,能够通过手段测算得到,传统的时间偏移测算方式有两种[9-10]:消息中断方式、消息查询方式.
2.2.1 消息中断方式
Ttran≈(num+1)·20 μs
(1)
Tdrift=(CnCtrl-CnInt)·CycleLSB
(2)
(3)
式(2)中,处理器时钟计数器计算变化量时需要考虑计数器翻转,CycleLSB为处理器时钟计数器分辨率.消息中断方式的时间偏移测算并非十分准确,由于未考虑系统软件执行中断上下文切换的时间开销(最大开销超过100 μs),其时间偏移测算精度为100 μs量级.
2.2.2 消息查询方式
RT端通过周期性堆栈查询方式接收时间同步消息,对时间同步消息EOM时刻没有监测功能,查询到时间同步消息后,仅读取时间同步消息中同步时间为Tsync;堆栈查询操作退出后,在本控制周期内进行时间同步操作,偏移补偿后的同步时间计算同式(1)~(3).由于未对RT端时间同步消息处理过程的时延进行测算,则式(2)替换为:Tdrift=0.真实系统中,RT端时间同步消息处理过程时延的漂移范围为±1个控制周期,此方法的时间偏移测算精度较低,为10 ms或100 ms量级.
2.2.3 改进的消息查询方式
提出一种改进的消息查询方式,采用1553B时标功能测算RT端时间同步消息处理过程的时延.RT端1553B芯片具有对所有消息EOM时刻自动锁存的机制,将时标寄存器实时值进行锁存并放入消息块时标字中.借助芯片的这一特性,RT端具备了对时间同步消息EOM时刻准确监测的功能,显著提高传统消息查询方式的时间偏移测算精度,精度达到±40 μs,相比消息中断方式也能取得更优的性能.
在每个控制周期起始时刻记录1553B时标寄存器时标值CntTagCtrl;进行周期性堆栈查询,若查询到时间同步消息,读取时间同步消息中同步时间为Tsync,并从消息块描述符中读取EOM时刻的时标字,记为时标值CntTagEOM,偏移补偿后的同步时间计算同式(1)~(3),将式(2)替换为:Tdrift=(CntTagCtrl-CntTagEOM)·TagLSB.其中,时标偏移计算时需要考虑计数器翻转,TagLSB为时标分辨率,粒度大小选择依据应用需求而定.改进的消息查询方式,兼有两种传统时间偏移测算方式的优点,有效提升时间同步粗补偿方法的精度.
时间同步精补偿方法,是指BC端与RT端协同进行同步时间偏移的测算,由于收发双方相互协同、共同参与,减少或消除了时间同步粗补偿方法中的不可观测因素或不准确因素.
时间同步精补偿方法如下:首先,将同一个消息在BC端的EOM时刻与在RT端的EOM时刻近似地认为是物理同一时刻,BC端软件与RT端软件分别获取到相应EOM时刻的时标值;其次,利用BC端与RT端获取到的时标值进行时标同步[11];再次,由统一基准后的时标计数器负责同步时间偏移的测算,将所测算偏移对同步时间做补偿.
2.3.1 时标计数器的同步
在1553B总线物理层传输时延可以忽略的前提下,总线上所传输消息的“最后一个字奇偶校验位传输结束”时刻(PARITY BIT时刻),这一物理事件可以被BC端与RT端共同视为同一时刻,此电气特性能够很好的作为时间同步的设计依据.由于BC端与RT端芯片不容易获取到PARITY BIT时刻,则将同一个消息在BC端的EOM时刻与在RT端的EOM时刻近似地认为是PARITY BIT时刻.
EOM时刻至PARITY BIT时刻的误差修正涉及BC端芯片消息EOM时序与RT端芯片消息EOM时序.根据ACE芯片手册,图1中,BC端消息EOM的时标记录时刻(写TIME TAG WORD)落后PARITY BIT时刻10 μs左右;图2中,RT端消息EOM的时标记录时刻(写TIME TAG WORD)落后PARITY BIT时刻大约5 μs左右.
综合分析,整个EOM时刻至PARITY BIT时刻的时间偏移约为5 μs,误差可以忽略.
时标计数器的同步时序如图3所示.首先,BC端发送消息a,BC端与RT端分别锁存了消息a的EOM时刻的时标值,分别为tagBc0、tagRt0;其次,BC端发送消息b,将BC端锁存的时标值tagBc0发送给RT端,RT端收到消息b,计算BC端与RT端对应消息a的EOM时刻的时标值之差Δtag=tagBc0-tagRt0;最终,将RT端时标计数器的值tagRt同步至BC端时标计数器的值tagBc,则RT端同步后的时标计数器tagRt=tagBc=tagRt+Δtag.其中,BC端与RT端的时标分辨率应设置为一致.
图1 BC端芯片消息EOM时序Fig.1 The time sequence of message’EOM at bus controller
图2 RT端芯片消息EOM时序Fig.2 The time sequence of message’EOM at remote terminal
图3 时标计数器同步时序图Fig.3 The time sequence of time tagcounter’s synchronization
时标计数器实现同步之后,BC端任何事件的发生都可以标记时标戳,此时标戳在RT端具有相同的时间表述含义,如此显著提高了系统间的事务同步能力.
2.3.2 时间偏移的测算及补偿
Tdrift=(CntTagCtrl-CntTagSync)·TagLSB
(4)
(5)
式(4)中,时标偏移计算时需要考虑计数器翻转,TagLSB为时标分辨率,粒度大小选择依据应用需求而定.时间同步精补偿相较时间同步粗补偿,由于同步方与被同步方共同参与同步时间偏移的测算,减少或消除了不可观测因素,同步精度真正达到±20 μs.
为了验证所设计同步方法的有效性,利用两台配备1553B通信芯片的嵌入式系统A、B以及通用测试PC环境,来模拟基于1553B总线的航天器系统中系统间的同步过程,对本文上述三种时间同步方式的效果进行实验验证.系统A,控制周期500 ms,系统B,控制周期200 ms;系统A作为BC端,每5 s向系统B发起一次同步操作(发送时刻固定),系统B每200 ms进行一次堆栈查询操作,二者进行200次同步操作实验,验证结果如下.
系统B不对时间同步消息处理过程的时间偏移进行测算及补偿.系统B的同步时间与真实时间偏差,实验结果如图4所示.
图4 消息查询方式的同步时间偏移实验结果Fig.4 The experimental result of synchronous time migration by message polling method
实验结果表明,传统的消息查询方式同步时间偏移幅度很大,精度在100 ms量级.
系统B采用1553B时标功能对时间同步消息处理过程的时间偏移进行测算及补偿,系统B时标分辨率设置为8 μs.系统B的同步时间与真实时间偏差,实验结果如图5所示.
图5 改进消息查询方式的同步时间偏移实验结果Fig.5 The experimental result of synchronous time migration by modified message polling method
实验结果表明,改进的消息查询方式,由于采用1553B时标功能进行时间偏移的测算补偿,使得时间同步精度相较传统消息查询方式提升3个量级,精度达到10 μs量级.
系统A与系统B采用1553B时标功能对时间偏移进行协同测算及补偿,二者时标分辨率都设置为8 μs,系统A、B两方共同补偿后的同步时间与真实时间偏差,实验结果如图6所示.
图6 时间同步精补偿方法的同步时间偏移实验结果Fig.6 The experimental result of synchronous time migration by time synchronization’s refined compensation method
实验结果表明,采用1553B时标功能实现的时间同步精补偿方法,测算的时间偏移消除了不可观测因素,使得系统时间同步精度真正达到10 μs量级.
本文介绍了基于1553B总线的航天器系统传统时间同步机制,提出一种低系统开销、高精度的时间同步设计方法,该方法采用1553B总线时标功能来提高同步时间偏移测算及补偿精度.其中,BC端与RT端协同实现的时间同步精补偿方法,相较传统时间同步方法,同步精度真正达到了10 μs量级.本设计方法显著提高了系统的同步精度,能够满足大多数航天器系统的应用需求.