基于ixp420嵌入式linux下SNTP协议对时系统的实现

时间:2022-10-29 10:04:17

基于ixp420嵌入式linux下SNTP协议对时系统的实现

【摘要】随着电力系统智能化网络化的高速发展,对整个系统的同步精度要求越来越高。本文通过对嵌入式linux下SNTP协议的深入研究和分析,着重探讨了在ixp420平台下结合使用GPS校准0秒的方式实现SNTP时间同步,并给出了具体实现方案。

【关键词】SNTP;时间同步;ixp420嵌入式linux平台

1.引言

电力系统是时间相关系统,无论电压、电流、相角、功角变化,都是基于时间轴的波形。电力系统被授时装置对时间同步准确度的要求大致分为以下4类:

1)时间同步准确度不大于1μs:包括线路行波故障测距装置、同步相量测量装置、雷电定位系统、电子式互感器的合并单元等。

2)时间同步准确度不大于1ms:包括故障录波器、SOE装置、电气测控单元/远程终端装置(RTU)/保护测控一体化装置等。

3)时间同步准确度不大于10ms:包括微机保护装置安全自动装置、馈线终端装置(FTU)、变压器终端装置(TTU)、配电网自动化系统等。

4)时间同步准确度不大于1s:包括电能量采集装置、负荷/用电监控终端装置、电气设备在线状态检测终端装置或自动记录仪、控制/调度中心数字显示时钟、火电厂和水电厂以及变电站计算机监控系统、监控与数据采集(SCADA)/EMS、电能量计费系统(PBS)、继电保护及保障信息管理系统主站、电力市场技术支持系统等主站、负荷监控/用电管理系统主站、配电网自动化/管理系统主站、调度管理信息系统(DMIS)、企业管理信息系统(MIS)等。

简单网络时钟同步协议(SNTP)是一个工业以太网中广泛使用的对终端及工作站进行时间同步控制的协议,它是一个简化了的NTP服务器和NTP客户端策略,它提供了全面访问国家时间和频率传播服务的机制,组织时间同步子网并且为参加子网的每一个地方时钟调整时间。它不需要实现NTP协议的完全功能,大大地简化了控制过程中复杂的时间控制。它可采用单播方式(点对点)和广播方式(点对多点)操作以及多播方式。该协议的基本功能是在控制网络内使其它时钟与标准的时钟源保持同步。它可以在各个现场设备进行时间同步控制。SNTP网络时钟传输的是以1900年1月1日0时0分0秒算起时间戳的用户数据协议(UDP)报文,用64位表示,前32位为秒,后32位为秒等分数。网络中报文往返时间是可以估算的,因而采用补偿算法可以达到精确对时的目的。SNTP授时方式可以为接入网络的任何系统提供对时授时精度可达到1s。

2.SNTP协议简介

2.1 SNTP时间戳格式

SNTP时间戳是在SNTP报文格式里出现的表现时间的基本单位。SNTP有一个专门的时间戳格式,表示为一个64位无符号的定点数,以秒的形式从1900年1月1日的0:0:0算起。时间戳包括两个部分:一是整数部分(Seconds),在前32位里,另一个是小数部分即秒以下的部分,在后32位(seconds Fraction)。在SecondsFraction部分,无意义的低位应该设置为0。如图1所示。

2.2 SNTP报文格式

SNTP时间报文的传输采用快速无连接的UDP方式进行,因此对它的描述紧跟在IP和UDP报头之后。SNTP时间报文格式如图2所示。

在SNTP里大多数这些字段被预规定的数据给赋了初值,其中,参考时间戳(DestinationTimestamp)是64位的时间戳,本地时钟被修改的最新时间。原始时间戳(OriginateTimestamp)是客户端发送的时间,64位。接受时间戳(ReceiveTimestamp)是服务端接受到的时间,64位。传送时间戳(TransmitTimestamp)是服务端送出应答的时间,64位。

2.3 SNTP时间同步过程

SNTP时间同步的实现过程主要分两大部分,即时间服务器端(SntpServer)的实现和客户端(SntpClient)的实现。具体过程如下:

(1)现场设备A(客户端)启动后每隔一定周期主动发出时间同步请求报文给现场设备B(服务器端),客户端将本地当前时间作为时间报文中的TransmitTimestamp传送给B,记该时间戳为T1。

(2)当此SNTP报文到达现场设备B时,现场设备B立即加上自己的当地时间Receive-Timestamp,记该时间戳为T2。并将接收到的T1的值赋值给OriginateTimestamp。

(3)当此SNTP报文离开现场设备B时,现场设备B再次加上自己的时间戳放在TransmitTimestamp里,记该时间戳为T3。一起封装后传到现场设备A。

(4)当现场设备A接收到包括了m_Orig-inateTimestamp,m_ReceiveTimestamp和m_TransmitTimestamp的时间响应报文时,获取本地当前时间作为m_DestinationTimestamp,记该时间戳为T4。

至此,现场设备A已拥有足够的信息来计算两个重要的参数:一是NTP数据包来回一个周期的时延RoundTripDelay,二是现场设备A和现场设备B的时钟差Offset。于是现场设备A能够设定自己的时钟与现场设备B同步。可以根据公式算出现场设备A与现场设备B之间的时间差。

3.1 CPLD程序设计

4.程序的固化和运行

首先将CPLD程序通过烧写器烧写到Flash中,然后将交叉调试好的Update_Systime和SNTP_Server程序通过tftp烧写到Ixp420的Flash存储模块中,再进行调试和运行,经过同步信息的交换,客户机时钟与服务器时钟实现了同步。

5.结束语

本文基于Ixp420平台的Linux系统对sntp时间同步报文的收发模块流程进行实现,并通过使用CPLD锁存GPS零秒的方式提高了同步的精确度,有效地解决了原来在各电力系统设备上存在的时间同步方面的问题,具有一定现实意义。

参考文献

[1]简单网络时间协议(SNTP)(RFC1769——Simple NetworkTime Protocol).

[2]盛红岩,王飞雪.基于Linux系统的SNTP协议的研究与应用[J].电脑知识与技术(学术交流),2007(01).

[3]毛德操,胡希明.LINUX内核源代码情景分析(上,下册).

[4]高世伟,乔卫民,敬岚.基于uCLinux的嵌入式通讯的设计[J].微计算机信息,2005(29).

作者简介:钟磊(1977—),男,回族,浙江宁波人,硕士,工程师,现供职于江苏金智科技股份有限公司。

上一篇:林业主要病虫害发生原因与防治对策 下一篇:园林绿化苗木种植技术