第29卷第8期
Vol.29 №8
计算机工程
Computer Engineering
2003年5
月May
2003
·博士论文·文章编号:1000—3428(2003)08 —0016—03 文献标识码:
A
中图分类号:T P393.11 FF高速以太网现场总线的时钟同步
姜华,吴俊,冯冬芹,褚健
(浙江大学控制系先进控制技术研究所,杭州310027)
摘要:介绍了现场总线基金会高速以太网协议(FF-HSE),并主要分析了基于简单网络时钟同步协议(SNTP)的时钟同步基本原理,提出了两种可以采用的网络时钟同步体系结构,并给出了Winsock时钟同步通信客户端程序。
关键词:现场总线;高速以太网;简单网络时钟同步协议; HSE
Time Synchronization in FF High-speed Ethernet Fieldbus
JIANG Hua,WU Jun,FENG Dongqin,CHU Jian
( Institu te of Advanced Process C ontrol, Zhejiang University, Hangzhou 310027 )
【Abstract 】This paper briefly introduces the technique of FF-HSE protocol (foundation fieldbus high-speed ethernet) ,then mainly analyzes the principle of time synchronization based on SNTP( simple network time protocol )and b rings up two available system constructions of time synchronization. Time synchronization communication program of Winsock is also provided.
【K ey words】Fieldbus;High-speed ethernet;Simple network time synchronization;HSE
1 基金会现场总线高速以太网协议简介
基金会现场总线(Foundation Fieldbus)是现场总线基金会时钟源,即使它本身不一定是一个精确的时钟,对于各种设备和工作站来说,都有相应的SNTP客户端软件,能同时
(Fieldbus Foundation)为适应自动化系统,特别是过程自动化系统在功能、环境与技术上的需要而专门设计的,它分低速(FF-H1)和高速(FF-HSE) 两部分,并均被现场总线国际标准IEC61158所采用。其中FF-H1网络以ISO/OSI模型为基础,取其物理层、数据链路层和应用层,并在应用层之上增加了用户层,构成了4层结构的通信模型。FF—H1主要用于过程工业(连续控制)的自动化,传输速率为31.25kbps,通信距离可达 1 900m(与传播介质有关,可加中继器延长)。FF-HSE则采用基于Ethernet(IEEE802.3)+TCP/IP的6层结构,主要用于制造业(离散控制)自动化以及逻辑控制、批处理和高级控制等场合,它迎合了控制和仪器仪表最终用户对可互操作的、节约成本的、高速的现场总线解决方案的要求。
HSE充分利用低成本和商业可用的以太网技术,并以100Mbps 的速率运行。HSE 支持所有的FF 总线低速部钟服务器交换时钟数据。时钟服务器通过简单网络时钟同步协议(SNTP)在HSE网
络中分发时钟,时钟客户机接收SNTP报文,然后根据接收的报文更改自己的时钟数据,从而实现设备同服务器的时钟同步。在HSE网络中,从时钟同步的角度看,设备只有两种:一种是时钟服务器,服务
器接收客户机的请求并向客户机分发当前的标准时间;另一种是时钟客户机,客户机向服务器发送请求报文并接收服务器发布的数据,每一个时钟客户机都同时被组态了两个时钟服务器地址(主时钟服务器和备用时钟服务器),主服务器失效时,客户机将向备用的时钟服务器发出请求。对于一个HSE网络内的所有设备,使其时钟同步是非常重要的,因为:
·调试与事件时间戳(timestamps):从不同设备采集的调试与事件时间戳是没有什么意义的,除非设备是以同一公共时间为参
分31.25kbps的功能,例如功能模块和设备描术语言。与链考。
接设备连接的H1设备的点对点通信,无须主机系统的干涉,而且,与一个链接设备相连的H1设备可以直接和与另一个链接设备相连的H1设备通信,也无须主机干涉。HSE 的技术特点是速率高(100Mbps),数据通信量大,与计算机互联容易,价格低。HSE有两类用途:一类是完成由于计算量过大而不适合在现场仪表中进行的高层模型或调度运算;
第二类是作为多条H1 总线或其他网络的网关。
2 时钟同步协议的工作原理
在基金会现场总线高速以太网协议中,每一个设备都有自己的系统时钟,能够保存当前的日期和时钟。
简单网络时钟同步协议(SNTP) 主要解决HSE网络内所有设备的同步问题,网络时钟同步协议(NTP)是一个跨越广域网或局域网的复杂时钟同步协议,它通常可以获得毫秒级的精度,而SNTP 是NTP协议的一个简化版本,目的是为了那些不需要完整的NTP协议实现复杂性的主机,但二者的时钟戳格式相同。SNTP版本4 在RFC2030 中有详细说明,NTP 协议在RFC1305中有详细说明。SNTP服务器被认为是一个精确的
·事物处理:事物处理需要精确的时间戳(timestamps)。
·仿真:复杂的事物往往需细分,由多个系统来处理,为保证事件的正确顺序,多个系统必须参考同一时钟。
·系统维护:完成某些功能,如果同时重装(reload)网络内的所有设备,整个网络必须拥有公共时钟。
HSE网络时钟同步的实现,必须对SNTP协议有深刻的理解,只有理解了客户机和服务器之间如何通过SNTP协议实现时钟的同步,才可以应用Winsock在客户机和服务器端编程实现时钟的同步,所以现在主要对SNTP协议的原理进行分析。SNTP所针对的基本问题如图1所示。HSE网络中的两台设备,它们都有独立的系统时钟,问题是如何实现各自系统时钟的自动同步。
假设:
·
在设备A和B的系统时钟同步之前,设备A的时钟设定为
作者简介:姜华(1976-),男,工学博士,主要从事现场总线及网络协议等领域的研究;吴俊,研究员;冯冬芹,副教授;褚健,博导
收稿日期:2002-04-19
10:00 am,设备B的时钟设定为11:00 am。
·以设备B为时间服务器,即设备A将使自己的时钟与设备B同步。
·数据包在设备A和B之间单向传输所需的时间为1s。
·数据包在设备B内部进行处理的时延为1s。
系统时钟同步的工作过程如下:
(1)设备A发送一个SNTP包给设备B,该包带有它离开设备A的时间戳,该时间戳为:10:00:00 am。
(2)当此SNTP包到达设备B时,设备B加上自己的时间戳,该时间戳为11:00:01 am。
(3)当此SNTP包离开设备B时,设备B再次加上自己的时间戳,该时间戳为11:00:02 am。
(4)当设备A接收到该响应包时,加上一个新的时间戳,
该时间戳为10:00:03 am。
至此,设备A已有足够的信息以计算两个重要的参数:
·S NTP数据包来回一个周期的时延。
·设备A和设备B的时钟差。
于是设备A能够设定自己的时钟与设备B同步。应当注意以上只是SNTP工作原理的一个粗略描述,在RFC2030 规范中,S NTP使用复杂的算法以确保时钟同步的精确性。
图1 SN TP协议的原理图
3 HSE时钟同步的物理体系架构
HSE网络结构复杂,根据服务器运行方式的不同,客户
端时钟同步的方式有两种选择:一种是服务器处于监听模式,等待客户端提出同步请求,所有的客户均同服务器保持同步,从而实现全网的时钟同步;另一种情况下,服务器以一定的频率在局域网中广播时
钟同步报文,客户端接收报文并依据报文中的数据修改本地系统时钟,从而实现同服务器的时钟同步,在客户端系统出错重启时也可以主动地发送时钟同步请求报文。这种良好的客户端设计方式可以很好地满足网络的互操作性。在我们的网络架构过程中,采用DATUM Tymserve2000作为网络时钟服务器,该设备综合了GPS接收器和SNTP服务器的功能,它能够接收GPS网络第 1 层的时钟信号,以及与以太网相连,响应来自客户端的SNTP请求。以下给出了这两种模式下的网络体系结构:
(1)服务器监听,客户设备提出同步请求如图2,在这种体
系结构下,Tymserve2000作为设备A
和B的时钟服务器,服务器处于监听(Listen)模式,HSE设备A和B向其发送时钟同步请求报文,时钟同步的具体原理上面已经有分析,客户端时钟同步的软件开发后面有详细描
述。需要指出的是SNTP的汇聚可能需要长达半个小时,这
意味着在修改SNTP主系统时钟之后,再过半个小时其它的
时钟才进行同步。这是因为SNTP将时钟的改变视为时钟系
统的不稳定。SNTP需在等待系统稳定后才会进行同步和传
递时钟的改变。
图2 服务器监听模式时的网络时钟同步(2)服务器局域网广播,客户端接收数据如图3,在这种体系结构下,服务器以一定的频率在全
网广播SNTP数据报文,客户根据接收的数据报文来实现同
服务器的时钟同步。为了进一步理解服务器发送的SNTP数
据包,连接了一个网络分析仪,以捕获和分析SNTP 数据报文。图4给出了应用。Network Associate分析仪进行跟踪的
结果,显示的是在这种网络架构中,局域网上发送的一个完
整SNTP包信息。
图3服务器广播模式时的网络时钟同步
图4 Network A ssociate分析仪输出的S NT P报文
4 HS E时钟同步客户端软件编程
以下在介绍Winsock编程原理之后,给出了通过S NTP
协议实现时钟同步的源代码。Winsock实际上是指
Windows
—17—
Socket,Socket是对应TCP/IP协议的最具典型的应用开发接口。作为网络应用编程界面,Socket隐藏了网络底层的复杂的结构和协议,使得编程人员可以简单地对网络进行操作。Socket 的通信有两种主要的方式:(1) 流方式(Stream Socket),也称面向连接方式,这种方式对应的是TCP 协议,其传输特点是通信可靠性高,按发送的顺序接收数据, 数据被看作是字节流, 无长度限制;(2) 数据报方式( Datagram Socket),又称无连接方式,对应的是UDP协议,这种方式不提供数据无错保证,数据可丢失或重复,并且接收顺序混乱,报文长度是有限的(最大长度可设为32768字节)。另外,在有的Socket 版本中,也可直接使用IP 协议,称为R awSocket,用于写底层的通信软件或协议。
Socket的编程原理基于套接字(Socket)的系统调用。应用程序首先必须通过系统调用Socket()创建套接字。然后调用Bind()将套接字地址(包括本地主机地址和本地端口地址) 与所创建的套接字联系起来。通过Connect()和Accept()两个系统调用建立套接字的连接,其中Connect()用于建立连接,Accept()用于使服务器等待来自客户的实际连接。Listen() 用于面向连接的服务器,表明它愿意接收连接,Listen()需在Accept() 之前调用。当一个连接建立后,就可以传输数据了。常用的系统调用有Send()和Recv()。Send()调用用于在指定的已连接的套接字上发送输出数据,Recv()调用用于在指定的已连接的套接字上接收输入数据。最后调用Close() 关闭套接字,并释放所分配给套接字的资源。
以下给出客户机同服务器实现时钟同步的部分源代码,程序的开发基于Visual C++6的集成环境。在本实例中,服务器处于监听状态(Listen),客户机给服务器发出SNTP请求报文,服务器发出针对请求的SNTP响应报文,客户机根据接收到的SNTP报文提供的时钟数据更改自己的系统时钟,从而实现同服务器的时钟同步。在不同的网络体系结构下,其时钟同步的软件实现都大致相同,此处不一一给出源代码。
/*-------------------------------------------------------
函数SendSNTPPacket()是客户端发出时钟同步请求报文
--------------------------------------------------------*/
BOOL SendSNTPPacket( int iSocket )
{
struct SNTPPacket SNTPSend;
/*SNTPPacket是根据SNTP协议写出的SNTP报文格式*/
SNTPSend.ControlWord=htonl(0x0B000000); /* 控制用头部域, 代表时钟精度,时钟请求间隔等数据*/
SNTPSend.R ootDelay = 0; /*往返延时*/
SNTPSend.R ootDispersion = 0;
/*和参考源的正常时钟差量,32bit的整数*/
SNTPSend.R eferenceIdentifier = 0;
/*时钟参考源,32bit的字符串*/
SNTPSend.R eferenceTimestamp = 0;
/
*客户最近更新的本地系统时钟,64b it的整数*/
SNTPSend.OriginateTimestamp = 0;
/*客户发出请求时的时钟,64bit的整数*/
SNTPSend.ReceiveTimestamp = 0;
/*服务器接收到请求时的时钟,64bit的整*/
SNTPSend.TransmitTimestampSecond = 0;
/*服务器发出响应时的时间,响应时的秒数据,64bit的整数*/
SNTPSend.TransmitTimestampFractions = 0;
/* 服务器发出响应时的时间,响应时的微秒数据,64bit的整数*/
/*向服务器发送出SNTP请求时钟同步报文*/
send to( );
—
18—
}
/*--------------------------------------------------------
函数SNTPR ecvData()是客户端接收来自服务器的时钟响应报文--------------------------------------------------------*/
void SNTPR ecvData(HWND hWnd )
{
struct SNTPPacket SNTPR ecv;
/*用于接受服务器的响应SNTP报文*/
int sockaddr_Size;
/*套接字地址的长度*/
time_t ntp_time;
/* ntp_time的含义可以看以下的计算过程*/
struct tm * lpNewLocalTime;
/*struct tm 格式的时钟数据*/
SYSTEMTIME Timecall;
/*系统自己的时间数据*/
float Splitseconds;
/*用于处理服务器响应的时间中的微秒级数据*/
sockaddr_Size = sizeof(servesockaddr);
/*从服务器接收SNTP数据报文*/
recvfrom();
}
/
* -----------------------------------------------------
以下是客户端应用接收的数据修改本地时钟的过程
--------------------------------------------------------*/
Cur_time = time ( NULL );
/*得到系统自己的时钟数据*/
/*网络服务器时间减去以1970年为基准的时钟总秒数,是64bit 的整数*/
ntp_time=ntohl( SNTPR ecv.TransmitTi
mestam.Second) - 2208988800;
/*2208988800是1970/01/01起到现在的秒*/
lpNewLocalTime =
localtime((unsig ned int *)&ntp_time);
/
* 根据接受到的服务器时间数据修正本地时间*/
Timecall.wYear=
lpNewLocalTime -> tm_ year + 1900;
Timecall.wMonth=
lpNewLocalTime -> tm_mon + 1;
Timecall.wDay=
lpNewLocalTime -> t m_mday;
Timecall.wHour=
lpNewLocalTime -> tm_hour;
Timecall.wMinu te=
lpNewLocalTime -> tm_min;
socket通信报文格式Timecall.wSecond=
lpNewLocalTime -> tm_ sec;
Splitseconds=(float)ntohl(
Splitseconds=
(float)0.000000000200*Splitseconds;
Splitseconds = (float)1000.0 * Splitseconds;
Timecall.wMilliseconds=
(unsignedshort)Splitseconds;
/*用修正以后的时钟数据更正系统时钟,从而与服务器同步*/
SetLocalTime(&Timecall);
(下转第25页)
(a) =0.05
(c)
ο =2.0
(b) =0.25
(d)
ο =100
图 3 取不同值 时,高斯 核SV M 学习所得的分界曲线,标 有*的样本点是支撑向量
4 结论
本文揭示了高斯核SV M 性能随参数
ο 从0到 ∞ 的变化 规律,证明了高斯核SV M 在 ο → 0 和 ο → ∞ 时具有的重 要性质,从而为高斯核参数 ο 的确定提供了理论上的
指导 作用,应用中具有参考价值。
参 考 文 献
1 Vapnik V.An Overview o f Statistical Learning Theory.IEEE Trans. Neural Networks,1999,10(5):988-999
2 Pontil M,Verri A.Support Vector Machines for 3D Object Recognition. IEEE Tran. Pattern Analysis and Machine Intelligence,1998,20(6):637
3 Burges C J C.A Tutorial on Support Vector Machines for Pattern Recognition.Data Mining and Knowledge Discovery,1998,2:121-167
4 Platt J C.Sequential Mini mal Opti mization:A Fast Algorithm fo r Training Support Vector Machines.Microsoft Research Tech. Report MSR-
TR-98-14,1998-04-21
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
(上接第18页)
5 结论
本文详细地分析了FF 高速以太网协议的时钟同步原
内的工业控制的发展具有里程碑的意义。
参考文献
1 阳宪惠.现场总线技术及其应用.北京: 清华大学出版社,1999
理,并给出了基于TCP/IP 协议进行Socket 编程实现时钟同步 的源代码。HSE 协议时钟同步的实现综合了TCP/IP 协议的原 理、Socket 编程原理以及SNTP 协议的原理,其实现思路对 开发HSE 协议中基于SNMP 协议的网络管理也有很大的参考 价值。FF 的高速以太网协议的开发无论在国内还是在国外 都正处于起步阶段,如果国内能够率先开发成功,那么我国 在现场总线这一高技术领域,将打破国外的技术垄断,对国
2 瞿 坦.数据通信及网络基础.武汉华: 中理工大学出版社,1996
3 陈 远.Unix 网络实用编程技术.北京:中国水利水电出版社,2000
4 Mill D.RFC2030:Si mple N etwork Ti me Protocol(SN TP)Version 4 for Ipv4, Ipv6 and OSI.1996-10
5Mills D.RFC1305:Network Ti me Protocol(N TP)Version3 Speci fication, Implementation and Analysis.1992-03
6 Fieldbus Foundation.FOUNDATION TM Fieldbus Specification HSE. 2000
—25—
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论