超导电子回旋共振离子源 (Superconducting Electron Cyclotron Resonance ion source with Advanced design in Lanzhou, SECRAL)[1-2]是由中国科学院近代物理研究所在2006年研制的一台具有全新磁铁结构的电子回旋共振 (Electron Cyclotron Resonance, ECR) 离子源,融合了最新的ECR技术,可在18-28GHz微波频率下为兰州重离子加速器 (Heavy Ion Research Facility in Lanzhou, HIRFL) 提供强流离子束[3-4],是目前国际领先的ECR离子源之一。自投入运行以来,使扇聚焦回旋加速器 (Sector Focusing Cyclotron, SFC) 和分离扇回旋加速器 (Sector Separated Cyclotron, SSC) 的氙束束流强度分别提高了10倍和50倍,并成功刷新了许多高电荷态离子束的流强记录,例如Pb30+、Ca16+和Ni17+等。2011年SECRAL成功引出了238U32+离子,并在HIRFL冷却储存环主环 (Cooling Storage Ring main ring, CSRm) 中加速到了23.8GeV,从而使HIRFL累积完成了元素周期表中从氢到铀的全离子加速。
SECRAL-Ⅱ是中国科学院大科学装置维修改造项目“HIRFL备用超导ECR离子源研制”的最核心设备,其控制系统是基于实验物理与工业控制系统 (Experimental Physics and Industrial Control System, EPICS)[5-6]的分布式控制系统。历史数据的存储是控制系统中一个非常重要的部分,在EPICS架构的控制系统中,由Control System Studio (CSS) 提供的ARCHIVE ENGINE[7]是比较常用的历史数据存储应用程序。CSS是基于Eclipse的一个工具集。ARCHIVE ENGINE使用Channel Archiver将数据存储到数据库。历史数据的查询则使用CSS提供的Data Browser工具。美国散裂中子源 (Spallation Neutron Source, SNS) 参与开发Channel Archiver并使用Channel Archiver[8]存储历史数据。日本的KEKB (KEK B-Factory) 加速器工程也使用Channel Archiver[9]存储历史数据。国内合肥光源控制系统中使用SNS开发的Channel Archiver进行历史数据存储[10],但是由于CSS提供的Data Browser的局限性,重新开发了历史数据的Web查询页面。
SECRAL-Ⅱ控制系统中,离子源子系统研究人员需要Excel文件格式的历史数据,进行基本数据查看以及将数据导入分析系统中进行处理和分析,所以在数据存储格式的要求方面,ARCHIVE ENGINE无法满足用户的需要。因此,本工作研究和开发了一套基于C#的数据归档系统。该系统使用EpicsSharp提供的软件库[11]实现了EPICS Client库函数,然后利用库函数,使用Channel Access (CA) 协议读取输入输出控制机 (Input/Output Controller, IOC) 上的变量 (Process Variable, PV) 值并存储到数据文件中。数据文件产生后,用户通过服务器获取数据文件。传统的匿名文件传输协议 (File Transfer Protocol, FTP) 应用十分广泛,是一个很常用的服务,但是FTP服务器通常情况下需要安装客户端软件,而且不能获取文件属性,无法实现移动和分布式办公。为了便于用户随时随地获取数据文件,本文为用户开发了一套基于超文本预处理器 (Hypertext Preprocessor, PHP) 技术的数据文件管理系统[12-13]。
1 系统概述SECRAL-Ⅱ总控制系统结构分三层:底层为设备层;中间层为IOC层,用来实现所有控制设备功能以及和上层通讯功能;上层为用户接口 (Operator Interface, OPI) 层,用来实现用户操作接口。系统整体架构如图 1所示。数据存档子系统位于总控系统架构第一层,通过建立CA通道和IOC服务器的PV进行通信。Oracle数据库存储了每个PV变量对应的设备名,所属的IOC服务器IP地址,以及每个PV变量读取的间隔时间[14]。文件系统 (File System) 用于管理数据文件。底层在SECRAL-Ⅱ系统中主要包括电源、真空、束诊等设备,设备接口类型有串口、以太网接口等。
|
图 1 控制系统架构 Figure 1 Structure of control system |
系统中,使用Oracle存储变量信息,可以克服采用文件(比如可扩展标记语言 (eXtensible Markup Language, XML))进行信息配置的一些缺点。本文在共享性、冗余度、独立性、安全性、数据结构化以及后期集成几个方面对二者进行了对比,如表 1所示。
| 表 1 使用Oracle和使用文件对比 Table 1 Comparison of using oracle and file |
由表 1可以看出,由于Oracle的共享性支持,用户对文件内容的增、删、改、查会非常方便;另外,使用Oracle存储信息,可以避免人工核查XML文件格式的困难。从管理角度考虑,该子系统可以容易地集成到加速器控制信息综合管理平台中。
系统主要操作流程如图 2所示。首先应用程序初始化,从数据库读入PV变量名和所属IOC服务器IP地址,根据IOC服务器的IP地址,建立CA Client,并对其读取的IP列表进行配置。然后和IOC服务器建立连接,根据数据库中读取到的PV变量的间隔时间,在特定的时间后读取PV变量的值,然后存入缓冲区,定时将数据写入Excel文件,避免了频繁的输入输出操作。目前,根据用户分析数据实际需要,程序读取PV变量的间隔时间由用户定义为30 s。
|
图 2 操作流程 Figure 2 Operation flow chart |
EPICS提供了多种开发语言的扩展包,本文对EPICS C#函数库进行了研究并使用其提供的函数进行二次开发。EpicsSharp由Client、Server和Gateway三部分组成。Client库支持程序读取、监控和操作IOC上的PV;Server库通过CA协议发布PV变量;Gateway是一个独立的软件。EpicsSharp提供了C#实现的Client类。为了更适合本控制系统中的设备,本工作对其进行了优化。由于每种设备的接口以及响应速度不同,根据设备情况,延时作为参数由使用者定义,并传递给函数。优化后的Client类以动态链接库SECRAL_Client.dll的方式引入到数据存档系统中。
使用SECRAL_Client读取PV,首先需要建立读取通道,使用CreateChannel函数,然后使用Get函数去读取PV变量的值。首先建立连接,然后由Client发送读取命令,获取数据。SECRAL-Ⅱ的控制系统目前需要存储的PV变量共30个,随着控制系统的逐步完善,PV变量个数会增加。由于PV变量分布于不同的IOC上,所以根据IOC的个数动态建立Client。程序以多线程方式实现,每个线程作为一个Client和IOC服务器连接,连接后默认不断开。在每个Client端,初始化时创建PV变量的Channel,以此来优化读取的速率。
为保证Client动态创建的有效性,当数据库中的PV变量信息更改时,通过消息机制通知程序进行信息重新读入,该部分由程序的监听线程实现。
3 Excel格式数据文件C#向Excel文件写数据比较常用的有三种方式:第一种,将数据以流的形式写到Excel中,格式以html形式存在;第二种,将数据以文件流的形式写到Excel中,格式以txt的形式存在;第三种,将数据直接写到Excel中,格式以XLS形式存在。根据用户需求,本工作采用了第三种方法。在应用程序中,引入Microsoft Office 2010的Excel组件Microsoft.Excel 14.0 Object Library。
Microsoft.Excel 14.0 Object Library是Microsoft Office 2010提供的操作Excel的COM组件。首先创建Application对象AppExcel,声明Workbook对象,指定操作的Sheet,然后读取数据、写入数据。为了防止每次弹出写入提示,将AlertBeforeOverwriting和DisplayAlerts属性设为False。最后保存数据,需要同时保存WorkSheet和Workbook。保存后使用Quit函数退出AppExcel对象,并调用KillSpecialExcel函数关闭Excel进程,否则Excel进程会逐渐增加,消耗系统内存。
4 数据文件管理数据文件管理子系统,用来管理存储的历史数据文件。该子系统使用浏览器/服务器 (Browser/Server, B/S) 架构实现。前台采用层叠样式表 (Cascading Style Sheets, CSS)+定位技术 (DIVision, DIV) 和主流的JavaScript开发框架Jquery进行页面设计。后台服务器端采用PHP+Apache+Oracle技术开发。系统前后台采用Ajax+Json进行数据通信,极大地提升了响应速度。系统安全方面采用登录验证和权限验证。用户在登录页面提交用户名和密码后,首先对用户名进行验证,若验证通过,将对用户密码进行信息摘要算法5 (Message-Digest Algorithm 5, MD5) 加密,然后根据数据库中的密码进行校验,若校验通过则允许登录。用户登录成功后,系统注册用户会话状态 (Session),防止未登录的用户访问系统。系统针对不同的用户设计了不同的权限,普通用户只有浏览、下载权限,管理员具有浏览、上传、下载、共享、删除等权限。登录验证后根据用户的权限显示相应的功能,从而进一步保证了文件的安全。
5 运行环境和运行结果数据归档系统使用Visual Studio 2010平台开发,操作系统环境为64位Windows 7系统。应用程序和数据库皆部署在惠普ProLiant DL388 G9机架式服务器上,环境为64位Windows Server 2012系统。数据库采用Oracle 11.2.0.0.0。表 2为数据库中主要字段说明。
| 表 2 数据库主要字段 Table 2 Main field in database |
图 3为历史数据文件浏览和下载界面。用户选中图 3中任意文件,选择“下载”,便可下载到本地。目前运行PV为30个,单日文件大小为300 KB左右。随着控制系统的不断完善,后续将继续增加PV变量,包括环境温度、湿度、磁铁温度监测等,理论值按200个PV计算,单日文件大小约为2 MB,年数据大小约为700MB左右。目前我们使用的机架式服务器硬盘总容量为1.5TB,数据存储方案采用存储性能、数据安全和存储成本兼顾的独立冗余磁盘阵列5 (Redundant Array of Independent Disk 5, RAID5) 方案,存储空间为600GB,可以满足用户长期使用需要。截止2016年11月,系统已经稳定运行7个月时间。
|
图 3 文件浏览和下载界面 Figure 3 User interface of file view and download |
图 4是根据现场实际运行7个月的数据文件个数、大小以及用户下载情况做的信息统计。8月份由于加速器停机检修,所以8月份的数据量比较少。
|
图 4 数据文件统计 Figure 4 Statistics of data files |
使用C#实现了EPICS架构下PV变量的读取和历史数据存储。经过7个月的运行测试,系统稳定可靠,可以满足用户的需求。系统存储策略可以根据用户需要随时修改。RAID5方案保证了数据文件的存储安全性、文件管理系统的设计和使用,以及保证了数据文件的访问安全性,同时增加了用户获取数据的便捷性和易用性。该方案适用于同样需求的控制系统。
| [1] | Sun L T, Zhao H W, Zhang X Z, et al.Preliminary results of SECRAL at 18 GHz[R].Lanzhou:IMP & HIRFL Annual Report, 2006:149. |
| [2] |
周文雄, 王彦瑜, 周德泰, 等. SECRAL超导磁铁电源控制[J].
原子核物理评论, 2014, 31(4): 489–493.
ZHOU Wenxiong, WANG Yanyu, ZHOU Detai, et al. Control of the superconducting magnet power supply for SECRAL[J]. Nuclear Physics Review, 2014, 31(4): 489–493. DOI: 10.11804/NuclPhysRev.31.04.489 |
| [3] |
夏佳文, 詹文龙, 原有进, 等. 千兆电子伏重离子加速器-兰州冷却储存环[J].
原子能科学技术, 2009, 43(Suppl 1): 150–158.
XIA Jiawen, ZHAN Wenlong, YUAN Youjing, et al. Heavy ion coolers-storage-ring synchrotron in Lanzhou[J]. Atomic Energy Science and Technology, 2009, 43(Suppl 1): 150–158. |
| [4] |
夏佳文, 詹文龙, 魏宝文, 等. 兰州重离子加速器冷却储存环[J].
强激光与离子束, 2008, 20(11): 1787–1794.
XIA Jiawen, ZHAN Wenlong, WEI Baowen, et al. Heavy ion coolers-storage-ring synchrotron in Lanzhou[J]. High Power Laser Particle Beams, 2008, 20(11): 1787–1794. |
| [5] |
唐兴海, 刘亚娟, 张俊强, 等. 基于MicroTCA的自动频率控制系统[J].
核技术, 2016, 39(7): 070102.
TANG Xinghai, LIU Yajuan, ZHANG Junqiang, et al. An automatic frequency control system based on MicroTCA[J]. Nuclear Techniques, 2016, 39(7): 070102. DOI: 10.11889/j.0253-3219.2016.hjs.39.070102 |
| [6] |
孙皓, 龚培荣. 基于MATLAB的上海光源光束线运行状态分析与预警[J].
核技术, 2016, 39(7): 070104.
SUN Hao, GONG Peirong. Analysis of beamline running state and forewarning by using MATLAB in SSRF[J]. Nuclear Techniques, 2016, 39(7): 070104. DOI: 10.11889/j.0253-3219.2016.hjs.39.070104 |
| [7] | Kasemir K, Carcassi G.Control system studio guide[EB/OL].2016-08-30.http://cs-studio.sourceforge.net/docbook/. |
| [8] | Kasemir K U.Control system studio (CSS) data browser[C].Proceedings of PCaPAC08, Ljubljana, Slovenia, 2008:99-101. |
| [9] | Satoh M, Seimiya Y.Control system upgrade for super KEKB injector LINAC[C].Proceedings of IPAC, Richmond, VA, USA, 2015:930-932. |
| [10] |
强杰, 刘功发. 基于Oracle的合肥光源数据存档系统及初步应用[J].
核技术, 2013, 36(1): 010101.
QIANG Jie, LIU Gongfa. The data archive system and preliminary applications of Hefei light source based on Oracle[J]. Nuclear Techniques, 2013, 36(1): 010101. DOI: 10.11889/j.0253-3219.2013.hjs.36.010101 |
| [11] | Bertrand A, Lauk D J, Krempaska R.EpicsSharp[EB/OL].2016-08-30.https://sourceforge.net/p/epicssharp/wiki/Home. |
| [12] |
巩明. 基于PHP实现数据安全性的方法及比较[J].
通讯世界, 2015, 22(5): 56.
GONG Ming. Comparison of approaches to data security implementation based on PHP[J]. Telecom World, 2015, 22(5): 56. DOI: 10.3969/j.issn.1006-4222.2015.05.037 |
| [13] |
权治, 宋晶晶. 基于PHP的动态网站研究与实现[J].
计算机与网络, 2015, 41(11): 52–55.
QUAN Zhi, SONG Jingjing. Research and implementation of dynamic website base on PHP[J]. Computer and Network, 2015, 41(11): 52–55. DOI: 10.3969/j.issn.1008-1739.2015.11.046 |
| [14] |
雷蕾, 徐海霞, 韩利峰, 等. Oracle数据库在园区辐射监测系统中的应用[J].
核电子学与探测技术, 2014, 34(9): 1114–1118.
LEI Lei, XU Haixia, HAN Lifeng, et al. Application of Oracle database to the radiation monitoring system[J]. Nuclear Electronics and Detection Technology, 2014, 34(9): 1114–1118. DOI: 10.3969/j.issn.0258-0934.2014.09.019 |