孙雪淋 秦明伟 胡贵林
(1.西南科技大学信息工程学院,四川绵阳 621010;2.重庆九洲星熠导航设备有限公司,四川绵阳 621000)
当今世界,科技快速发展,高精度授时及时间同步显得非常重要,尤其在电力、通信以及军事领域等等。北斗作为中国独立研发的卫星系统,为电力全网时间同步提供了安全保障。近年来,基于北斗的授时研究也随着北斗卫星系统不断完善而取得了进一步突破。王东霞等人对北斗RDSS授时服务性能做出了理性评估;沈飞等人设计了基于MSP430单片机的授时系统设计;刘娅等人分析了一种基于单频的授时方法等均达不到我国电力组网等领域的授时精度。而当前我国电力组网、信息通信组网的建设完全依赖于高精度的时间同步系统,现有的授时系统往往做不到精度与成本兼顾。针对此问题,设计了一种低功耗、低成本并能兼顾高精度的时间同步系统。以北斗时作为标准时间尺度,保障授时时间的准确性,结合STM32芯片以及TDC测量技术,并利用PID控制器对系统偏差调整完善,从而构建出高精度授时系统。
系统采用ARM的设计结构,对比标准1PPS与1PPS的相位差,结合TDC对秒脉冲相位的高精度测量,采用PID算法调整本地OCXO时钟频率,使OCXO的输出稳定频率,最终达到高精度授时目的。系统结构框图如图1所示。
授时系统主要包括4个模块,分别是1PPS的生成模块、参考捕获时间同步模块、鉴相模块以及PID控制模块。导航卫星信号接收机接收北斗卫星信号,输出标准参考1PPS并输入到鉴相器模块;恒温晶振经ARM分频得到本地时钟,经秒脉冲生成模块输出1PPS输入到鉴相器模块;鉴相模块输出的相位误差值影响到PID控制器模块,从而调整恒温晶振的压控值,进而达到设计目的。
图1 系统总体方案框图Fig.1 Block diagram of the overall system scheme
选用性能相对稳定的恒温晶振OCXO为STM32芯片提供10MHz的频率,ARM芯片内部集成了锁相环PLL,通过软件设置PLL将10MHz倍频到150MHz,为整个系统提供工作时钟,定时器TIM1和TIM2在系统时钟下生成1PPS,同时生成与1PPS具有固定相位差的1PPS_TDC信号,如图2所示。
在芯片内部1PPS与标准1PPS进行相位比较,得到鉴相值输入到PID控制器调整恒温晶振OCXO相应的压控值进而得到相对稳定准确的OCXO输出频率,当OCXO的输出频率调整到一定范围,即1PPS与标准1PPS相位差小于某阈值时,采用TDC对标准1PPS和1PPS_TDC进行相位差测量,并将测量值反馈到PID控制器。
图2 硬件结构设计框图Fig.2 Block diagram of hardware structure design
1PPS即1秒1个秒冲信号,1PPS的生成目前主要有FPGA/CPLD分频生成方式和MCU定时器生成方式两种,本系统采用STM32的定时器输出捕获功能完成1PPS的生成。1PPS生成过程如图3所示。
图3 1PPS生成过程图Fig.3 Synchronous 1PPS generation
16位定时器时基时钟频率为150MHz,分辨率约为6.67ns,最多能计时为437μs,无法计时到1s,虽然通过提高时基时钟频率的方法可以增大计时范围,但是这样会带来分辨率的降低,直接影响授时系统跟踪标准1PPS的精度,故本系统采用二级定时器的方式生成1PPS,这样既可以保证计时范围,又能兼顾高精度。如图3所示,采用的TIM1设为粗分辨率时钟,时钟频率为150MHz,分频系数为60 000,周期为2 500,则其每次加1表示时间增加400μs,周期时间即为1s,TIM2为细分辨率时钟,时钟频率也为150MHz,分频系数为1,周期为60 000,则TIM1每次加1表示时间增加1/150μs,周期时间为400μs。在某时刻捕获输出1PPS信号,由于STM32为顺序运行芯片,为准确在某时刻输出时沿,需使用输出捕获功能,若这里将TIM1的计数值看作小数,TIM2的计数值看作整数,则在某时刻0.0捕获输出高电平,在249.0时刻输出低电平,即可捕获输出1PPS信号,脉冲宽度为100ms。
T
,鉴相分辨率为ps级。且TDC只能测量两个具有相位差的信号的时间间隔近。近几年运用最多的TDC测量技术包括基于时钟脉冲的直接计数法的时间测量、基于抽头延迟线法的时间测量以及基于游标法的时间测量等。其中直接计数法是利用系统时钟对脉冲信号进行计数,当计数值达到一定值时计算出时间值,从而达到时间测量目的,测量精度往往时钟频率有关,测量精度很难达到ps级,因此无法应用在有精密测量要求的场合中;抽头延时线法是由N
个具有相同传输延时时间t
触发器线性连接组成,被测量的start信号在触发器间传输,抽头信号stop信号锁定start信号时表示采样结束,然后根据采样结果可以知道start信号传输多少个触发器,即测量时间间隔为T
=nt
,测量精度取决于触发器的传输延迟时间,一般测量精度能达到(101~102)ps量级,基本适用大多数的测量要求;游标法同机械游标卡尺的测量方式相似,其原理是针对固定相位差的时钟信号T
和T
,T
信号和T
信号同时在start信号和stop信号间传递,当信号重合时采样结束,分别记录T
信号和T
信号的计数值n
和n
,则有T
=n
T
+n
T
。基于上述分析,本设计选用基于抽头延迟线法的TDC时间测量技术,,提供给TDC的参考时钟为5MHz,则被测时差不能超过400ns。而1PPS和标准1PPS的相位不是固定某个超前于某个,在对齐时沿和稳定状态下两个1PPS信号都会交替超前,显然不能直接将1PPS作为Start或Stop信号,必须另外生成1PPS_TDC信号作为TDC输入Start信号,而1PPS_TDC必须超前标准1PPS,基于此,本系统设置固定超前200ns,即能满足要求。
得到与北斗时间同步的1PPS信号是高精度授时系统的关键功能,这个过程通过ARM内部处理。同步的过程如图4所示。
图4 参考捕获同步流程图Fig.4 Flowchart of reference capture synchronization
由于OCXO上电需要加热内部恒温槽,此段时间频率变化较大,不宜进行对准校时,因此需要预热一段时间后再与参考源同步,所以在上电初始化后TIM1和TIM2开始计数时,需先等待预热时间完成,而预热时间根据本地时钟源OCXO或原子钟特性决定,再判断参考是否有效,若参考有效则捕获标准1PPS的上升沿,并读取定时器TIM1和TIM2的计数值,然后重置放秒位置,即此时捕获输出高电平,在100ms后捕获输出低电平,此过程直接调整相位,使1PPS相位对齐标准1PPS。调相过程一般在上电第一次同步或者相位差相差过大时进行,当相位较小时通过调整OCXO频率来调整1PPS相位,此过程为调频过程。通过调频和调相,使恒温晶振输出具有精准的1PPS和频率信号。
当系统上电同步后由于OCXO频率尚未调准的原因,1PPS信号和标准1PPS信号的相位还会存在小幅度变化,这时候需要利用PID算法根据相位值调整频率使相位调准对齐。
这里的鉴相包括采用系统时钟捕获时标的定时器鉴相部分和TDC直接测量两秒脉冲信号相位差的TDC鉴相部分。其中定时器鉴相的部分直接采用1PPS参考输入捕获的方式,获取到1PPS参考时标,与1PPS时标基准相比较得出相差。TDC鉴相部分则由TDC测量后通过SPI传到ARM。
由于标准1PPS来自于BD卫星导航系统,这些参考信号在传输到终端过程中不仅会受到电离层、对流层等外界因素影响,同时这也有可能出现跳变的情况,因此在鉴相过程中必须进行滤波,采用中位值递推平均滤波方法,保证了相位差的纯净和准确。所以在得到相位差后,进行了滤波,具体操作步骤如下。
1)连续取N
个相位值,将其排列成一个队列,长度固定为N,采用先进先出原则,当采样到一个新数据时就将该数据放入队尾,并丢掉队首的一个数据;2)把队列中的N
个数据按照从大到小进行排列,去掉头尾两数,即数据中的最大值和最小值,而后计算剩下数据的算术平均数并作为相位差值输出。这种滤波方法优点是不仅能够消除脉冲性偶然出现的干扰,还能抑制周期性干扰。
PID控制器是控制系统中最常用的闭环控制器,如图5所示,PID控制器通过比例调节、积分调节、微分调节共同作用被控对象的输入偏差,通过线性拟合输出控制量,该控制量又反馈到被控对象输入端,从而对输入偏差进行修正。
图5 PID控制器原理框图Fig.5 Principle of PID controller
位置式PID和增量式PID算法是现今最常用的PID算法,本系统主要根据相位差Δu
来调整恒温晶振的压控值,进而调准1PPS和标准1PPS的相位,形成闭环控制,达到一个动态平衡状态。由于增量式PID算法计算量较小,算法复杂更低,故系统采用该PID算法。其公式如式(1)所示Δu
=u
-u
-1(1)
式中:u
——当前时刻的压控值;u
-1——上一时刻的压控值;T
——采样周期;e
——5s前相位差均值;e
-1——10s前相位差值;K
——比例系数;T
——微分系数;T
——积分系数。其中采样周期时间选择5s,压控值5s改变一次,最终得到的Δu
即为当前压控值与上一压控值的差值。从式(1)可以看出,确定PID参数是算法的关键所在。在PID算法中,比例调节的作用是对期望值与当前值的偏差做出瞬间反应,当比例系数越大时,调节力度增大,控制参数越稳定,反之比例系数越小,控制参数越容易震荡;积分调节是用来对比例调节环节产生的余差的积累与消除,通常与比例调节共同作用;而微分部分主要是调控偏差的变化速度,进而阻止偏差的变化。确定PID参数的方法很多,本设计的参数采用经验法和凑试法,按照比例(P)、积分(I),微分(D)的顺序依次进行,步骤如下。1)先令T
和T
的值为零即控制器为纯比例控制器,再逐渐调节比例系数Kp的值,当达到等幅振荡时,记录临界比例系数K
和临界振荡周期T
值;2)根据步骤(1)中K
和T
的临界值,采用经验公式,计算出调节器K
,T
和T
的值;3)最后再根据实际情况进一步调整。值得注意的是,不同的OCXO如果压控范围不同,需要适当调整PID参数。
根据设计,在相同环境下选择同批号硬件同批号生产的两块样机板进行试验调试。两块样机通过串口连接电脑PC端,并通过串口助手显示查看时间信息,同时利用示波器对比输出秒脉冲与授时精度小于10ns的时标仪的相位误差——授时精度,根据经验调整PID参数,详细记录在不同PID参数下样机输出稳定1PPS信号的授时时间以及授时精度,记录结果见表1。
表1 经典法控制器参数Tab.1 Controller parameters of classical method控制器类型KpTiTd1号样机授时成功时间2号样机授时成功时间1号样机授时精度2号样机授时精度P0.5Ku//6分15秒6分03秒57ns60nsPI0.55Ku0.85Tu/3分45秒3分53秒33ns30nsPID0.6Ku0.5Tu0.12Tu1分30秒1分17秒13ns15nsP0.43Ku//5分48秒6分09秒49ns51nsPI0.57Ku0.93Tu/4分13秒4分37秒26ns23nsPID0.66Ku0.47Tu0.25Tu1分07秒1分13秒19ns17ns
通过对PID参数的试凑调整,分析实验结果数据,当3个参数均大于或者小于K
=4,T
=1,T
=0.24时,授时精度上下浮动较大,由于PID参数的不同设定,授时成功时间也在浮动,考虑授时精度小就无法兼顾授时成功时间。所以综合考虑,当选用K
=4,T
=1,T
=0.24,此时的K
=6.67,T
=2,授时精度能达到13ns即在20ns以内,授时成功时间也较短。实验结果符合预期设想,基本能达到设计初衷。电力、通信等领域对时间的精度有着非常高的要求,对此需要高精度授时系统。在此条件下,本文设计的基于TDC和ARM的高精度授时系统是一个低成本、实现简单又能达到高精度授时目的系统,并详细阐述了各个模块设计。系统在正常工作的情况下,通过鉴相、PID控制器调整恒温晶振时钟频率,进而达到高精度授时要求。从实验结果可知,授时精度低于20ns,完全符合高精度授时标准。保障了电力、通信等系统授时要求。