APP下载

EPICS环境下的软件规范管理

2015-12-02韩利峰徐海霞李勇平

核技术 2015年6期
关键词:脚本调用命令

雷 蕾 韩利峰 徐海霞 李勇平

1(中国科学院上海应用物理研究所 嘉定园区 上海 201800)

2(中国科学院大学 北京 100049)

3(中国科学院核辐射与核能技术重点实验室 上海 201800)

EPICS环境下的软件规范管理

雷 蕾1,2,3韩利峰1,3徐海霞1,3李勇平1,3

1(中国科学院上海应用物理研究所 嘉定园区 上海 201800)

2(中国科学院大学 北京 100049)

3(中国科学院核辐射与核能技术重点实验室 上海 201800)

EPICS (Experimental Physics and Industrial Control System)控制系统与商用的SCADA (Supervisory Control and Data Acquisition)软件相比,还没有统一的方式进行软件规范管理。各个科学装置EPICS软件的布局及调用方式千差万别,完全随开发人员的喜好决定。对于诸如钍基熔盐堆(Thorium Molten Salt Reactor, TMSR)、热核聚变堆、质子治疗等项目,软件模块的科学规范管理尤为重要,它能够从结构上保障系统的可靠性、可维护性和易用性。本文结合Linux目录配置标准(Filesystem Hierarchy Standard, FHS)、软件包管理器(Red Hat Package Manager, RPM)以及系统编程等技术,针对TMSR EPICS仪控系统核心软件模块进行目录管理、软件包管理和服务管理,实现核心软件的自动化部署、开机自启动及规范调用。经测试,该套方案运行良好,大量减少了人工操作,有助于实现TMSR仪控系统软件平台的统一和完全自动化。

EPICS,目录管理,软件包管理器,服务

EPICS (Experimental Physics and Industrial Control System)[1]是现今国际高能加速器控制系统的一个主流的软件开发工具集。大量实例证明,基于EPICS的控制系统具有运行稳定、开放性好、系统可扩展性好、国际交流协作方便等诸多优点[2−7]。但是,目前成熟的商用SCADA (Supervisory Control and Data Acquisition)软件(如iFIX、WinCC等),除了能够有效地完成过程监控等任务,还具有安装自动化、管理规范化等特点[8−9]。相比之下,EPICS系统由于其开源和模块化的特点,目前并没有一个统一的方式对它进行规范管理。各个科学装置EPICS软件的类型多、数量大,布局及调用方式千差万别,完全随开发人员的喜好决定,不利于开发和维护。

钍基熔盐堆(Thorium Molten Salt Reactor, TMSR)核能系统项目是中国科学院先导科技专项之一,旨在研发第四代裂变反应堆核能系统[10]。目前,TMSR现有的控制系统均是基于EPICS架构设计。对于TMSR EPICS控制系统,软件模块的科学规范管理尤为重要,它能够从结构上保障系统的可靠性、可维护性和易用性。因此本文对TMSR EPICS软件环境的规范管理方法和技术展开了研究。

针对TMSR EPICS仪控系统核心软件,结合Linux目录配置标准(Filesystem Hierarchy Standard, FHS)实行目录管理,运用软件包管理系统(RedHat Package Manager, RPM)技术进行软件自动化部署,通过系统编程实现服务管理,以达到统一开发平台、规范化部署和调用仪控功能软件的目的。实践证明,这套方案使得EPICS系统软件模块的安装和调用便捷统一,为在TMSR中更好地运用EPICS提供了良好的软件环境基础。

1 系统环境

TMSR仪控系统采用标准的EPICS分布式架构。EPICS是一个开源的软件工具集,采用客户/服务器模式,由输入输出控制器(Input/Output Controller, IOC)、操作员接口(Operator Interface, OPI)应用软件和通道访问(Channel Access, CA)协议组成。OPI和IOC之间通过以太网(Ethernet)连接,OPI层应用软件通过CA协议访问IOC实时数据库数据,并在客户端层对控制系统进行控制、监测以及数据存储[1]。

TMSR系统结构复杂,涵盖多个子系统,为实现各种仪控功能,需要用到众多不同软件。为建立一个统一、便捷和可靠的EPICS软件开发平台,TMSR仪控系统核心软件包的理念应运而生。该核心软件包规定了TMSR所有仪控系统完成既定控制任务所需要的基本软件,主要分为系统环境和EPICS环境。

表1中,将Linux操作系统、Java软件开发工具包(Java Development Kit, JDK)、关系型数据库Oracle作为系统环境软件,其他软件均作为EPICS环境软件。EPICS环境中核心为Base包及相关支持模块和驱动程序。OPI客户端层采用CSS (Control System Studio)[11],它是由美国SNS、BNL和德国DESY合作开发而成,采用Eclipse RCP (Rich Client Plant)体系结构,主要分为界面显示(Best OPI Yet, BOY)、报警(Best Ever Alarm System Toolkit, BEAST)和历史数据存档(Best Ever Archive Toolset Yet, BEAUTY)[11−12]三部分。

在TMSR仪控系统的后续构建工作中,将进一步完善此核心软件包。

表1 TMSR控制系统核心软件包Table 1 Core software package of TMSR control system.

2 目录管理

统一的目录结构是统一开发平台的一个重要环节[13]。在目前的软件开发过程中,由于没有对目录结构进行良好的规划,软件、文档以及相关数据的存放比较混乱。这将给后续的开发和维护带来很大的负担[14]。

不难发现,各种Linux发行版的顶层目录以及每个目录的内容都差不多。这并不是偶然的,而是因为它们都遵循同一套标准——FHS标准。制定该标准的主要目的是让用户知道已安装软件通常放置于系统的哪个目录下,方便管理和维护[15]。

因此,结合Linux系统的目录配置标准FHS,按图1所示约定目录树结构,将安装的仪控系统软件放置在/opt目录下,配置文件放于/etc目录下,程序相关实时文件放于/var目录下[15],同时还对各子目录进行了更细致的划分。约定好目录结构之后,就可以明确一些基本的环境变量,供后续软件配置管理使用。该目录结构仍需根据今后工程实际情况进行完善,但是它为TMSR EPICS系统的开发环境提供了一个基础目录框架和扩展原则。

3 软件自动化部署

商业DCS成品集成了所有软件功能模块,如同一个“黑匣子”,安装自动化和傻瓜化,并不需要专业人员额外的编译。而目前大家在使用EPICS时,通常需要上网一个一个下载所需的软件模块,再一个一个解压缩、安装、编译、测试、卸载等。其中有大量重复的工作,手工成本太高。因此本文结合RPM技术和系统编程,只需要一条简单的命令,就可以实现这一系列软件模块的自动化安装。

图1 目录树架构示意图Fig.1 Directory tree structure.

3.1 RPM打包

RPM是一套开放的软件包管理系统,几乎所有的Linux发行版本都使用这种形式的软件包管理安装、更新和卸载[15−16]。Linux系统提供了自定义RPM安装包的方式,即通过创建RPM安装包的工具rpm-build和SPEC文件(Specific file)来实现。rpm-build工具提供命令来生成不同的rpm包,打包的过程则是由SPEC文件核心控制。SPEC文件具有自己的编写规范,包括RPM打包过程的操作和新生成的软件包的基本信息等内容。图2以 EPICS Base打包为例,展示了它的SPEC文件中的关键操作(图2中省略了一些类似的拷贝操作)。新生成的RPM包内含的程序都已经编译并打包完毕,用户不用再重新编译。RPM包的安装和卸载均可使用简单的rpm命令来完成。

3.2 具体实现

要实现软件自动化安装,实质上只需要用命令将所有手工操作串在一起,放进一个独立的Shell脚本里[16]。用户可以将该脚本当做一个黑盒来使用,并不需要了解软件构建的细节,使用时只需运行tmsrsoftinstall命令。该命令封装了以下操作:(1)创建目录结构;(2) 设置环境变量;(3) EPICS-Base包、相关支持模块及驱动的下载、RPM打包和安装;(4) CSS、BEAST、BEAUTY软件工具集的下载,RPM打包和安装。

整个过程像全自动流水线一样,很快就能按照约定的目录结构部署好各软件。安装好的软件模块可以直接使用。软件的卸载封装在各自的uninstall命令中,运行${Appname}uninstall命令即可快速卸载。整个构建过程中的各个环节都已通过测试。

图2 EPICS-Base的SPEC文件Fig.2 SPEC file of EPICS-Base.

4 服务管理

4.1 Linux服务

Linux系统中通常使用service命令统一管理服务。service命令实质上是一个可执行的脚本,位于/sbin目录下。service的标准调用格式:

service [service_name] (start|stop|restart|…)

Linux系统还提供了/sbin/chkconfig工具,用来设置服务的开机自启动及运行级别[15]。它的使用需要在/etc/init.d下的服务控制脚本中设定chkconfig和description两个注释参数,再通过chkconfig--add<service>简单的命令添加自启动服务。

4.2 EPICS软件调用现状

部署好的EPICS软件环境下,软件的调用方式各异。如:IOC启动时需要调用IOCBOOT下的st.cmd脚本;Alarm Server、Archive Engine等软件工具在启动时需要调用相应的启动脚本,并指定配置文件及端口号等参数。软件的调用方式繁杂,不利于管理。此外,当系统调试或者意外宕机需要重启时,系统管理员需要手动输入各种不同的命令和参数依次启动各软件,耗时耗力。

因此,本文提出将EPICS软件设置成Linux服务,以规范统一的模式进行调用;并使用chkconfig工具将它们设置成开机自启动。

4.3 EPICS软件规范调用和自启动实现

分两步实现:注册Linux系统服务和添加自启动服务。关键在于如何将EPICS软件注册成Linux系统服务。Linux服务的注册依赖于/etc/init.d目录下相应的服务脚本,即sercive控制脚本。各软件的service控制脚本的工作大致类似,其工作流程如图3所示。

考虑到代码复用,也为了方便增加自定义服务,因此将图3中“虚线框中”的部分作为通用的功能提取出来,设置成注册服务的公用接口,即service-common脚本。

service-common脚本中实现了获取服务程序PID函数get_service_pid()、程序启动函数start()、终止进程函数stop()、查询程序运行状态函数status()、重启程序函数restart()。当添加单个服务时,只需要在单个服务脚本中设置好服务名、启动脚本路径等偏好参数,并在末尾调用service-common脚本即可。

通过以上设置,EPICS各软件就成功注册成为Linux系统服务,使用简单的service命令就可以调用,如图4所示。图4(a)以CSS Alarm Server为例显示了除IOC程序之外的软件服务管理过程,图4(b)以一个园区辐射监测系统区域监测IOC程序展示了IOC服务管理过程。与之前EPICS环境下的软件调用方法相比,具有简单明了、方便统一的特点。

图3 Service控制脚本流程图Fig.3 Control flow of service control script.

图4 CSS Alarm Server (a)和IOC (b)服务管理Fig.4 Service management of CSS Alarm Server (a) and IOC (b).

4.4 方案改进及测试

为使服务管理更加便捷,本文对上述方案进行了以下改进:

(1) 从系统管理角度,在多人参与的工程项目中,上述方案存在安全隐患。service命令只能在root用户下使用,某些软件的调用也只有root用户有权限,普通用户在使用软件时需要使用su来切换到root下操作,而root用户的密码理应掌握在少数用户手中[15]。因此,采取以下改进措施:

设置软件服务启动脚本的软链接至/usr/bin目录下,实现直接通过服务名调用软件;并使用sudo工具将超级用户对软件调用的权限有针对性的下放给普通用户。

(2) 在调试过程中,可能需要反复启动、停止各软件服务。按照§4.3所述的方案,用户不得不在终端对软件服务一个一个进行操作。为解决该问题,在service-common脚本的基础上编写multiple-services-common脚本,在其中实现doall()函数,同时编写另一个脚本传入需要批量启动的服务名序列,如SERVICES=("Alarm Server" "Archive Engine" "JMS2RDB")。

改进之后,普通用户可以批量启动服务,手工操作也最少化。如图5所示,在用户controluser1中可同时对多个CSS服务进行管理。

图5 普通用户批量管理服务Fig.5 Management of multiple services for general users.

5 结语

本文紧密结合Linux系统的特点,使用相关软件工具和编程初步完成了TMSR核心软件的自动化部署和规范化调用,解决了目前EPICS软件开发过程中的诸多不便,实现了Linux系统环境与EPICS软件架构的统一。在后续工作中,将进一步完善其中的各个环节,以期最大程度减少人工操作,实现统一、全自动化的软件平台。

致谢 作者之一雷蕾感谢她的导师和部门老师的悉心指导,以及部门所提供的良好的学习和实验平台。

1 Kraimer M R, Anderson J B, Johnson A N, et al. EPICS application developer's guide[DB/OL]. http://www.aps. anl.gov/epics, 2015-02

2 张德敏, 金晓, 黎明, 等. EPICS在加速器控制系统中的应用[J]. 强激光与粒子束, 2008, 20(4): 597−600

ZHANG Demin, JIN Xiao, LI Ming, et al. Application of EPICS to accelerator control system[J]. High Power Laser and Particle Beams, 2008, 20(4): 597−600

3 刘平, 周永年, 米清茹, 等. 光束线站EPICS数据采集系统研究[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

4 岳珂娟, 许士富, 赵籍九. EPICS在正负电子对撞机低温控制系统中的应用[J]. 核电子学与探测技术, 2006, 26(4): 539−542

YUE Kejuan, XU Shifu, ZHAO Jijiu. Application of EPICS in the cryogenics control system of BEPC[J]. Nuclear Electronics & Detection Technology, 2006, 26(4): 539−542

5 李为民, 李京祎, 刘功发, 等. EPICS和合肥光源控制系统[J]. 核技术, 2001, 24(6): 473−477

LI Weimin, LI Jingyi, LIU Gongfa, et al. EPICS and HLS control system[J]. Nuclear Techniques, 2001, 24(6): 473−477

6 Thuot M E, Clausen M, Dalesio L R, et al. The success and the future of EPICS[R]. Proceedings of XVIII International Linac Conference, Geneva, Switzerland, 1996

7 何泳成, 王春红, 吴煊. EPICS IOC与EtherCAT设备通信的一种方法[J]. 核技术, 2014, 37(11): 110102

HE Yongcheng, WANG Chunhong, WU Xuan. A method of communication between EPICS IOC and EtherCAT devices[J]. Nuclear Techniques, 2014, 37(11): 110102

8 楼建明, 廖远江, 马涛, 等. 基于IFIX的运动控制系统SCADA软件设计[J]. 计算机仿真, 2014, 31(5): 297−341

LOU Jianming, LIAO Yuanjiang, MA Tao, et al. Design of SCADA software for motion control system based on IFIX[J]. Computer Simulation, 2014, 31(5): 297−341

9 杨路明, 雷亚军. 组态软件WinCC在自动监控系统中的应用[J]. 计算机技术与自动化, 2003, 22(4): 21−24

YANG Luming, LEI Yajun. Application of configuration software WinCC in automation monitor system[J]. Computing Technology and Automation, 2003, 22(4): 21−24

10 江绵恒, 徐洪杰, 戴志敏. 未来先进核裂变能—TMSR核能系统[J]. 中国科学院院刊, 2012, 27(3): 366−374

JIANG Mianheng, XU Hongjie, DAI Zhimin. Advanced fission energy program-TMSR nuclear energy system[J]. Bulletin of Chinese Academy of Sciences, 2012, 27(3): 366−374

11 郭冰, 张宁, 徐海霞, 等. TMSR CSS集成开发工具软件的实现与应用[J]. 核技术, 2013, 36(11): 110602

GUO Bing, ZHANG Ning, XU Haixia, et al. Research and implementation of control system studio for TMSR[J]. Nuclear Techniques, 2013, 36(11): 110602

12 Control System Studio (CSS) at KEK[EB/OL]. http://www-linac.kek.jp/cont/epics/css/, 2013-08

13 米清茹. 开放软件平台下EPICS环境的研究[D]. 上海:中国科学院上海应用物理研究所, 2010

MI Qingru. Study of EPICS environment on open software platform[D]. Shanghai: Shanghai Institute of Applied Physics, Chinese Academy of Sciences, 2010

14 米清茹, 郑丽芳, 刘松强. EPICS控制系统软件开发环境[J]. 核技术, 2008, 31(1): 1−4

MI Qingru, ZHENG Lifang, LIU Songqiang. EPICS software development environment[J]. Nuclear Techniques, 2008, 31(1): 1−4

15 Welsh M, Kaufman L. Running Linux[M]. O'Reilly Media, 2005

16 Blum R, Bresnahan C. Linux command line and shell scripting bible[M]. 2ndEd. Wiley, 2011

CLC TL99

Software management in EPICS environment

LEI Lei1,2,3HAN Lifeng1,3XU Haixia1,3LI Yongping1,3
1(Shanghai Institute of Applied Physics, Chinese Academy of Sciences, Jiading Campus, Shanghai 201800, China)
2(University of Chinese Academy of Sciences, Beijing 100049, China)
3(Key Laboratory of Nuclear Radiation and Nuclear Energy Technology, Chinese Academy of Sciences, Shanghai 201800, China)

Background: Compared with commercial SCADA (Supervisory Control and Data Acquisition) software, EPICS (Experimental Physics and Industrial Control System) control system has no uniform way for software management at present. Developers in different projects deploy and invoke EPICS software modules in different ways. However, it is particularly important to manage the software modules scientifically and normatively for projects like thermonuclear fusion reactor, proton therapy and Thorium Molten Salt Reactor (TMSR), which helps to improve the reliability, maintainability and usability of system. Purpose: We aim to deploy EPICS software modules automatically and call them normatively. Methods: We implement the directory management using Linux Filesystem Hierarchy Standard (FHS), deploy software modules with Red Hat Package Manager (RPM) and shell scripts and manage all software modules with Linux service. Results: The scheme runs very well and reduces manual operation greatly. Conclusion: The results indicate that this scheme can address some issues in the usage of EPICS, which may help to build a unified, fully automated software platform for TMSR I&C system.

EPICS, Directory management, RPM, Service

TL99

10.11889/j.0253-3219.2015.hjs.38.060501

中国科学院战略先导科技专项(No.XDA02010300)资助

雷蕾,女,1989年出生,2012年毕业于武汉理工大学,现为硕士研究生,研究领域反应堆控制系统软件

韩利峰,E-mail: hanlifeng@sinap.ac.cn

2015-03-18,

2015-04-10

猜你喜欢

脚本调用命令
酒驾
只听主人的命令
安奇奇与小cool 龙(第二回)
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
移防命令下达后
快乐假期
小编的新年愿望
基于系统调用的恶意软件检测技术研究
这是人民的命令