郭超一,袁平路
(北京中水科水电科技开发有限公司,北京 100038)
随着自动控制系统在各行各业的应用越来越广,为各个系统中运行的自动化装置进行统一的对时也成为一种必须的要求,目前应用比较多的对时系统是卫星同步时钟对时系统。为保证时钟对时系统的稳定、高可靠性,电力系统的时间同步系统技术规范规定,主时钟的输入时源信号主要包括独立时间源基准信号和关联时间源基准信号。为实现多源判决机制,需要对时间源的有效性进行检测。在时间源的可用有效性检测中主要是检测多时间源之间以及与内部时钟的一致性和秒沿互差是否小于某一阈值(如1 μs)。
为实现检测两个时间源的秒沿互差,需要设计硬件电路提取两个秒沿互差,然后通过软件对差值进行测量,从而判断时间源的可用有效性,选取满足精度要求的时间源进行跟随。
硬件电路的作用主要是用比较的方式,将两个脉冲前沿的差值提取出来,便于后续的测量。在实际测试中,使用“异或门”进行两个秒沿互差的提取比较简单[1]。电路如图1 所示。
图1 秒沿互差提取电路
在电路中,分别将时间源A 的秒脉冲和时间源B 的秒脉冲接入到“异或门”的两个输入端,在输出端会将A 与B 的差值(A-B)以脉冲的形式表现出来,脉冲的高电平宽度即是两个时间源的秒沿互差。
因为时间源A 和时间源B 的秒脉冲在前沿和后沿都可能会存在差值,所以图中的电路在输出端(A-B)可能会产生前后两个脉冲。如图2 所示。
图2 秒沿互差提取电路的输出结果
输出结果显示的两个脉冲,即为两个时间源脉冲前沿的差值和脉冲后沿的差值。在时间源可用性分析时所测量的秒沿互差为脉冲前沿的差值,因此秒沿互差 (A-B) 不能直接输出到CPU 的测量IO 口,需要在硬件电路的输出端加入一个“与门”控制端“Ctrl”,通过CPU 的IO 口来控制秒沿互差的输出结果,将脉冲前沿的差值 (PPSX) 输入到CPU 的测量端口,从而正确的测量秒沿互差。图3 即为通过IO口进行控制后,CPU 测量IO 口的输入波形。
图3 CPU 测量IO 口的输入波形电路的输出结果
脉冲宽度测量软件程序主要包括主程序[2],定时器中断子程序,外部中断子程序,计算子程序,信息输出子程序等部分。
主程序是进行整个系统的初始化,按照既定的任务调取各个子程序进行各自相应的功能;定时器中断子程序是用于计算秒沿互差的值;外部中断子程序是标定基准秒脉冲的测算时刻;计算子程序是对测量到的秒沿互差值进行处理,得到标准规定的差值格式;信息输出子程序是将测量的秒沿互差信息按照约定格式进行输出。
主程序需要进行系统参数、定时器中断参数、外部中断参数,计算单元参数的初始化,通过IO 口控制秒沿互差PPSX 输出到测量IO 口,调用计算子程序进行计算并将计算结果输出等工作(图4)。
图4 主程序流程图
外部中断子工作流程如图5 所示。在A 或B秒脉冲到来时,记录下此时的时刻,重置启动定时器的初值。以便在下一次A 和B 脉冲前沿的秒沿互差到来之前,打开输出到CPU 测量IO 口的PPSX信号,并在A 和B 脉冲后沿的秒沿互差到来之前关闭PPSX 信号的输出,从而将后沿秒沿互差屏蔽掉,防止CPU 测量到秒脉冲后沿的秒沿互差,对前沿差的测量造成干扰或产生错误值。
图5 外部中断处理流程
定时器中断子程序用于测量CPU 的IO 口输入的秒沿互差脉冲的宽度,其工作流程如图6 所示。
图6 定时器中断处理流程
在定时器初始化时,应该将工作模式设置为从模式中的门控模式[3]。当秒沿互差的脉冲前沿到来时,定时器会捕获当前定时器的计数值,当秒沿互差的脉冲后沿到来时,定时器会停止计数。当定时器产生中断时,表明定时器已经完成了一个计时周期,计时周期数加1。
当秒沿互差的后沿到来后,将定时器的捕获初值,定时器的终值和定时器的溢出周期数进行保存,以便在计算和处理子程序中对秒沿互差进行计算和处理。
本文使用硬件电路将两个时间源的秒沿互差提取成一个单脉冲,利用单片机定时器的门控模式功能进行单脉冲的宽度测量,再通过计算得出两个时间源的秒沿互差值,并通过串口的方式将差值进行输出。
根据本文介绍的秒沿互差的测量方法,通过在BSS-3 型卫星同步时钟上,对北斗卫星信号时间源、GPS 卫星信号时间源和其他关联信号时间源进行测试,能够将测量精度精确到100 ns 的级别,满足了时钟系统在多时间源可用有效性检测中的应用,符合相关标准的要求。