SNTP授时服务器设计_第1页
SNTP授时服务器设计_第2页
SNTP授时服务器设计_第3页
SNTP授时服务器设计_第4页
SNTP授时服务器设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、绪论1.1研究背景及意义随着社会经济不断发展,自动化设备应用越来越广泛,在广电网络、铁路自动化信息系统、油气管道生产监控、智能电网、移动通信等行业信息化建设中,人们对信息控制系统精度要求越来越高,需要一个统一的时间管理,尽可能的使各设备时间同步。如果时间不同步,很容易造成数据丢失异常、设备拒动误动,从而造成巨大的事故。因此,需要迫切对设备时钟进行统一管理。目前大部分设备是采用晶体振荡器来维持本地时间,但由于设备存在的微小误差会随着时间积累而慢慢放大,所以需要NTP协议的授时服务器,紧密跟随标准时间。NTP(NetworkTimeProtocol,网络时间协议)是目前应用最广泛的一种网络授时技术。NTP具有应用范围广、授时精度高的特点,既能应用于局域网内,又能应用于广域网内,授时精度在局域网内可以达到毫秒级,在广域网内为几十个毫秒。NTP在应用时通常采用客户端/服务器模式,通过请求、应答的方式实现客户端时间到服务器的同步。相较于昂贵而笨重的原子钟,低成本的授时服务器是一个适用性极广、时间精度又相对较高的方案。1.2国内外研究现状目前可用的时间同步的主要方式有以下几种:(1)秒脉冲对时:秒脉冲即1PPS脉冲,就是时钟源每秒都要输出的脉冲信号,它的幅度宽度都是符合一定规定的,该脉冲的上升沿时间准确度通常小于1μs,其时间准确度较高,精度可达到微秒级,利用这种信号校时的方式称为秒脉冲对时。(2)串口通信对时:它又称为串口校时,是以GPS或者北斗定时信号建立时间参考,每秒发送一次时、分、秒、年、月、日等时间信息,当然也可包含接收GPS卫星数、告警信号等其他相关的内容,报文信息的编码方式有ASCII码、BCD码、或十六进制码等。(3)IRIG-B码对时:IRIG码是美国靶场仪器组的一种串行时间码,串行格式应用最为广泛,IRIG串行标准二进制时间码格式由于采用了串行通信的方式,其分为直流码和交流码两种,发送周期为一秒,所携带信息中包含秒脉冲和绝对时间信息,信息量大且具有较高分辨率。直流IRIG-B码编码方式为脉宽编码,电平格式为TTL,包含秒字段、分字段、时字段、天字段、年字段、控制功能字段、二进制秒记日字段等几部分编码。其利用脉冲宽度作为编码方式,其中码元"1"和"0"的脉冲宽度分别为5ms、2ms。交流码是用直流码对标准正弦波进行幅度调制得到,在实际当中对于IRIG-B码来说标准正弦波的频率为1KHz,正好为直流码码元速率的十倍,这是因为载频与直流码码元速率必须严格相关。(4)卫星对时:卫星对时是利用卫星接收机获取卫星时间的一种对时方式,卫星可以是GPS、北斗、GLONASS等。卫星接收机可接收到授时精度至纳秒级的时间信息,转化为1PPS和串口输出给用户。卫星对时实质上是以卫星原子钟为时钟源,将秒脉冲授时和串口通信授时结合起来,即综合校时。以GPS为例,GPS时间与UTC时间是有偏差的,所以在GPS导航电文中,载有二者关系及常数差,所以授时精度高。(5)NTP协议对时:NTP是英文NetworkTimeProtocol的简称,中文含义为网络时间协议,是用来向网络中的各个终端提供时间的协议,目前被internet用作网络时间协议。设计思想借用典型的C/S模式,即由NTP客户端周期性的向NTP服务端发送带有时间戳的时间请求报文,NTP服务器以带有时间戳的NTP应答报文作为回应,NTP客户端通过计算这两个报文的往返时间、单程延时、时间偏移量,最终获得相对精确的同步时间。

2、SNTP协议对时技术原理及理论2.1、UTC时间UTC(UniversalTimeCoordinated)是协调世界时,由于英文缩写CUT(CoordinatedUniversal

Time)与法文缩写TUC(TempsUniverselCordonné)相异,故统一简称UTC。又称国际协调时间、世界标准时间、世界统一时间。世界时UT(UniversalTime)是指本初子午线的平太阳时,又称格里尼治平时,或者格林尼治时间。协调世界时是一种在时刻上非常逼近于世界时的时间计量系统,秒长刻度采用原子时的秒长。国际原子时秒长由铯原子能级跃迁频率决定的,精度和稳定性极高,准确度每日为数纳秒,而世界时的准确度略低于原子时,为每日数毫秒。对于这种情况,在1972年达成一种折衷时标,称为世界协调时。在一些有需要的情况下,国际地球自转事务中央局调节世界协调时会加入正或负闰秒,旨在使世界时与协调世界时的时差不会超过0.9秒。2.2、卫星时钟源简析卫星时钟源是以准确度高、性能稳定的原子钟作为时钟源,一般采用铯原子钟。目前主要的四大全球卫星导航系统(GNSS)为美国GPS、中国北斗卫星导航系统(BDS)、俄罗斯GLONASS以及欧盟的GALILEO。其中GPS、GLONASS、GALILEO授时精度为20~100纳秒BDS授时精度10纳秒。GNSS卫星系统实现定时、定位功能,由空间卫星部分、地面监控及服务部分和用卫星接收部分三部分组成。如今很多领域,卫星接收模块已经普遍应用。本次SNTP时间服务器的UTC时间信息由卫星接收模块提供。卫星接收模块获取UTC时间信息作为外部时钟源的实现过程是:空间卫星持续发射导航电文,卫星接收模块通过地面监测及服务部分与空间卫星进行通信,接收机不断接收导航电文。卫星接收模块将获取的标准UTC时间信息传送给SNTP时间服务器,时间服务器通过解码、转换获得精确的时钟,然后对外进行精确授时。2.3、SNTPSNTP是SimpleNetworkTimeProtocol的缩写,即简单时间协议,是一种应用在局域网的同步时间协议,是NTP协议的简化版本。其报文格式、延时算法、计算时间差算法等均与NTP相同。NTP产生于1985年,由DavidL.Mills在特拉华大学设计实现,包括IP时间戳、时间协议及ICMP时间戳消息等。NTP使用修改的Marzullo算法选择授时精度高的时间服务器,旨在将局域网或广域网内的客户端UTC时间同步到毫秒级误差,用以减小网络延迟,弱化网络变化对时间的影响。大多数情况下,NTP根据网络环境和外部时钟源的变化,能够提供1~50毫秒的授时精度。SNTP相对于NTP,主要缩减了访问安全、服务器冗余和时钟频率校正部分,时间准确度不变。该协议主要表现为Server/Client模式,也可以实现点对点的网络中,对等体可以进行时间同步,互为对方的时间源。其通讯使用用户数据协议(UDP),收发时间戳信息,依靠端口123完成通信。同时可以广播,客户端会被迫进行时间同步。图2.1服务器工作示意图图2.1所示是SNTP时间同步系统的基本结构,该时间同步系统包括时钟源、服务器、客户端三部分。其中一台服务器可以通过连接链路与多个客户端进行时间同步,只需要双方进行一次数据的往返,就可以通过时间偏差算法计算出相差时间。客户端通过使用纠偏算法,消除时间差,达到与服务器的时间统一。在互联网中,时间基准为协调世界时(UTC)。因此SNTP时间服务器只需要与导航卫星或者国家授时中心进行时间同步,即可获取标准UTC时间信息。2.4、SNTP时间同步原理简单时间协议(SNTP)基于客户端和服务器之间的数据包交换,又称作在线协议。当服务器与客户端的时间戳交换后,通过同步算法计算出数据包往返一次的时间,旨在修正系统时钟的偏差。SNTP具体的同步原理传输模型如下图2.2所示:图2.2同步原理的传输模型图图2.2描述了SNTP同步协议的操作。客户端向服务器发送用户数据报协议(UDP)数据包,其中包括本地时钟T1的时间(原始时间戳)。当服务器接收到请求时,新时间T2将被注册为由服务器本地时钟(接收时间戳)指定的接收时间。在处理请求之后,服务器发出包括答复离开服务器T3的时间(发送时间戳)的答复。客户端收到回复,就会立刻注释到达时间T4(目的地时间戳)。这组时间戳可帮助客户端计算往返时间(δ)以及服务器与客户端时钟之间的时间偏移(θ)。假设传输链路对称(两个方向的延迟相等),则这些时间可以由以下公式表示:θ=T2-δ=在式中,可以看出θ、δ的值仅与T2、T1差值、T4、T3差值有关,与T2、T3之间差值无关,所以SNTP时间服务器应答请求的时间不影响授时精度。因此,客户端只要获取T1、T2、T2.5、SNTP报文格式SNTP与NTP有相同的报文格式。NTP时钟同步报文如表2-1所示,表中各个字段的含义如下:(1)LI:闰秒标识,英文LeapIndicator的缩写,字段容量为2bit,可以表示最后一分钟增加或减少一秒,其取值为“00”时定义无预告;当该标识值为“01”时表示最后一分钟为61秒;值为“10”时表示最后一分钟为59秒;当该标识取值为“11”时,则警告时钟未同步。Table2-3NTPclocksynchronizationmessageformatLIVNModeStratumPollIntervalPrecisionRootdelay(32bits)Rootdispersion(32bits)Referenceidentifier(32bits)Referencetimestamp(64bits)Originatetimestamp(64bits)Receivetimestamp(64bits)Transmittimestamp(64bits)Authenticator(64bits)(2)VN表示版本号,英文VersionNumber缩写,字段容量为3bits,VN用二进制数表示,版本号为4是表示为“100”。(3)Mode:字段容量为3bits,表示工作模式。其取值定义是:0定义为保留、1定义为主动对称模式、2定义为被动对称模式、3定义为客户端模式、4定义为服务器模式、5定义为广播模式或组播模式、6定义为保存为NTP控制信息、7预留给用户使用。(4)Stratum:表示服务器工作的级别,并且该字段仅支持服务器端,字段容量为8bits,当Stratum字段取值为0时,表示故障信息;该字段取值为1时,表示工作在一级服务器;该字段取值为2~15时,表示工作在二级服务器;该字段取值为16~255时,表示保留。(5)PollInterval:轮询时间,即两个数据包的时间间隔。(6)Precision:系统时钟精度。(7)RootDelay:指示和主时钟参考源的往返时间。(8)RootDispersion:系统时钟与主时钟参考源的最大误差。(9)ReferenceIdentifier:时钟参考源的标记。(10)ReferenceTimestamp:系统时钟最近更新或预设的时间。(11)OriginateTimestamp:客户端发送请求时间戳的时间。(12)ReceiveTimestamp:服务器收到请求时间戳的时间。(13)TransmitTimestamp:服务器向客户端发送时间戳的时间。(14)Authenticator:版本验证信息。2.6、SNTP工作模式SNTP工作模式共有四种,分别为:客户端/服务器(Client/Server)模式也称单播模式、广播模式、多播模式、对等体模式。在时间服务器和客户端双方IP地址确定的情况下,适用客户端/服务器模式;当两台主机地位均等且被动端IP地址确定,均可以相互发送时间同步请求,适用对称模式;当服务器IP地址未知,或者客户端较多时,适用于广播模式或多播模式。2.6.1客户端/服务器模式图2.3客户端/服务器工作模式示意图SNTP最典型的工作模式是单播模式,即客户端/服务器模式。在单播模式下,服务器向客户端进行单向时间同步。其工作方式如下(1)客户端向服务器发送SNTP时钟同步请求信息,定周期轮询,信息包括Mode以二进制字段设为“11”,OriginateTimestamp字段负责承载发送请求时间戳的时间;(2)服务器收到客户端的请求信息后,将发送应答信息,应答信息中的报文将二进制数“100”置于Mode、ReceiveTimestamp、TransmitTimestamp字段,并且收到发送请求时间戳信息;(3)客户端将时钟同步信息解析,根据时间戳时间和相关时间字段信息,依靠SNTP算法将时间偏差和往返时间准确计算出,从而同步本地时钟。2.6.2、对称模式对称模式是指两个设备之间地位对等,只区分主动发送和被动接收。其中任意一方可以发送时间同步请求,是主动对等体;另一方需要被动恢复,是被动对等体。对称模式运行方式如图2-4所示:(1)对等体的主动一方给被动一方发送时间同步请求信息,信息包括Mode以二进制字段设为“11”,OriginateTimestamp字段负责承载发送请求时间戳的时间;(2)被动方收到主动方的请求信息后,将发送应答信息,应答信息中的报文将二进制数“100”置于Mode、ReceiveTimestamp、TransmitTimestamp字段,并且收到发送请求时间戳信息;(3)对等体主动方将时钟同步信息解析,根据时间戳时间和相关时间字段信息,依靠SNTP算法将时间偏差和往返时间准确计算出,从而同步本地时钟。(4)对等体主动方给被动方发送主动标记;(5)对等体被动方识别主动标记,启动对称模式,模式成功切换后,对等体双方即可进行时间同步。2.6.3、广播模式广播模式适用于客户端只需要接收同步信息、服务器IP地址不确定、时间精度不高的情况下,优点是所需网络资源少。具体运行方式如下图2-5所示:(1)服务器工作在广播模式,定周期轮播广播报文,Mode字段设置为5,报文地址为255.255.255.255;(2)客户端收到广播报文,向服务器发送SNTP时钟同步请求信息,信息中Mode以二进制字段设为“11”,OriginateTimestamp字段负责承载发送请求时间戳的时间;(3)服务器收到客户端的请求信息后,将发送应答信息,应答信息中的报文将二进制数“100”置于Mode、ReceiveTimestamp、TransmitTimestamp字段,并且收到发送请求时间戳信息;(4)客户端将时钟同步信息解析,根据时间戳时间和相关时间字段信息,依靠SNTP算法将时间偏差和往返时间准确计算出;(5)最后,客户端处于广播模式客户端状态,不断侦听广播报文,根据到来的广播报文对系统时钟进行同步。2.6.4、组播模式组播模式是对广播模式的扩展,具体步骤和广播模式类似,具体运行步骤如下图2-6所示:组播模式与广播模式的不同是:当客户端计算出时间差和往返时间后,进入组播模式,利用SNTP相关算法更新本地时间,同时可以与同处于组播模式的客户端进行时间同步。

三、硬件设计SNTP时间服务器硬件系统主要分为四个部分:卫星时钟源部分、网络数据处理和控制部分、网络授时接口部分、用户接口部分;还包括相关的辅助电路部分。本章主要介绍SNTP授时服务器的设计目标、硬件需求分析、硬件设计方案和电路设计方案。3.1SNTP授时服务器设计目标及硬件需求3.1.1SNTP授时服务器设计目标在具体的使用场景中,授时服务器完成与客户端的时钟同步过程是:SNTP时间服务器通过GPS时钟源模块实时获取标准UTC信息,将信息送入处理器进行数据处理,从而同步服务器本地时间,授时服务器通过网口向客户端发送时间同步报文以完成时间同步,授时精度可以达到毫秒级。总体目标是设计一款低成本、高精度、多接口的授时服务器,可以向多种客户端提供精确的授时服务。时间同步的精度要求在10ms内,成本低于市面上百分之八十的授时服务器。3.1.2SNTP授时服务器硬件需求以下为授时服务器的硬件需求:STC15单片机系统板IAP15W4K58S4核心板具有较好的数据处理性能和较低的成本;中科微出品的GPS卫星高精度时间源模块,用以提供标准UTC时间信息,定时精度10毫秒;拥有以太网接口可以与客户端进行时间同步;拥有串行接口,可以进行设备调试、系统开发,可以获取外部时钟源信号;拥有EEPROM电路,可以存放需要掉电保护的一些数据,比如IP地址以及参数配置等。3.2授时服务器的硬件设计方案在设计服务器框架的时候考虑了两种方案:一种是采用STM32单片机作为数据处理和控制中心,基于ARM构架,外接具备网络接口、可以对外授时的芯片作为服务器。虽然性能比较强大,但是在局域网中,客户端并不多,网络数据吞吐量并不大。而且经济性不是很好。另一种采取的是STC15W单片机作为数据处理和控制中心来搭建授时服务器设计。应用场景为局域网中较少客户端访问,数据处理量不大,稳定性较好,网络授时精度可以达到目标要求。其次,这种方案经济性较好,仅有前者成本的三分之一,授时精度与第一种方案相当。本项目采用第二种设计方案,图3.1是授时服务器的组成框图3-1是授时服务器的组成框图GPS时钟源部分是采用GPS/BD双模接收机模块,获取导航卫星的导航信息,并且解析并提取时钟信息并同步本地时钟。数据处理及控制部分负责处理、解析、收发数据,是时间服务器的控制核心,采用嵌入式微处理器实现,并且对GPS时钟源、网络接口及用户接口进行选择、配置和控制。网络接口部分包括网络处理芯片及相应接口。用户接口部分向本地用户提供功能信息并接受用户的控制输入。【1】3.3服务器硬件设计结构框图3.3.1服务器的设计在设计的过程中,将每一部分根据设计需求分析结果进行调整,最终保证服务器的授时精度和稳定性。本次设计奉行系统最小化的原则,对系统进行简化设计系统可以对外提供SNTP时间服务。其SNTP时间服务器硬件结构框图如图3.2所示:将卫星时钟源部分与数据处理和控制部分进行硬件连接,即GPS/BD双模卫星时钟源模块通过串行接口与STC15W单片机进行通信,GPS/BD双模卫星时钟源模块向STC15W单片机提供1PPS秒脉冲信号以及时码信号,用I/O口进行硬件连接;时码信号所带的UTC时间信息通过串口传送给单片机,并保持和秒脉冲信号上升沿的同步。网络接口部分与数据处理和控制部分通过串行接口进行通信,即STC15单片机和CH9126之间通过串口和I/O口进行数据交换,将时间信息同步。网络接口和用户接口部分为CH9126网络接口芯片与客户端的硬件连接。网络接口芯片通过RJ45接口与客户端连接,实现SNTP时间服务器与客户端用户之间的通信。主要的外围电路介绍:GPS/BD双模时间源模块通过串口通信为STC15单片机提供标准时码和1PPS秒脉冲的串口信号。服务器可以获取不同外部时钟源,包括中科微的3通道GPS模块3通道北斗卫星定位导航模块和国家授时中心的原子频标时间基准等作为时钟源,用来获取标准时钟信号且不依赖于计算机网络;网络接口芯片CH9126拥有RJ45接口,可以用于连接客户端进行时间同步;microusb接口电路为系统提供相应的软件调试接口;RS485接口通过串口通信,可以帮助系统进行开发、调试、配置等功能;拥有EEPROM电路,可以存放需要掉电保护的一些数据,比如IP地址以及参数配置等。3.3.2客户端的设计客户端主要采用STC15作为数据处理及控制核心,使用CH9126芯片的客户端模式以及外围相对应的系统各部分。主要框图设计如图3.3.2所示:图3.3.2SNTP客户端的设计CH9126芯片通过以太网向SNTP服务器获取标准时间,通过串口通信输出给单片机,同时还可以通过LCD12864显示屏实时显示。从而完成时间同步。3.4授时服务器主要器件3.4.1GNSS时钟源模块GNSS时钟源部分本设计采用GPS\BD双模卫星接收模块,它除了可以提供精确的地理位置信息,还可以提供精度较高的时间同步。这是中科微的一款名为ATGM336H的芯片,电路图如下:这款芯片授时精度小于30ns,满足授时服务的要求,功耗小于90mW,灵敏度高达为160dBm,室内室外等使用场景均可满足。而且此模块数据更新频率为每秒一次,优秀的性能完全满足本设计的要求。具体的一些技术规范指标如下:

3.4.2数据处理及控制部分数据处理以及控制部分使用IAP15W4K58S4系统核心板,主要包括微处理器、RAM数据存储器、FLASH存储器、晶振等。可以实现从时钟源获取标准时间进行授时服务,而且还有守时电路进行精度较高的守时功能。该系统核心板可以满足以上功能,其特性如下【2】:采用增强型8051CPU,1T,单时钟/机器周期,速度比普通8051快8-12倍;工作电压:2.5V-5.5V;58K字节片内Flash程序存储器,擦写次数10万次以上;拥有片内大容量SRAM达4096字节,包括常规的256字节RAM<idata>和内部扩展的3840字节XRAM<xdata>;大容量片内EEPROM,擦写次数10万次以上;共8通道10位高速ADC,速度可达30万次/秒,8路PWM还可当8路D/A使用;内部高可靠复位,ISP编程时16级复位门槛电压可选,可彻底省掉外部复位电路;工作频率范围:5MHz~30MHz,相当于普通8051的60MHz~360MHz;内部高精度R/C时钟(±0.3%),±1%温飘(-40°C~+85°C)。不需要外部晶振和外部复位,还可对外输出时钟和低电平复位信号;四组完全独立的高速异步串行通信端口,分时切换可当9组串口使用:一组高速同步串行通信端口SPI;支持RS485下载,可将掉电模式/停机模式唤醒的定时器:有内部低功耗掉电唤醒专用定时器,功耗较低;拥有7个定时器,5个16位可重装载定时器/计数器,并均可独立实现对外编程时钟输出(5通道);IAP15W4K58S4单片机系统核心图如图3.3所示

图3.3STC15W4K58S4内部结构图IAP15W4K58S4单片机共有48只引脚,采用LQFP封装,其引脚分布图如图3.4所示:3.4.3网络接口部分采用CH9126网络接口芯片作为服务器是本设计一大亮点,可以用来进行网络数据处理,既可以做服务器又可以做客户端。它具有授时精度高、集成度高、稳定性佳和低功耗等特点。1、内置SNTP协议;2、授时精度为10ms;3、自带以太网介质传输层(MAC)和物理层(PHY),网络传输数据在协议栈各层中的解析在CH9126内部就可以自动完成;4、支持10/100M,全双工/半双工自适应,兼容802.3协议,可以在不同的网络环境下实现数据处理;5、兼容802.3x全双工流控和半双工背压流控;6、支持MDI/MDIX线路自动转换;7、支持通过网络和串口配置模块参数,串口支持5、6、7或者8个数据位以及1或者2个停止位,支持奇、偶、无校验、空白0、标志1等校验方式,波特率支持300-921600bps,支持一个独立的数据通道,提供网络转串口的数据透传功能;基于以上特性,使用CH9126网络接口芯片作为网络数据传输处理芯片可以极大地简化电路设计和软件编程。图3.5给出了CH9126网络数据芯片管脚图:3.5授时服务器电路设计3.5.1本方案使用IAP15W4K58S4单片机来完成系统的数据处理和控制部分在SNTP网络时间服务器系统中,通过接收并解析GPS/BD双模卫星接收模块获取的标准UTC时间信息,主要接收串口信号以及1PPS秒脉冲信号,再由IAP15W4K58S4内部的TIMx计数器功能来提取精确时间信息(年月日时分秒),并修正自己的时钟信息,使其与GPS时钟源保持同步。系统采用了C/S模式(主从模式),主控芯片主要完成的工作主要包括:首先,当客户端需要时间同步的时候,回向服务器发送基于SNTP标准的数据包,通过网络授时芯片CH9126将数据包解析之后,发送给IAP15W4K58S4,此时CH9126芯片向IAP15W4K58S4发送中断请求;当IAP15W4K58S4接收到信号时并将数据包解析,把此刻服务器端精准的时间信息重新打包、封装后,生成一个满足SNTP协议标准的数据包,通过CH9126芯片向网络发送给客户端,此时授时精度可以达到毫秒量级;通过服务器端和客户端的两次通信来完成客户端与服务器端的时间同步。IAP15W4K58S4的电路原理图如图3.7所示。图3.7IAP15W4K58S4的电路原理图3.5.2网络接口电路设计网络接口是采用RJ45接口,主要目标是完成网络服务器与客户端之间进行SNTP数据包通信。在电路原理图上,网络授时芯片CH9126和RJ45接口进行电气连接,从而实现数据包的发送和接收。其电路原理图如图3.8所示:其中,RJ45接口RXN/RXP信号对与CH9126的第1引脚和第2引脚相连;TXN/TXD信号对与CH9126的第3引脚和第6引脚相连;ELINK引脚与CH9126的第10引脚和第11引脚相连,在低电平时工作,在10/100Mbps时连接正常。3.5.3RS485串行接口设计RS485标准是一种适用于高速、长线传输、抗干扰环境下的一种常用串行数据标准,分为两线制和四线制两类接线,四线制仅仅可以实现点对点的通信方式,采用较少。【3】本设计采用两线制。表3.2列出了两线制RS485的引脚定义:表3.2两线制RS485芯片的引脚信号描述引脚名称功能描述1A485信号端A2B485信号端B3GND485信号地4GND对外供电地5VCC对外供电5V本设计中IAP15W4K58S4核心板微处理器的TTL电路中的高、低电平信号均不同于RS485标准定义的高、低电平信号。RS485传输差分信号标准逻辑“1”对应的两线间的电压差为+(2—6)V;标准逻辑“0”对应的两线间的电压差为-(2—6)V。TTL的标准逻辑“1”是在2V~3.3V电平,标准逻辑“0”是在0V~0.4V电平。两者电压不匹配,因此,必须要进行电平信号的转换。本设计采用的是RS485转TTL模块,如图3.9所示:TTL一端具有4个引脚,第1个是3.0~40.0V的宽电压VCC引脚;第2个和第3个是一对串口,分别是发送端和接收端;第4个是接地引脚。RS485一端是有3个端子,信号A、B端和接地端子。RS485接口实现了两个功能。功能一:可以使系统开发、调试、人机交互和用户配置通过串口实现;功能二:授时服务器工作时,单片机可以通过串口通信实现外部标准信息的接收。3.5.3电源、复位电路设计电源电路是为了向授时服务器各部分提供能使其稳定运行的电源电压,从外部通过USB转microb接口获取电源。电源分为3.3V和5V,其电路原理图如图3.11所示:由图可知:5V稳压采用的是AMS1117-5V芯片,3.3V稳压采用的是RT9193-33稳压芯片。其中5V电压主要给BD/GPS双模接收模块供电,3.3V电压给STC15单片机、网络接口芯片CH9126以及其他外围电路供电。例如CH9126芯片的电源电路设计如图3.12:有两种电压分别为3.3V和1.8V,输出1.8V电压用于以太网数据传输。

4、授时服务器软件设计SNTP授时服务器的软件设计主要分为四个部分:系统初始化、参数配置、时间同步与守时程序设计和SNTP授时服务。本章介绍三个环节,首先对SNTP时间服务器的软件需求和设计方案进行分析,其次说明软件开发所用的平台,重点介绍软件设计的实现过程。4.1软件设计功能需求分析(1)、可以获取标准时间UTC,并且转换为当地所在时区时间;(2)、方便进行时间同步的服务,可以通过串口、RS485、LCD显示、网络接口等多种方式实现;(3)、设计守时电路,可以调整本地时间;4.2设计方案基于SNTP的时间同步服务器软件设计由两部分组成,是SNTP授时服务器的软件设计和SNTP客户端的软件设计。本设计的重点在于对SNTP授时服务器进行分析、研究、设计。SNTP客户端只进行简单介绍。本设计采用CH9126网络授时芯片,具有Server/Client两种工作模式,所以设计两种构架。软件设计的程序通过KeilμVision5软件开发平台进行编程。使用C51编译器进行程序编写编译、调试排错以及产品测试。由串口获取GPS提供的标准时间信息UTC,通过子程序精确取出所需要的时间信息并进行时区转换,再通过Server/Client模式进行SNTP数据包的收发,从而达到时间同步作用。4.3软件开发平台简介4.3.1KeilμVision5KeilC51是兼容单片机C语言软件开发系统,KeilμVision5是美国KeilSoftware公司出品,拥有C51编译器的最新最领先的版本,而且拥有宏汇编、连接器、完善的库管理以及一个非常强大的仿真器等,是一整套完备的开发方案。运行Keil的环境也要求不高,普通的WINXP、WIN2007、WIN10等操作系统都可以。KeilμVision5突出特性:1、KeilC51语句可以生成容易理解的紧凑汇编代码,同时目标代码的效率也很高,比较容易上手。2、KeilμVision5的模拟器可以仿真执行整个程序,可以比较容易发现和纠正错误,节省了时间,使软硬件开发同时进行,极大地降低了研发周期。3、KeilμVision5的性能分析器能帮助用户查看程序运行时间,代码写入区域,调用函数次数等功能,更加便捷实现代码优化。4、KeilμVision5支持8051内核,可以提供高性能和低成本的解决方案。4.3.2STC-ISPSTC-ISP是宏晶公司研发的一款下载编程烧录软件,主要针对STC系列单片机,STC89系列、12C5410系列和12C2052等系列均可以,使用简便。同时集成串口助手、例程、头文件、仿真器等一系列工具。4.3.3软件开发环境KeilμVision5用户众多,有非常强大的程序调试和代码编译仿真功能。图4.1显示出了KeilμVision5的开发界面:图4.1KeilμVision5的开发界面STC-ISP下载器简单易用,可以更改晶振、波特率等参数,其界面如图4.2所示:图4.2STC-ISP界面4.4程序框架设计程序主要分为GPS时钟源提取子程序、串口处理子程序、时间校正和延时子程序、授时子程序四部分。当IAP15W4K58S4单片机获取标准时间信息后,经过转换提取处理,将信息通过串口在LCD12864上显示出来。同时授时芯片CH9126通过串口获取标准时间,再通过LWIP协议栈给客户端进行时间同步。具体系统设计框图如图4.3所示:图4.3程序框架设计图4.5主程序设计根据软件设计需求,SNTP授时服务器软件设计框架主要研究主时钟时间获取算法、时间调节校正算法、守时算法以及从时钟时间获取算法(客户端时间获取算法);并且编程设计了必要的一些子程序。本设计分为SNTP时间同步服务器和SNTP时间同步客户端两部分,所以拥有主时钟和从时钟两种模式,可以用SNTP协议配置软件在上位机进行配置。软件设计的主程序主要作用在于完成串口数据和网络数据的处理,串口1负责与上位机通信,串口2负责接收GPS/BD卫星接收模块的标准时间信息,串口3负责连接LCD12864显示屏,串口4用以连接CH9126网络授时模块。具体流程图如图4.4所示图4.4主程序流程图4.6子程序设计4.6.1GPS时钟源子程序本设计时钟源来自GPS/BD双模卫星接收模块接收的标准时间信息UTC,标准时间信息UTC通过串行接口2完成与数据处理核心的通信。GPS/BD双模卫星接收模块数据传输格式为NMEA-0183标准数据格式。NMEA-0183是美国国家海洋电子协会制定的一种电子信息标准,是GPS设备的统一标准。其命令为$GPZDA、$GPRMC、$GPGST、$GPVTG、$GPGGA、$GPGNS、$GPGSA、$GPGLL、$GPGSV*3。本设计采用的模块主要用到$GPRMC命令,GPRMC为推荐最小数据量的GPS信息(RecommendedMinimumSpecificGPS/TRANSITData)。主要格式信息如图4.5所示:图4.5$GPRMC命令格式当GPS/BD双模卫星接收模块定位成功后,数据处理核心通过串口获取UTC信息,并且通过解析GPRMC命令格式提取标准时间信息,转化为当地时区的时间。同时通过PPS信号校正偏差,使本地时钟与之同步。具体的解析程序为:while(1) { Scan_Key(); if(Flag_GPS_OK==1&&RX_Buffer[4]=='G'&&RX_Buffer[6]==','&&RX_Buffer[13]=='.') { for(i=0;i<68;i++) { Display_GPGGA_Buffer[i]=RX_Buffer[i]; } Hour=(Display_GPGGA_Buffer[7]-0x30)*10+(Display_GPGGA_Buffer[8]-0x30)+8; if(Hour>=24) { Hour%=24; Flag_OV=1; } else { Flag_OV=0; } Min_High=Display_GPGGA_Buffer[9]; Min_Low=Display_GPGGA_Buffer[10]; Sec_High=Display_GPGGA_Buffer[11]; Sec_Low=Display_GPGGA_Buffer[12]; Flag_Calc_GPGGA_OK=1; }利用字符判定$GPRMC命令格式,获取时间信息,并且转换时区(东八区),转换时间为24小时制。存在Display_GPGGA_Buffer数组中,通过串口传给LCD12864显示。GPS时钟源子程序流程框图如下图4.6图4.6GPS子程序流程图在时钟提取方面,PPS信号和串口信号有一定延迟,通过对PPS信号和串口信号的修正,可以实现比较精确的1秒以上的本地时间,从而使本地时钟较为精确的正常运行。PPS信号与串口信号输出延迟如下图4.7所示:图4.7PPS信号与串口信号的输出关系4.6.2网口数据处理子程序的设计网口数据处理子程序主要完成了对CH9126芯片寄存器的配置,串口处理中断,以及端口初始化等,具体介绍如下:CH9126.c文件主要有以下几个方面:(1)CH9126使用时发送初始化串口命令,完成对串口的初始化。(2)启动CH9126线程,获取DS3231内时间数据,通过串口2、3送给CH9126。(3)定义了CH9126芯片使用的寄存器,包括数据通道和脉冲输出。具体如图4.8所示:图4.8寄存器配置(4)配置了网络参数、串口参数、通讯参数、控制参数、模块名称等命令码。(5)通过轮询发送方式打开串口,将返回值送到rt_device_open函数体判定,当为1时串口打开。rt_device_open(serial_ch9126_1,RT_DEVICE_FLAG_INT_RX);rt_device_open(serial_ch9126_2,RT_DEVICE_FLAG_INT_RX);4.6.3LCD12864显示子程序LCD12864通过串口3完成与数据处理核心的通信,通过判断位数显示时、分、秒。程序如图4.9所示图4.9LCD12864显示子程序通过对数据的整除和取余获取具体的时间刻度。4.6.4时间提取转换和守时程序设计标准时间UTC是本初子午线的时间,转换为北京时间需要进行时区转换,同时每四年有闰年,也需要在显示的时候判别出来,不然会导致本地时钟系统错乱。(1)时间转换设计,将ASCII码转化为数字,取Display_GPGGA_Buffer数组第七位作为十位,第八位作为各位,并且加八。具体代码如下图4.10所示:变量Hour存储小时数大于24时,日期进位,同时Hour取余获取当前的“时”。(2)闰年判定与显示:用年份与四做除法,同时剔除是400整数倍的年份。具体如下:bitIsLeapYear(unsignedintuiYear){ return(((uiYear%4)==0)&&((uiYear%100)!=0))||((uiYear%400)==0);}对于闰年的二月,需要辨别并且准确的显示出。采用switchcase语句判别,具体实现如下:unsignedchariDays; switch(Month_Value) { case1: case3: case5: case7: case8: case10: case12: { iDays=31; } break; case2: { iDays=IsLeapYear(Year_Value)?29:28; } break; case4: case6: case9: case11: { iDays=30; } break; default:break; } return(iDays); }(3)守时程序设计

5、授时服务器的测试本章主要介绍SNTP时间同步服务器和客户端的使用方法。5.1授时模块配置方法电脑端需运行SNTP客户端软件,将电脑的IP地址与模块的IP地址设置为一致,才能实现模块与电脑的时间同步。CH9126网络授时模块默认工作模式为SNTPCLIENT模式,默认规格参数如表5.1网络默认配置模块名称SNTP_MODULE模块IP192.168.1.200子网掩码255.255.255.0默认网关192.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论