基于IEEE 1588时间同步协议的cRIO数据采集装置的设计与实现
2016-08-01王金玉胡宾鑫宋广东姜龙刘统玉
王金玉 ,胡宾鑫 ,宋广东 ,姜龙,刘统玉
(1. 山东省光纤传感技术重点实验室,山东省科学院激光研究所,山东 济南 250014;2. 山东微感光电子有限公司,山东 济南 250014)
基于IEEE 1588时间同步协议的cRIO数据采集装置的设计与实现
王金玉1,胡宾鑫1,宋广东1,姜龙2,刘统玉2
(1. 山东省光纤传感技术重点实验室,山东省科学院激光研究所,山东 济南 250014;2. 山东微感光电子有限公司,山东 济南 250014)
摘要:设计并实现了一种基于cRIO的远程分布式数据采集系统。该系统利用cRIO特有的1588插件设计了时间同步程序,以及数据采集、触发保存、本地保存和数据TCP/IP上传程序。数据采集测试结果表明,该系统短期同步精度可以达到亚毫秒级,长期测试同步精度为毫秒级。该同步系统可应用于煤矿井下光纤微震监测系统中。
关键词:实时控制器;时间同步;IEEE 1588协议;精度
光纤微震传感器由于具有本质安全、不受电磁干扰和耐腐蚀等特性,广泛应用于煤矿井下等恶劣环境中。由于微震数据采集具有分散性、实时性的特点,因此煤矿井下光纤微震监测系统广泛采用分布式数据采集系统[1-2]。分布式数据采集系统各个采集设备监测的数据需要非常准确的时间同步,一般的数据采集技术难以达到监测要求。如果不采用时钟同步技术,极有可能造成各个监测点采集数据时间上的微小误差,不仅造成监测结果的不准确,还严重影响对事件的研究分析。随着分布式系统的广泛应用,系统对时钟同步的要求越来越高。
数据采集时间同步是指数据采样频率的同步,包括采样时钟信号的脉冲同步和相位同步,以及时间轴上的同步,即采样点时间标签的同步。只有两方面都达到同步,才能称为真正的同步采集。传统的单系统数据采集的同步是靠采集板卡的同步来实现的,随着采集点数的增多,板卡的数量也会增大,但是现有的总线协议如PCI、CPCI、VME以及PXI提供的插槽有限,因此,我们需要采用多台计算机系统,而多台计算机系统的时间和时钟同步又成为一个非常复杂的问题。目前,多台计算机系统同步有两种实现方式,一是基于信号的多系统同步,这种同步方式需要连接信号电缆,不能实现远距离同步;二是基于时间的多系统同步,这种同步方式通过IEEE 1588、GPS和IRIG-B等协议共享时间基准,然后基于基准生成事件,触发时钟信号,这种基于时间的同步方式适合远距离同步或分布式应用。对于远距离同步,基于GPS协议的多系统同步精度最高,但是GPS信号并不一定实时连续。
IEEE 1588是网络测量和控制系统的精密时钟同步协议标准[3- 4], 该协议使分布式通信网络能够具有严格的定时同步,基本构思是通过硬件和软件将网络设备(客户机)的内时钟与主控机的主时钟实现同步,同步精度达微秒级[5-10]。
本文介绍了基于cRIO的远程分布式数据采集系统的设计与实现, 该系统利用cRIO特有的1588插件设计了时间同步程序,并设计了数据采集程序、触发保存程序、本地保存及数据TCP/IP上传程序,实现了分布式系统的数据同步采集。
1系统的硬件组成
图1 分布式系统结构图Fig.1 Structure diagram of the distributed system
本系统数据采集终端的硬件配置由GPS、监控终端以及cRIO数据采集终端组成。cRIO数据采集终端包括嵌入式控制器cRIO-9025、机箱cRIO-9113和采集卡NI9234。该配置系统主要应用于地震、矿震等动态信号监测,系统组成如图1所示。其中实时控制器cRIO-9025配有512 MB DRAM、4 GB内存和800 MHz CPU时钟频率,运行VxWorks实时操作系统;4槽可重配置机箱cRIO-9113,支持所有CompactRIO I/O模块,使用Xilinx Virtex-5 FPGA,机箱内置高级触发及同步功能;数据采集模块NI9234,具有24 位四路同步采样,交流耦合(0.5 Hz)、结合FPGA 实现自定义采集功能。
2系统的时间同步实现
本文利用简单网络时间协议(SNTP)和1588同步协议同步多个FPGA的系统时间[5-6]。IEEE 1588定义了一套标准的时钟特性,通过运行一个分布式的最佳主时钟算法(Best Master Clock,BMC),网络中的每个时钟可以识别该网络中最高质量的时钟,该时钟具备最佳的时钟特性。最高质量的时钟称为主时钟,负责同步其他从时钟。
同步过程分为两个阶段:偏移测量阶段和延迟测量阶段。
(1)偏移测量阶段:修正主时钟和从时钟之间的时钟偏差。主时钟周期性(一般为2 s)地给从时钟发送“同步”(Sync)数据包,这个同步数据包离开主时钟时,包含一个时间戳。主时钟随后也会(可选)发送“跟随”(Follow_Up)数据包,其中包含了“同步”数据包的时间戳。使用一个单独的“跟随”包允许主时钟准确地知道“同步”数据包的时间戳t1,因为在网络中数据包的发送时间无法事先准确地知道。从时钟接收到主时钟的“同步”数据包和此数据包抵达时间的时间戳t2,根据t1和t2可计算出主时钟和从时钟之间的时间偏差(Offset),由于此时对同步报文的传输延时(Delay)未知,先假设为零[5]。
(2)延迟测量阶段:修正网络传输延时。“同步”数据包的发出时间和抵达时间之差包含两方面因素:从时钟与主时钟间的时钟偏差以及网络传输延时。通过根据该方法测得的数据可以调节两者间的偏差,使该偏差仅仅来自于网络传输延时。IEEE 1588设定网络传输延时是对称的,也就是说,从主时钟向从时钟间发送数据所带来的延时和反方向的延时相等。基于此项假设,从时钟可以发现并且补偿传输延时。它向主时钟发送一个“延时请求”(Delay_Req)的数据包,其中包含了离开从时钟的时间戳t3。“延时请求”工具包被主时钟收到后打上时间戳t4,然后抵达时间会包含在“延时响应”(Delay_Resp)数据包中被发送到从时钟。这两个时间戳之差就是网络的传输延时。延迟测量是不规则进行的,其测量间隔时间为4~60 s 之间的随机值,这样可以使网络的负荷不会太大[5]。
假设数据包由主时钟到从时钟所用的时间与数据包由从时钟到主时钟所用的时间相同,则:
t2=t1+O+D,
(1)
t4=t3-O+D,
(2)
其中:t1为主时钟发送Sync报文的发送时刻;t2为从时钟记下的Sync报文到达时刻;t3为从时钟向主时钟发送延迟请求报文的时刻;t4为主时钟记录的延迟请求报文到达时刻。从式(1)和式(2)计算出主从时钟之间的Delay 和Offset,并根据此调整从设备的本地时钟,完成一次时间同步。
TDelay=((t2-t1)+(t4-t3))/2,
(3)
TOffset=((t2-t1)-(t4-t3))/2,
(4)
其中,TDelay为同步报文的传输延时;TOffset为主从时钟之间的时间偏差。因此,通过发送与接收这些同步数据包,从时钟可以精确测量其本地时钟与主时钟之间的偏差,进而调整自己的时钟来匹配主时钟。
NI-TimeSync 中的IEEE 1588插件提供了精度高达1 ms的同步参考时钟,可以在网络上配置多个仪器,使用同一个IEEE 1588参考时钟,让多个平台可以在标准的以太网上进行同步。使用简单网络时间协议,将SNTP sever的时间同步到指定RT上,该RT作为master通过1588时间同步协议将其时间同步到作为slave的RT上。RT与FPGA之间通过Timekeeper进行时间同步。通过上述操作可实现多个FPGA时间同步,如图2所示。通过NI测量与自动化浏览器(MAX)工具配置设备使用软件1588精确时间协议,RT配置1588同步协议。
图2 系统时间同步实现方式Fig.2 System time synchronization method
FPGA Timekeeper API为一系列的VI,可以实现在目标FPGA上进行时钟同步。同步程序包含4个步骤:第一步,将Timekeeper子VI放在循环外,对FPGA对象进行时间同步;第二步,获取FPGA Timekeeper当前的时间和当前状态信息,查看参考时间的偏差是否锁定;第三步,每获取一个新的RT时间锁定Timekeeper的时间;第四步,依据两时间戳将FPGA Timekeeper与RT时间进行周期性同步。FPGA上的同步程序,获取RT的时间并同步到FPGA目标上。RT上的同步程序,其功能是固定周期获取当前时间,并将时间数据发送给FPGA对象。
3系统的软件结构设计
基于cRIO远程数据采集装置的软件主要由两部分组成,分别是运行于NI cRIO-9113上的采集程序和运行于NI cRIO-9025上的控制程序。
图3 运行于NI cRIO-9113上的采集程序流程图Fig.3 Flowchart of acquisition program on NI cRIO-9113
3.1采集程序
采集程序运行于NI cRIO-9113上,主要功能是设置NI 9234采集模块、获取系统参数、控制NI 9234采集数据、触发数据并存储到FIFO“Data”中以及同步程序。NI cRIO-9113上的采集程序的运行过程为:首先程序设置NI 9234采集模块的原始采样频率,本程序采用NI 9234的最高采样频率51.2 kHz;其次运行采集开始触发按钮,这个按钮在运行于NI cRIO-9025上的控制程序中得到调用,用于控制信号采集开始;第三是获取系统参数,包括触发电压、触发通道数、预触发深度、后触发深度,在运行于NI cRIO-9025上的控制程序中调用这些参数,可以对这些参数进行修改设置;第四是包含了信号触发保存算法以及触发后的数据保存。采集程序的流程图如图3所示。
一般微地震信号采集采用预触发方法,在触发条件满足之前,先存储一部分波形,从而使得用户能观察到触发点之前的信号。
本程序的触发过程为当启动NI 9234采样后,把从采集模块采集进来的数据与触发电压进行比较,当满足设定条件时,会产生触发信号,此信号送到数据缓存器(Data Buffer)的控制端。当Data Buffer未达到预触发深度时,Data Buffer只写入数据,不读出数据,并且在这个过程中触发信号是被抑制的;当Data Buffer达到预触发深度时,释放触发信号。此阶段如果触发信号未到来,采集模块采样来的数据写入Data Buffer的同时,数据也从Data Buffer中读出,并且Data Buffer中的数据长度始终保持为预触发深度,Data Buffer中存放的数据都是新采集进来的数据;若触发信号到来并被释放后,就禁止Data Buffer读出,Data Buffer的数据只写不读,当Data Buffer写满后,程序就禁止写入,然后通知下一帧程序从Data Buffer中读取数据并存入FIFO数据存储器,等待控制程序提取微地震信号。
3.2控制程序
控制程序运行于NI cRIO-9025上,如图4虚线框中的部分,分为数据采集引擎、存储引擎和TCP引擎,这三个模块的主要功能为cRIO-9025的系统参数的设置、获取采样数据、本地存储采样数据、与远程监测站时间同步和TCP数据通信。
系统参数的设置主要是用来设置触发电压、触发通道数、预触发深度和后触发深度。数据采集引擎程序判断FIFO数据存储器中数据的长度,读取FIFO中的数据进行显示并提供给本地存储或进行远程传输。
4同步测试实验结果分析
系统的触发采集设置在FPGA端,数据存储在RT端。由函数发生器输出满足触发采集条件的正弦波信号到采集卡NI 9234,存储触发信号,由相位差计算软件,获得两采集终端信号的时间差。程序运行 7 d后,将存储在两个RT端的文件拷贝到上位机进行时间差计算。1~3 d存储的数据文件同步时间误差稳定在290~340 μs之间,计算结果如图5所示。4~7 d存储的数据文件同步时间误差达到2 ms,计算结果如图6所示。因此该系统短期同步精度能达到亚毫秒级,长期测试同步精度为毫秒级。
图5 系统前三天测得数据的时间差Fig.5 Synchronization time difference of the data in the first three days
图6 系统后四天测得的数据的时间差Fig.6 Synchronization time difference of the data in the latter four days
5结论
光纤微震分布式数据采集系统具有分散的采集设备,时间同步设备是为了保证多系统数据采集及分析的准确性。本文设计的基于IEEE 1588时间同步协议的cRIO数据采集时间同步装置,同步精度在短期内能达到亚毫秒级,但长期实验结果为毫秒级,与理论上的亚毫秒级的同步精度有一定差距。因此该系统在实现方式上还需要进一步改进。本系统与基于PTP授时模块和PTP时钟同步模块的同步系统相比,都可以实现亚毫秒级的多系统同步,但是由于采用cRIO嵌入式系统,更适于煤矿井下恶劣环境,满足煤矿低功耗、防爆的要求。但是该系统较PTP授时模块和PTP时钟同步模块的同步系统价格高,因此应用成本相对较高。
参考文献:
[1]CHEN J Q. The remote real-time earthquake monitoring system of isolated structure based in NI cRIO[J]. Applied Mechanics and Materials, 2013, 333-335: 1793-1796.
[2]QU G, BI X L, GE Z Q, et al. Real-time time synchronization detection system application and analysis[J]. Applied Mechanics and Materials, 2014,615: 135-139.
[3]EIDSON J,KANG L.IEEE Std 1588-2002.IEEE Standard for a precision Clock Synchronization Protocol for Networked Measurement and Control Systems[EB/OL].[2015-03-02]. https://www.researchgate.net/publication/3996882_IEEE_Standard_No._15882002._IEEE_Standard_for_a_Precision_Clock_Synchronization_Protocol_for_Networked_Measurement_and_Control_Systems._IEEE_Standard_No._15882002_2002_i144.
[4]叶卫东,张润东.IEEE 1588精密时钟同步协议2.0版本浅析[J].测控技术,2010,29(2):1-4.
[5]刘巍, 熊浩清, 石光, 等. IEEE1588时钟同步系统应用分析与现场测试 [J]. 电力自动化设备, 2012, 32(2): 127-130.
[6]曹禹,邹磊,时维铎,等. 基于IEEE 1588时间同步系统的硬件实现[J].电测与仪表,2013,50(3) : 107-112.
[7]赵红,周春福,张春,等. IEEE1588在混合网络中性能分析[J].通信技术,2010,43(10):89-91.
[8]陈诚, 熊列彬,毛锐. 基于IEEE 1588时钟同步协议的分析与研究[J].工业控制计算机, 2013, 26(6): 45- 46.
[9]戴宝峰,崔少辉,常健.IEEE1588最佳主时钟算法的分析与实现[J].仪表技术,2008(2):29-31.
[10]周国平, 邹磊. IEEE 1588时间同步误差的研究[J]. 山西电子技术,2012 (2): 94- 96.
DOI:10.3976/j.issn.1002-4026.2016.03.012
收稿日期:2015-06-03
基金项目:山东省科学院院青年基金 (2013QN005 );山东省科技发展计划(2014GSF120017);中小企业发展专项资金(对欧合作部分)(SQ2013ZOC600005)
作者简介:王金玉(1981-),女,助理研究员,研究方向为光纤传感。Email:wangjinyu105@163.com
中图分类号:TP212.4+4;TP39
文献标识码:A
文章编号:1002-4026(2016)03-0065-06
Design and implementation of IEEE 1588 time synchronization protocol based cRIO data acquisition device
WANG Jin-yu1*, HU Bin-xin1, SONG Guang-dong1,JIANG Long2,LIU Tong-yu2
(1.Shandong Provincial Key Laboratory of Optical Fiber Sensing Technology, Laser Institute, Shandong Academy of Sciences, Jinan 250014, China; 2.Shandong Micro-Sensor Photonics Co. Ltd.,Jinan 250014, China)
Abstract∶We design and implement a cRIO based remote distributed data acquisition system. It applies cRIO specific 1588 plug-in to the design of time synchronization program, data acquisition, trigger preservation, local preservation and data TCP/IP upload. Data acquisition and test results show that its short-term synchronization precision can reach sub-millisecond level, and millisecond level for long-term test. It can be applied to optical fiber micro-seismic monitoring system in coal mines.
Key words∶cRIO; time synchronization; IEEE 1588; synchronous precision
【光纤与光子传感技术】