上海同步辐射光源属于高性能的中能第三代同步辐射光源,是我国目前投入运行的大科学装置之一。它所产生的同步辐射光覆盖从远红外至硬X射线波段,同时由于其产生的光的高耀度及高通量等特性,使其成为材料、生命、物理等领域的科学家开展科学研究工作的重要手段[1]。
目前,上海光源在运行的光束线站达到16条,为了能够掌握线站上各个设备的运行状况,约有一千余个仪器传感器安装在各条线站上[2]。原有的光源各光束线站的运行数据都是通过EPICS (Experimental Physics and Industrial Control System)自带的工具Channel Archiver来存储通过各个线站的IOC (Input/Output Controller)采集的数据,这些数据主要包括各系统运行过程中的状态数据和一些关键设备设置的运行参数。但是随着光源线站的增多,存储的数据量越来越大,Channel Archiver在使用过程中的局限性逐渐显现出来,比如:1) Channel Archiver只能安装运行在单机上,这样随着数据存储量的增加,不能对其进行快速地扩展来提高其性能;2)它所存储的历史数据分散在众多二进制文件中,同时对数据库进行修改维护时,没有一个特别友好的图形界面以供操作,这就导致了其可维护性不足[3];3)开发Channel Archiver工具的实验室已不再对其进行更新和技术支持,这样在运行过程中出现问题也没有很好的技术支持与交流。
为了保证上海光源的运行数据能稳定和可靠地存储,本文采用了基于Archiver Appliance的新存档系统,同时利用其提供的JSON (JavaScript Object Notation)接口,开发了基于Web网页的数据管理、查询和分析系统。
1 整个系统的总体设计 1.1 系统平台及开发环境系统的平台是基于EPICS控制系统。目前,EPICS在世界上的粒子加速器等大型物理实验装置上应用比较广泛。它采用分布式的体系结构,可同时由许多专业人员对其进行更新维护。EPICS控制软件结构主要包括负责数据获取的IOC层和负责用户操作的操作员接口(Operator Interface, OPI)层。其中,一个完整的IOC应用主要包括以下几部分:通道访问(Channel Access, CA)服务器接口、数据库访问接口、动态数据库、记录支持模块、设备支持模块、设备驱动模块;OPI层主要指运行在Linux操作系统和Windows操作系统中的各种EPICS工具,本文中使用的Archiver Appliance就是位于EPICS系统的OPI层上,可将其看成CA的客户端[4]。
上海光源光束线新的运行数据管理和查询系统采用Archiver Appliance把各条光束线的运行数据存储到数据库中。这些数据包括:XBPM (X-ray Beam Position Monitor)的刀片电流值、光束的中心位置值、各个设备的温度、真空和水流量状态、真空阀门的开关状态等参数。Archiver Appliance运行在两台装有CentOS 7系统的服务器上。
1.2 系统的设计构成本系统主要包括数据采集、数据存储和数据查看分析三部分,结构框图如图 1所示。下面就各部分功能进行简单说明:1)系统中IOC部分主要负责数据的采集,IOC通过串口、以太网等接口与线站的真空控制器、安全联锁控制系统相连,数据以记录形式保存在IOC的实时运行数据库中[5];2) Archiver Appliance主要负责数据的存储。Archiver Appliance程序根据配置文件设置的变量名及其相关的采集频率,将需要保持的数据从IOC的实时运行数据库中取下来,然后保存到历史数据库中;3)基于Web网页的数据查看系统,它主要根据用户的请求,动态生成标准html页面送到客户端浏览器,达到人机交互的目的。这样做的优势在于各线站的工作人员只要在控制网内,通过任何一台电脑的浏览器都可以进行数据的查询和分析,为使用者提供了极大的方便。
|
图 1 运行数据管理和查询系统的结构框图 Figure 1 Management and query system architecture |
数据查看和分析系统的功能要求分为以下几个方面:1)光束线设备运行状态的监控信号需要分级保存和预报警提示,并且各个信号的变化情况能方便地查询,结果以图形或表格的方式显示、输出或打印;2)同一个设备的物理运行参数(温度、冷却水流量状态等),初步选用温度参数及其温度模块作为最高的优先级别,先行处理,如果一旦温度参数或者其模块发生异常情况,则在监控界面上做出提示,再处理真空和水流量数据,最后再处理离子泵的数据等;3)在做数据报警分析时,我们需参考一组要记录信号在正常情况下的范围值,让监控信号与其正常情况做比对,在允许的变化范围内,不做任何处理,超出范围则给出预报警提示,并输出其信号(如PV (Process Variable)名及其相应的时间点等);还可根据提示的异常信息,对该信号作相关统计分析(如报警的次数)等。
2 数据库的设计及数据获取 2.1 Archiver Appliance数据管理软件简介Archiver Appliance是由SLAC (Stanford Linear Accelerator Center)、BNL (Brookhaven National Laboratory)和MSU (Michigan State University)联合开发的EPICS框架下的数据存取管理软件。它的诞生主要是为了获取百万量级的PV,同时也十分注重数据的提取速度。Archiver Appliance具有组建应用程序集群的能力,同时它的分时段的存储技术使得它的存储数据的速度更快[6],目前这套系统已经应用在SLAC、BNL和MSU的系统中,其性能各方面都表现良好。
2.2 Archiver Appliance数据管理软件的结构EPICS Archiver Appliance在部署的时候采用了应用程序的模式,在安装使用时将几个应用组合为一个集群来使用。每一个应用程序(图 2)可有多个存储过程和多个处理过程[7]。
|
图 2 Archiver Appliance数据管理软件的结构 Figure 2 Archiver Appliance architecture |
其主要模块的功能简介如下:
1) 存储模块,分为三部分:短期存储、中期存储和长期存储。短期存储(Short Term Store, STS):这个模块中存储的是几个小时内的数据,由于它直接从各个线站的IOC中取得数据,他对存取速度要求较高,通常把它存储在内存文件系统中;中期存储(Medium Term Store, MTS):这个模块存储的是几天内的数据,可以将其保存在电脑的硬盘中,为了提高性能,一般采用固体硬盘作为存储媒介;长期存储(Long Term Store, LTS):这个模块存储其余时间的数据。因为它存储的数据量比较大,同时为了保证数据存储空间的可扩展性,一般采取网络存储服务器作为存储媒介。
2) 数据处理模块,分为4部分:数据引擎模块、数据转移模块、数据提取模块、应用界面管理模块。数据引擎模块(Engine):这个模块对每一个PV的状态进行监测,同时负责将数据采集到短时存储模块中;数据转移模块(Extract Transform and Load, ETL):主要负责将数据从短期存储空间中转移到中期存储空间,从中期存储空间转移到长期存储空间;数据提取模块(Retrieval):主要的功能是根据数据请求从存储空间中取得满足要求的数据;应用界面管理模块(Management):主要负责网页页面的显示管理。
2.3 上海光源Archiver Appliance运行数据库的设计此系统使用了两台Dell服务器R730作为它的硬件设备,每台服务器的内存为64 GB,磁盘容量为300 G,选择CentOS 7作为服务器的操作系统。
2.3.1 数据库集群的配置Archiver Appliance的一个主要的特点就是能够集群设备,从而得到很高的性能。appliance.xml文件就是配置访问网址和集群的文件。这里使用的两台服务器的网址为10.30.50.96和10.30.50.97。这里我们给出集群的配置文件:
<appliances>
<appliance>
<identity>appliance0</identity>
<cluster_inetport>10.30.50.96:16670</cluster_inetport>
<mgmt_url>http://10.30.50.96:17665/mgmt/bpl</mgmt_url>
<engine_url>http://10.30.50.96:17666/engine/bpl</engine_url>
<etl_url>http://10.30.50.96:17667/etl/bpl</etl_url>
<retrieval_url>http://10.30.50.96:17668/retrieval/bpl</retrieval_url>
<data_retrieval_url>http://10.30.50.96:17668/retrieval</data_retrieval_url>
</appliance>
<appliance>
<identity>appliance1</identity>
<cluster_inetport>10.30.50.97:16670</cluster_inetport>
<mgmt_url>http://10.30.50.97:17665/mgmt/bpl</mgmt_url>
<engine_url>http://10.30.50.97:17666/engine/bpl</engine_url>
<etl_url>http://10.30.50.97:17667/etl/bpl</etl_url>
<retrieval_url>http://10.30.50.97:17668/retrieval/bpl</retrieval_url>
<data_retrieval_url>http://10.30.50.97:17668/retrieval</data_retrieval_url>
</appliance>
</appliances>
2.3.2 前端Web界面的实现Web前端是指用户通过浏览器可以直接浏览和使用的Web界面。该程序安装好之后,默认的首页是针对SLAC (Stanford Linear Accelerator Center)开发的,不适用于上海光源。因此,前端的首页界面进行了重新设计。通过修改index.html代码,输入网址后显示界面如图 3所示。
|
图 3 数据库查看的Web界面 Figure 3 Home page of Archiver Appliance |
根据光源运行过程和故障排除的需要,我们建立了数据查询系统。它提供了的数据检索和导出功能,用户可方便地通过Web方式查询光束线相关设备运行过程中的实时数据、历史数据,同时提供了简单的数据分析功能。为了满足用户进行复杂的数据处理需求,使用者还可将数据导出后做进一步的离线分析。
3.1 数据查询系统的结构系统由用户电脑、Web服务器和数据库服务器集群组成,用户通过Web服务器和数据库进行交流。用户只要能连接局域网,不论是Linux还是Windows操作系统,只要打开浏览器就可以使用本系统进行数据查询了。系统技术架构如图 4所示。
|
图 4 数据库查询系统结构示意图 Figure 4 Schematic diagram of query system |
系统的开发选用了Apache作为Web服务器软件。服务器调查公司Netcrafe调查结果表明:Apache由于其自身的高可靠性和可用性,全球有50%以上的用户在进行Web开发使用,都选择将其作为自己的服务器软件。因此,本系统也选用Apache作为我们的服务器软件。
服务端脚本语言选用PHP。PHP是一门开源语言,资源非常丰富且免费。同时为了提高开发效率,我们采用了THINKPHP开发框架。THINKPHP是国内一款免费开源的快速简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议分布,是为了敏捷应用开发和简化企业级应用开发而诞生[8-9]。通过THINKPHP使用,极大减轻了开发的工作量,使我们能将主要精力放在系统本身功能的实现上。
3.3 数据查看功能的实现EPICS Archiver Appliance支持的数据提取格式有很多种,比如JSON、CSV、MAT、RAW、TXT等。我们使用其提供的JSON数据格式,开发了基于Web的数据查询系统,包括的功能有实时数据查看、历史数据回看、数据的简单分析及光源运行状态的监测。
3.3.1 实时数据查看功能的实现在光源运行过程中,工作人员有时需要了解某些设备的当前运行状态。因此,我们开发了实时数据的查看功能。实时数据查看操作界面如图 5所示。
|
图 5 实时数据查看操作界面示意图 Figure 5 Home page of querying realtime data |
因为数据库中存储的变量数量很大,本系统做了条件搜索功能,使用者可以通过关键词来进行搜索,这里提供了准确搜索和模糊搜索两张搜索模式。例如:如果使用者需要搜索09U1线站的前端区XBPM的第二个刀片的电流值,可以在搜索框中直接输入X09U1:FE:XBPM:ADC2.VAL这个PV名。这就是准确搜索。如果使用者需要搜索09U1线站的前端区所有XBPM的电流值,可以在搜索框中输入X09U1:FE:XBPM:ADC*,此为模糊搜索。
在选定需要查看的变量后,点击确定就可以在实时数据显示界面上看到数据的实时情况,如图 6所示。在实时数据显示上,我们使用了Highcharts图表库。Highcharts采用纯JavaScript编写,使用它可以在Web网站中方便快捷地添加有交互性的图表。目前,HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。
|
图 6 实时数据显示界面示意图 Figure 6 Display page for realtime data |
对于历史数据,我们使用了Archive Viewer软件来查看。Archive Viewer软件专门用来处理EPICS系统得到的数据,它是一个可扩展的、多线程的java程序。为了使用方便,我们使用了JNLP (Java Network Launching Protocol)技术。JNLP是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的URL连接打开一个java应用程序[10]。我们在历史数据查看界面上添加了JNLP的链接,点击以后就可以打开ArchiveViewer.jar程序,如图 7所示。
|
图 7 通过JNLP打开的Archive Viewer软件界面 Figure 7 The page of Archive Viewer opened by JNLP |
在这里,我们给出JNPL中的一些关键代码:
<?xml version='1.0' encoding='utf-8'?>
<jnlp codebase='http://10.30.50.97:17665/mgmt/ui/' href='jnlp/archiveviewer.jnlp'>
<security>
<all-permissions/>
</security>
<resources>
<j2se version='1.4+'/>
<jar href='jnlp/archiveviewer.jar'/>
</resources>
<application-desc main-class='epics.archiveviewer.base.Launcher'>
<argument>-u</argument>
<argument>pbraw://10.30.50.97:17668/retrieval</argument>
</application-desc>
</jnlp>
在上面的代码中,<jnlp>标签中通过codebase和href属性给出了jnlp文件所在的位置。<resources>标签给出了需要执行的ArchiveViewer.jar程序,<argument>标签给出了数据库Archiver Appliance提供的数据接口的IP地址及端口号。通过设置好这些参数后,就可以通过浏览器打开数据查看软件Archiver Viewer来进行历史数据的查询。
3.3.3 历史数据分析功能的实现在光源的运行过程中,我们需要对一些设备的运行情况定期进行评估,及早发现设备的异常,以免造成重大的事故。我们主要关注的设备运行参量有设备的温度、真空度、水流量的报警以及X射线的位置信息等。通过计算这些参量的最大值、最小值和RMS (Root Mean Square)值来进行评估。
我们利用这个功能分析了2017年6月26日-7月26日之间的18U1线站的几路真空的数据,如图 8所示。从图 8中发现,对于18U1线站的光束线部分的第三路真空的最大值为0.005,RMS值约为0.000078。初步判断这段时间内的真空发生过故障。这时通过调取历史数据,如图 9所示,确定了在2017年7月20日发生了真空的跳变,为线站人员的故障诊断提供了帮助。
|
图 8 18U1线站的几路真空的数据分析结果 Figure 8 Analysis results of vacuum data 18U1 beamline |
|
图 9 18U1线站的光束线第三路真空的历史数据 Figure 9 History data of the third channel for 18U1 |
上海光源光束线运行数据管理和查询系统的建立为各个线站的运行维护和故障分析提供了有力保障。我们基于Web技术提供了数据的实时显示、历史数据查询和分析功能,同时使用者也可以将数据导出做离线的数据分析。不过在使用过程中,各个线站的使用者会有新的需要,该系统还需要不断根据需求进行完善。
| [1] |
胡正, 敖新宇, 米清茹, 等. 基于MySQL的上海光源光束线运行数据管理系统[J]. 核电子学与探测技术, 2012, 32(6): 693-697. HU Zheng, AO Xinyu, MI Qingru, et al. Operation data management system based on MySQL for SSRF[J]. Nuclear Electronics & Detection Technology, 2012, 32(6): 693-697. |
| [2] |
刘平, 周永年, 米清茹, 等. 光束线站数据采集系统研究[J]. 核技术, 2010, 33(6): 415-419. LIU Ping, ZHOU Yongnian, MI Qingru, et al. The EPICS-based data acquisition system on beamlines at SSRF[J]. Nuclear Techniques, 2010, 33(6): 415-419. |
| [3] |
张志远, 陈建锋, 沈立人. 基于Oracle的SSRF数据存档系统及接口设计[J]. 核技术, 2010, 33(9): 641-644. ZHANG Zhiyuan, CHEN Jianfeng, SHEN Liren. Oracle-based data archiver system and interface design for SSRF[J]. Nuclear Techniques, 2010, 33(9): 641-644. |
| [4] |
孙皓, 龚培荣. MATLAB神经网络分析上海光源光束线的运行数据[J]. 计算机工程与应用, 2016, 52(16): 233-237. SUN Hao, GONG Peirong. Processing operation data of beamline in SSRF based on MATLAB neuron networks[J]. Computer Engineering and Applications, 2016, 52(16): 233-237. DOI:10.3778/j.issn.1002-8331.1601-0275 |
| [5] |
孙小影, 陈广花, 刘义勇, 等. 上海光源储存环真空数据检索系统[J]. 核技术, 2010, 33(9): 645-648. SUN Xiaoying, CHEN Guanghua, LIU Yiyong, et al. A vacuum data retrieval system for SSRF storage ring[J]. Nuclear Techniques, 2010, 33(9): 645-648. |
| [6] |
Shankar M, Li L F, Davidsaver M, et al. The EPICS Archiver Appliance[R]. Proceedings of ICALEPCS, Melbourne, Australia, 2015. http://inspirehep.net/record/1481656
|
| [7] |
The EPICS Archiver Appliance[EB/OL]. 2017-8-13. http://slacmshankar.github.io/epicsarchiver_docs/index.html.
|
| [8] |
李绍静, 车广杰, 董峰. 基于ThinkPHP架构的学生考核系统的设计与实现[J]. 信息技术, 2013(5): 47-53. LI Shaojing, CHE Guangjie, DONG Feng. Design and implementation of student evaluation system based on ThinkPHP framework[J]. Information Technology, 2013(5): 47-53. |
| [9] |
王青, 刘沛. 基于ThinkPHP技术的高校财务预算系统开发与实现[J]. 软件导刊, 2013, 12(7): 101-103. WANG Qing, LIU Pei. Design and implementation of university financial budgeting system based on ThinkPHP framework[J]. Software Guide, 2013, 12(7): 101-103. |
| [10] |
Java network launching protocol[EB/OL]. 2017-8-13. https://baike.baidu.com/item/JNLP/3678319?fr=aladdin.
|

