GPS北斗校时服务器(时间同步装置)助力桥梁检测系统建设
GPS北斗校时服务器(时间同步装置)助力桥梁检测系统建设
GPS北斗校时服务器(时间同步装置)助力桥梁检测系统建设
京准电子科技官微——ahjzsz
一、系统概述
整个采集系统分散在桥梁的各个部位。桥梁按照区域划分为若干区段,在主要几个区段中安置着信号采集机站,每组采集机站均和GPS校时器相连,GPS PPS接收器接受GPS时钟同步信号,做相应的处理得到时钟同步信号和绝对时间戳并发送给PXI采集设备,采集设备接收处理后的GPS同步信号,达到同步整个分布式采集系统。
二、系统组成
1.所谓时钟同步有以下2方面含义,只有2方面都达到同步,才能称为真正的同步采集。
a) 数据采样频率的同步,包括采样时钟信号的脉冲同步以及相位同步。
b) 时间轴上的同步,即采样点时间标签的同步。
2.GPS PPS时钟同步技术的系统组成
该系统主要由GPS接收器和NI PXI采集设备2大部分组成。结构如图1:
图1.GPS PPS时钟同步系统组成图
GPS校时器的输入端连接着一个GPS信号接受天线,接受来自GPS卫星发送的时钟信号,输出端分为3部分:
10MPPS(Pulse Per Second)信号:用于同步采集系统,作为采集系统的采样基频。此信号不包含任何的时间信息,仅仅为简单的脉冲信号,脉冲间隔为10纳秒。
1PPS(Pulse Per Second)信号:用于采集系统触发采集使用。此信号是一个很简单的,不包含任何时间信息(年或月之类)的脉冲信号,以1PPS为例,每秒发生1次脉冲,每个脉冲的宽度通常为100毫秒,PPS信号是一种较为简单的同步技术,但其效果却不亚于任何复杂的同步时钟信号。
绝对时间(GMT)信号:用于替代采集系统自身的时间标签。此信号采用NEMA标准,表现形式为GMT时间,以字符串方式显示,例如“06.001…..”,其中第一部分为年份,第二部分为年中天数,第三部分为一天的具体时间,精确到秒级。
PXI采集设备采用NI PXI 1045 18槽机箱,NI PXI 8187主控制器为主,采集卡为NI PXI 6652、6602、4472B,其中:
PXI 6652时钟同步模块采用NI提供的SMB(类似BNC同轴电缆的接口)接口于GPS接收器的10M PPS输出端相连,接收10M PPS时钟信号,并且将此时钟信号进行分频,把分频后的时钟信号提供到PXI机箱背板,提供给高速同步采集卡PXI 4472B作为采样时钟频率。
PXI 6602计数器采用接线端子板与GPS校时器的1 PPS输出端相连,需要同时接入2个输入端口,都接收1 PPS信号,第一个输入端收到信号后,按1 PPS频率进行计数,并设定采集时间,当达到采集的起始时间,PXI 6602提供触发信号,触发PXI 4472B开始采集;第二个输入端的1 PPS频率脉冲为4472B提供相位同步触发脉冲。
PXI 8187控制器的标准RS232串口与GPS接收器的绝对时间输出端相连,接收GPS接收器提供的绝对时间信息,并计算每个采样点的时间间隔+触发开始的绝对时间来获取该采样点的绝对时间标签。
3.采用NI LABVIEW虚拟仪器编写可视性较高的数据采集及处理软件。
因为分布式系统使用分布式算法,所以它的同步机制比集中式系统更为复杂。在集中式系统中能够做到的,在某一位置上能集收到系统的所有信息,然后由某些进程检测这些信息,再做出同步决策,而这在分布式系统中常常是不可能做到的。分布式算法一般有以下特点:
1)相关信息分布在多台机器上。
2)进程只根据本地可用的信息做出决策。
3)应避免系统中单机失效。
4)没有公共时钟或其他精确的全局时间源。
前面三点都是说在处理过程中的单个点上无法收集到系统的所有信息。例如,在做资源分配(以不会出现死锁的方式分配I/O设备)时,通常不应将所有的IO请求发送给一个管理进程.管理进程检查所有的I/O请求,根据其设备表中的信息决定满足请求或拒绝请求。在大系统中,将所有的请求发送给单个管理进程,会使这个进程的负担过重。而且象这样的单机失效会使整个系统变得不可靠。理想情况下,分布式系统应该比单机更可靠。如果分布式系统中某台机器停止工作,剩余的机器应该能够继续完成系统功能。最不希望看到的是,由于某台机器的失败(如资源分配器)导致许多其他机器(如它的客户)终止工作。为了在没有集中控制的情况下实现同步,需要采取与传统操作系统不同的方式。
上面列出的第4点也很重要。在集中式系统中,时间是很明确的。每个进程要知道当前时间,只要执行一个系统调用,操作系统内核就会返回当前系统时间给进程。如果进程A查询了系统时间,稍后进程B也去查询系统时间,那么进程B得到的时间将在进程A得到的时间值之后(也可能相等),肯定不会在此之前。分布式系统中,要达到这种时间的一致性不是件简单的事。
作为一个简单例子,考虑一下缺乏全局一致的时间对UNIX中make程序的意义。在UNIX中,大型程序通常分割成多个源文件,这样在修改某个文件时只要编译这一个文件,而不是编译所有的文件。如果程序有一百个文件,则不需因为有一个文件发生了较大的变化而重新编译所有文件,从而大大加快了程序员工作的速度。
通常,make程序的工作方式很简单。程序员在修改源文件后,启动nla~e。Make程序检查源文件及与它相应的目标文件的最后修改时间。如果源文件input.C的最后修改时间为2151,而相应目标程minput.o的最后修改时间为2150,make程序就可以确定在创建input.o后,修改了源文件input.C,因此要重新编译源文件input.C。相反,如果output.c的最后修改时间为2144,而output,o的最后改时间为2145,就不需要重新编译output,c了。Make程序遍历所有的源文件,找
出需要重新编译的文件,调用编译器编译这些文件。
现在,想象在没有全局—致时间的分布式系统中执行make程序。假设ouput.o的最后修改时间还是2144,随即修改了源文件output.c,但是由于编辑output.c的机器的时钟慢,所以修改后output.c的最后时间被指定为2143,如图11-1所示.这时,make程序就不会重新编译output.c结果,生成的可执行文件就包括由旧的源文件生成的目标文件和新的源文件产生的目标文件。 这样,程序的运行就会存在问题,而程序员要在代码中找到问题的出处,也是大伤脑筋的事。
上面我们看到,时间是人们考虑问题的基础,时钟之间的不同步会产生戏剧性的结果。因此,以“分布系统中的所有时钟可能同步吗?”这样一个简单问题开始研究同步是比较合适的。