一种计算机高精度授时控制方法与流程

文档序号:15115383发布日期:2018-08-07 19:54阅读:333来源:国知局

本发明涉及一种基于gps/北斗的计算机授时领域,特别是一种计算机高精确授时控制方法。



背景技术:

时间,是物质存在和运动的基本特征之一,是国际单位制七个基本物理量其中之一,是目前测量精度最高的一个基本物理量;精确时间更是推动高新技术发展的铺路石,是人类各项活动顺利开展的重要保证。

在人类进入信息社会后,物联网的层次推进应用,越来越多的设备分布在各个重要节点,然后又在中心汇聚,为行业的大数据服务提供数据依据,原本看起来很难收集和使用的数据现在很容易地用来发挥巨大作用,这些来自分布式设备的大数据正逐步为人类创造更多的价值。在整个系统中,必须保障全局时间的严格同步,如果系统中的各分布式设备不具备统一的时钟基准,那么得到的测量结果由于时钟差异将无法反映出真实情况,由于各数据无法反应在哪个时刻获取,它们之间就没有确定的关联性,最终这些数据也就无法发挥出应有的效果。例如,精确的时间同步对于涉及国家经济社会安全的诸多关键基础设施至关重要,如通信系统、电力系统、金融系统等(移动通信需要精密的时间同步以确保基站的同步运行、电力网需要精密的时间同步以有效传输和分配电力、金融系统需要精密的时间同步以保障经济的正常运行),高精度的时间服务系统已经成为衡量一个国家科技水平的最核心技术指标。

gps/北斗接收机通过解码卫星信号输出的nmea-0813协议报文(包含utc时间、位置等数据)及同步时标1pps(1pulsepersecond)信号,pps信号是占空比为10%左右周期为1秒的矩形波,报文是在接收机输出高电平pps信号(时长约100ms)后输出的。采用gps/北斗接收机作为应用系统的授时技术路线已是本领域常用的技术手段,由于嵌入式微处理器(如单片机、arm、dsp、fpga等)具有实时性高、中断资源使用方便、接口电平匹配等特点,基于嵌入式微处理器结合gps/北斗接收机的应用系统具体方案是:嵌入式微处理器的串口直接和gps/北斗接收机串口相连,通过解码gps/bd接收机输出的协议报文获得时间信息,从而实现时间同步,在一些时间精度要求高的应用场合,还会结合pps时标信号(该信号精度可达到纳秒级)来提高时间同步精度。如专利zl01134726.0提供了一种gps卫星授时遥测地震仪,实现同步数据测量、记录,同步定时起爆等;zl200710180533.2公开了一种高精度数据录取授时仪,将gps的秒脉冲信息和绝对时间信息传递给录取控制板并校正控制板的内部时钟,以满足精度要求不高于为1×10-4秒的应用场合,提供异步串行测试接口且通信速率不高于38400bps、测试帧长度固定的真值设备或被测设备输出数据的录取;专利zl200710176937.4提供了一种基于全球定位系统接收机的芯片级授时与同步方法及其设备,以满足低成本的要求,其一个实施例可在使用普通温度补偿晶振(0.5ppm)的情况下,实现200ns级别的授时精度和50ns级别的同步精度;zl200810060615.8提供了一种基于gps技术对电表授时的装置,为保证授时的精度,利用固定的补偿值补偿mcu和电表通信时间所产生的延时,具体是采用pps信号触发中断,把内部的当前时间信息全部存储起来,当把gps发送的报文信息全部解码出来后再把解码得到的时间信息加上触发后到解码完成所用的时间即可保证mcu内部的时钟与gps时钟保持比较高度的一致(误差在1us以内);cn105281859a公开了一种精确授时方法,在不需增加其他辅助设备前提下,在每分钟零秒时刻实现rtc时钟和gpsutc时钟同步,达到较精确的授时效果。

与基于嵌入式微处理器的应用系统相比,计算机虽然资源丰富,对外接口标准化如usb口和rs232串口等,使用方便,但是实时性差很多;通常,采用gps/北斗接收机对计算机实现授时的技术方案是:gps/北斗接收机的ttl电平串口收、发和1pps信号通过电平转换芯片连接到计算机的rs232串口,然后计算机开发软件读取解析rs232串口报文。为了提高对计算机的授时精度,往往还结合1pps信号实现,如2006年3月22日文献cn1749916a公开了一种用计算机接入gps秒脉冲信号实现精确时间对准的方法,gps数据通过rs232电平传送给计算机的第一个com口,pps秒脉冲经过电平转换电路变换为rs232电平,将rs232电平的pps信号通过计算机第二个com口接入该计算机,设置该计算机的第二个com的串口控制器,使得pps信号能够直接触发串口中断;2009年4月1日zl200820109345.0提供了一种计算机授时卡及系统,将gps模块连接到pci卡,计算机读取pci卡实现授时;2016年1月20日授权公告号cn103412839b提供一种方法,用于解决传统的vxworks操作系统下基于cpci总线的北斗授时定位模块驱动程序在保证有效控制的同时开发难度很大的问题;2017年5月31日文献cn106774637a公开了一种利用1pps信号进行计算机校时的装置及方法,计算机在同时收到gps数据和1pps信号的下一个整秒完成校时。时间戳计数器(tsc,timestampcounter)是cpu处理器中的一个计数器,它记录自启动以来处理器消耗的时钟周期数,随着处理器周期速率的比例的变化而变化,因此提供了非常高的精度。

即使gps/北斗接收机可以提供很精确的时间信号,但由于计算机系统的非实时特点,在串口以及1pps信号等任务中断处理存在时延因素,以及1pps信号的高电平持续时间一般在100ms左右,很难实现对计算机实现毫秒级甚至更高的时间精度。因此,如何实现对计算机时间的高精度授时,仍然是一件很有价值的研究。



技术实现要素:

为克服存在问题,本发明基于“一种计算机高精度授时装置”(已同日提出发明专利申请),提供一种计算机高精度授时控制方法。

所述的“一种计算机高精度授时装置”由计算机rs-232串口、接口电路和gps/北斗接收机组成。工作时先将gps/北斗接收机中串口输出和1pps信号进行光电隔离,然后对1pps信号进行调理整形,再经过电平转换,从计算机rs-232串口接入到计算机,接口电路和gps/北斗接收机相连,实现对计算机的高精度授时,具有结构简单、可靠性强、防雷防浪涌性能好等特点。

装置中的接口电路由电平转换芯片、dc-dc转换模块,二极管,电阻r201、电阻,电容,d触发器和光电隔离芯片组成,其中dc-dc转换模块和电平转换芯片、d触发器、光电隔离芯片相连;d触发器和电平转换芯片,d触发器和光电隔离芯片相连。gps/北斗接收机的两路输出信号(tx、1pps)采用光电隔离措施。gps/北斗接收机的1pps引脚,输出占空比为10%左右周期为1秒矩形波,经电阻连接到光电隔离芯片的输入端(第3引脚),然后从对应的输出端(第5引脚)连接到d触发器的cp端,由d触发器工作原理可知,d触发器的q端和q’端会输出互补的占空比为50%周期为2秒的方波。d触发器的q端连接到电平转换芯片输入端2ti,对应的输出端为2to,q’端连接到电平转换芯片输入端3ti,对应的输出端为3to;电平转换芯片两个输出端2to、3to连接到计算机rs-232串口的串口cts和串口dsr,d触发器的q’还连接到其d端。gps/北斗接收机的tx输出端经电阻连接到光电隔离芯片的输入端(第1引脚),光电隔离芯片中对应于tx输入端的输出(第7引脚)连接到电平转换芯片的1ti端,经电平转换芯片电平转换后从其1to输出到计算机rs-232串口的rxd。

为了达到上述目的,本发明具体的控制方法是:

1)计算机控制其rs-232串口的rts或dtr输出+3v~+15v高电平时,二极管导通,向dc-dc转换模块的vin端提供能源,经dc-dc转换模块转换后由其vcc端输出,向电平转换芯片、d触发器和光电隔离芯片供电;

2)计算机控制其rs-232串口的rts输出-3v~-15v低电平时,二极管截止,dc-dc转换模块的vin端无电压,dc-dc转换模块的vcc端无输出,电平转换芯片、d触发器、光电隔离芯片无电源供给;由此实现对接口电路的稳定供电和低功耗设计;

3)接口电路将1pps信号隔离、整形输出两路周期为2秒、占空比为50%的互补信号,这两路信号分别连接到计算机rs-232串口的cts端和dsr端,两路信号会分别触发计算机rs-232串口的cts中断和dsr中断,在这两个对应的中断服务程序中各自独立保存计算机本地的时间戳计数器tsc数值,当中断次数超过2次后,对这些数据进行分析计算,由此获得高精度时间授时。

所述的分析计算是指:

1)存在一个变量cts_count,统计cts中断次数;存在一个数组cts_tsc[30],保存每次cts中断时读取的tsc计数值。计算机rs-232串口的cts引脚电平变化触发进入cts中断服务程序,首先读取当前的tsc,并保存由cts_count指定的数组cts_tsc序号中,将cts_count加一操作,清除串口缓冲区,准备后续的串口接收操作;然后进行后续分析判断:如果cts_count大于等于2,则对数组cts_tsc[30]分别计算最近两次时间戳计时差值θ1、头尾两个时间戳计时差值θ2,对数组cts_tsc和数组dsr_tsc计算最近两次的时间戳计时差值λ,λ=(cts_tsc[cts_count-1]-tsc_dsr[cts_count-2]),只要满足θ1≤1000ns或者θ2≤500ns或者λ≤2000ns,就用[ymd]、[hms]设置计算机时间,同时把计算机的毫秒、微秒单元、cts_count、dsr_count清零。如果cts_count大于等于30,则将cts_count、dsr_count清零。

2)存在一个变量dsr_count,统计dsr中断次数;存在一个数组dsr_tsc[30],保存每次dsr中断时读取的tsc计数值。计算机rs-232串口的dsr引脚电平变化触发dsr中断进入对应服务程序,首先读取当前的tsc,并保存由dsr_count指定的数组dsr_tsc序号中,然后进行将dsr_count加一操作,最后清除串口缓冲区;然后进行后续分析判断:如果dsr_count大于等于2,则对数组dsr_tsc[30]分别计算最近两次时间戳计时差值ε1、头尾两个时间戳计时差值ε2,对数组dsr_tsc和数组cts_tsc计算最近两次的时间戳计时差值λ,λ=(dsr_tsc[dsr_count-1]-cts_tsc[dsr_count-2]),只要满足ε1≤1000ns或者ε2≤500ns或者λ≤2000ns,就用[ymd]、[hms]设置计算机时间,同时把计算机的毫秒、微秒单元、cts_count、dsr_count清零。如果dsr_count大于等于30,则将cts_count、dsr_count清零。

3)存在一个保存年月日的缓存变量[ymd];存在一个保存时分秒的缓存变量[hms]。计算机rs-232串口的rxd引脚接收到数据后进入串口接收中断服务程序后,读取接收的字节,保存到串口接收缓冲区,在串口接收缓冲区中检查接收的字节是否有0x0d和0x0a字符,如果有则根据nmea协议计算校验,如果校验正确,再判断从gprmc和gpgga报文中解码获得年月日、时分秒,保存到[ymd]和[hms]。

采用本发明的有益效果是:由于输入到串口两端dsr、cts为1pps信号隔离整形后的互补信号,占空比为50%周期为2秒的方波,有利于计算机准确计算脉宽,提高授时精度。

本发明的目的、特征及优点将通过实施例并结合附图进行详细说明。本发明中的所有元件均可采用具有相同或相似功能的其他型号代替,代替后的电路也属于本专利保护范围。

附图说明

图1是一种计算机高精度授时装置的原理框图。

图2是本发明所述的一种计算机高精度授时装置实施例连接方式图。

图3是本发明实施例的波形时序图。

图4是本发明实施例的串口接收中断处理流程图。

图5是本发明实施例的cts中断处理流程图。

图6是本发明实施例的dsr中断处理流程图。

具体实施方式

图1中,u101是计算机rs-232串口,u102是接口电路,u103是gps/北斗接收机。计算机rs-232串口(u101)和接口电路(u102)相连,接口电路(u102)和gps/北斗接收机(u103)相连。

图2中,u101是计算机rs-232串,u201是电平转换芯片,u202是d触发器,u203是dc-dc转换模块,u204是光电隔离芯片,u205是gps/北斗接收机;d201、d202分别是二极管;c201是电容;r201、r202、r203、r204、r205分别是电阻。

计算机rs-232串口(u101)的第2引脚rxd、第8引脚cts、第6引脚dsr分别和电平转换芯片(u201)的1to端、2to端、3to端相连;计算机rs-232串口(u101)的第7引脚rts、第4引脚dtr分别和二极管(d201)、二极管(d202)的一端相连,二极管(d201)、二极管(d202)的另一端和电阻(r201)的一端相连,电阻(r201)的另一端和电容(c201)的一端、dc-dc转换模块(u203)的vin端相连,电容(c201)的另一端接agnd地,dc-dc转换模块(u203)的vcc端和接口电路的网络标号vcc相连。

电平转换芯片(u201)的1ti端、2ti端、3ti端分别和光电隔离芯片(u204)的第7引脚、d触发器(u202)的q端、d触发器(u202)的q’端相连,电阻()r202)的一端和光电隔离芯片(u204)的第7引脚相连,电阻(r202)另一端接agnd地,d触发器(u202)的cp端和光电隔离芯片(u204)的第5引脚、电阻(r203)一端相连,电阻(r203)的另一端接agnd地。

接口电路的网络标号vcc和电平转换芯片(u201)的vcc端、d触发器(u202)的vcc端、光电隔离芯片(u204)的第8引脚、光电隔离芯片(u204)的第6引脚相连。

光电隔离芯片(u204)的第1引脚和电阻(r204)一端相连,电阻(r204)的另一端和gps/北斗接收机(u205)的tx端相连,光电隔离芯片(u204)的第3引脚和电阻(r205)一端相连,电阻(r205)的另一端和gps/北斗接收机(u205)的1pps端相连,光电隔离芯片(u204)的第2引脚、第4引脚接gnd地。

图3中,tp1是gps/北斗接收机(u205)的1pps引脚输出波形,tp2是d触发器(u202)的q端输出波形,tp3是d触发器(u202)的q’端输出波形。

为了进一步说明本发明的具体实施方式,结合图4、图5和图6所示的流程图,对应用本发明所述的的计算机高精度授时控制方法作具体描述,包括以下步骤:

步骤401:串口接收中断入口;

步骤402:读取接收的n字节,保存到缓冲区;

步骤403:在缓冲区中检查是否有0x0d和0x0a字符,如果没有,则执行步骤409;反之,则执行步骤404;

步骤404:根据nmea协议计算校验,判断校验是否正确,如果正确则执行步骤405,否则执行步骤408;

步骤405:检查当前报文是否为gprmc报文,如果是,则执行步骤407,否则执行步骤406;

步骤406:检查当前报文是否为gpgga报文,如果是,则执行步骤407,否则执行步骤408;

步骤407:按照nmea协议解码获得年月日、时分秒,保存到年月日缓存[ymd]和时分秒缓存[hms]随后,执行步骤409;

步骤408:清除串口接受缓冲区,随后执行步骤409;

步骤409:退出。

步骤501:cts中断入口,执行步骤502;

步骤502:读取当前cpu的时间戳计数器,并保存读取结果到cts时间戳计时数组cts_tsc,保存的数组标号=[cts_count],[cts_count]=[cts_count]+1,清除串口缓冲区,执行步骤503;

步骤503:检查[cts_count]是否大于等于2,如果是,则执行步骤504,否则执行步骤509;

步骤504:对数组cts_tsc分别计算最近两次时间戳计时差值θ1、头尾两个时间戳计时差值θ2,计算差值λ=(cts_tsc[[cts_count]-1]-dsr_tsc[[cts_count]-2]),执行步骤505;

步骤505:如果θ1≤1000ns,或者θ2≤500ns,或者λ≤2000ns,这三个条件只要满足一个,就执行步骤506,否则执行步骤507;

步骤506:用[ymd]、[hms]设置计算机时间,同时把计算机的毫秒、微秒单元清零,随后执行步骤508;

步骤507:检查[cts_count]是否大于等于30,如果是,则执行步骤508,否则执行步骤509;

步骤508:把[cts_count]、[dsr_count]清零,然后执行步骤509;

步骤509:中断服务退出。

步骤601:dsr中断入口,执行步骤602;

步骤602:读取当前cpu的时间戳计数器,并保存读取结果到dsr时间戳计时数组dsr_tsc,保存的数组标号=[dsr_count],[dsr_count]=[dsr_count]+1,清除串口缓冲区,执行步骤603;

步骤603:检查[dsr_count]是否大于等于2,如果是,则执行步骤604,否则执行步骤609;

步骤604:对数组dsr_tsc分别计算最近两次时间戳计时差值ε1、头尾两个时间戳计时差值ε2,计算差值λ=(dsr_tsc[[dsr_count]-1]-cts_tsc[[dsr_count]-2]),执行步骤605;

步骤605:如果ε1≤1000ns,或者ε2≤500ns,或者λ≤2000ns,这三个条件只要满足一个,就执行步骤606,否则执行步骤607;

步骤606:用[ymd]、[hms]设置计算机时间,同时把计算机的毫秒、微秒单元清零,随后执行步骤608;

步骤607:检查[dsr_count]是否大于等于30,如果是,则执行步骤608,否则执行步骤609;

步骤608:把[cts_count]、[dsr_count]清零,然后执行步骤609;

步骤609:中断服务退出。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1