雷 蕾 韓利峰 徐海霞 李勇平
1(中國科學院上海應用物理研究所 嘉定園區(qū) 上海 201800)
2(中國科學院大學 北京 100049)
3(中國科學院核輻射與核能技術重點實驗室 上海 201800)
EPICS環(huán)境下的軟件規(guī)范管理
雷 蕾1,2,3韓利峰1,3徐海霞1,3李勇平1,3
1(中國科學院上海應用物理研究所 嘉定園區(qū) 上海 201800)
2(中國科學院大學 北京 100049)
3(中國科學院核輻射與核能技術重點實驗室 上海 201800)
EPICS (Experimental Physics and Industrial Control System)控制系統(tǒng)與商用的SCADA (Supervisory Control and Data Acquisition)軟件相比,還沒有統(tǒng)一的方式進行軟件規(guī)范管理。各個科學裝置EPICS軟件的布局及調用方式千差萬別,完全隨開發(fā)人員的喜好決定。對于諸如釷基熔鹽堆(Thorium Molten Salt Reactor, TMSR)、熱核聚變堆、質子治療等項目,軟件模塊的科學規(guī)范管理尤為重要,它能夠從結構上保障系統(tǒng)的可靠性、可維護性和易用性。本文結合Linux目錄配置標準(Filesystem Hierarchy Standard, FHS)、軟件包管理器(Red Hat Package Manager, RPM)以及系統(tǒng)編程等技術,針對TMSR EPICS儀控系統(tǒng)核心軟件模塊進行目錄管理、軟件包管理和服務管理,實現(xiàn)核心軟件的自動化部署、開機自啟動及規(guī)范調用。經測試,該套方案運行良好,大量減少了人工操作,有助于實現(xiàn)TMSR儀控系統(tǒng)軟件平臺的統(tǒng)一和完全自動化。
EPICS,目錄管理,軟件包管理器,服務
EPICS (Experimental Physics and Industrial Control System)[1]是現(xiàn)今國際高能加速器控制系統(tǒng)的一個主流的軟件開發(fā)工具集。大量實例證明,基于EPICS的控制系統(tǒng)具有運行穩(wěn)定、開放性好、系統(tǒng)可擴展性好、國際交流協(xié)作方便等諸多優(yōu)點[2?7]。但是,目前成熟的商用SCADA (Supervisory Control and Data Acquisition)軟件(如iFIX、WinCC等),除了能夠有效地完成過程監(jiān)控等任務,還具有安裝自動化、管理規(guī)范化等特點[8?9]。相比之下,EPICS系統(tǒng)由于其開源和模塊化的特點,目前并沒有一個統(tǒng)一的方式對它進行規(guī)范管理。各個科學裝置EPICS軟件的類型多、數(shù)量大,布局及調用方式千差萬別,完全隨開發(fā)人員的喜好決定,不利于開發(fā)和維護。
釷基熔鹽堆(Thorium Molten Salt Reactor, TMSR)核能系統(tǒng)項目是中國科學院先導科技專項之一,旨在研發(fā)第四代裂變反應堆核能系統(tǒng)[10]。目前,TMSR現(xiàn)有的控制系統(tǒng)均是基于EPICS架構設計。對于TMSR EPICS控制系統(tǒng),軟件模塊的科學規(guī)范管理尤為重要,它能夠從結構上保障系統(tǒng)的可靠性、可維護性和易用性。因此本文對TMSR EPICS軟件環(huán)境的規(guī)范管理方法和技術展開了研究。
針對TMSR EPICS儀控系統(tǒng)核心軟件,結合Linux目錄配置標準(Filesystem Hierarchy Standard, FHS)實行目錄管理,運用軟件包管理系統(tǒng)(RedHat Package Manager, RPM)技術進行軟件自動化部署,通過系統(tǒng)編程實現(xiàn)服務管理,以達到統(tǒng)一開發(fā)平臺、規(guī)范化部署和調用儀控功能軟件的目的。實踐證明,這套方案使得EPICS系統(tǒng)軟件模塊的安裝和調用便捷統(tǒng)一,為在TMSR中更好地運用EPICS提供了良好的軟件環(huán)境基礎。
TMSR儀控系統(tǒng)采用標準的EPICS分布式架構。EPICS是一個開源的軟件工具集,采用客戶/服務器模式,由輸入輸出控制器(Input/Output Controller, IOC)、操作員接口(Operator Interface, OPI)應用軟件和通道訪問(Channel Access, CA)協(xié)議組成。OPI和IOC之間通過以太網(wǎng)(Ethernet)連接,OPI層應用軟件通過CA協(xié)議訪問IOC實時數(shù)據(jù)庫數(shù)據(jù),并在客戶端層對控制系統(tǒng)進行控制、監(jiān)測以及數(shù)據(jù)存儲[1]。
TMSR系統(tǒng)結構復雜,涵蓋多個子系統(tǒng),為實現(xiàn)各種儀控功能,需要用到眾多不同軟件。為建立一個統(tǒng)一、便捷和可靠的EPICS軟件開發(fā)平臺,TMSR儀控系統(tǒng)核心軟件包的理念應運而生。該核心軟件包規(guī)定了TMSR所有儀控系統(tǒng)完成既定控制任務所需要的基本軟件,主要分為系統(tǒng)環(huán)境和EPICS環(huán)境。
表1中,將Linux操作系統(tǒng)、Java軟件開發(fā)工具包(Java Development Kit, JDK)、關系型數(shù)據(jù)庫Oracle作為系統(tǒng)環(huán)境軟件,其他軟件均作為EPICS環(huán)境軟件。EPICS環(huán)境中核心為Base包及相關支持模塊和驅動程序。OPI客戶端層采用CSS (Control System Studio)[11],它是由美國SNS、BNL和德國DESY合作開發(fā)而成,采用Eclipse RCP (Rich Client Plant)體系結構,主要分為界面顯示(Best OPI Yet, BOY)、報警(Best Ever Alarm System Toolkit, BEAST)和歷史數(shù)據(jù)存檔(Best Ever Archive Toolset Yet, BEAUTY)[11?12]三部分。
在TMSR儀控系統(tǒng)的后續(xù)構建工作中,將進一步完善此核心軟件包。
表1 TMSR控制系統(tǒng)核心軟件包Table 1 Core software package of TMSR control system.
統(tǒng)一的目錄結構是統(tǒng)一開發(fā)平臺的一個重要環(huán)節(jié)[13]。在目前的軟件開發(fā)過程中,由于沒有對目錄結構進行良好的規(guī)劃,軟件、文檔以及相關數(shù)據(jù)的存放比較混亂。這將給后續(xù)的開發(fā)和維護帶來很大的負擔[14]。
不難發(fā)現(xiàn),各種Linux發(fā)行版的頂層目錄以及每個目錄的內容都差不多。這并不是偶然的,而是因為它們都遵循同一套標準——FHS標準。制定該標準的主要目的是讓用戶知道已安裝軟件通常放置于系統(tǒng)的哪個目錄下,方便管理和維護[15]。
因此,結合Linux系統(tǒng)的目錄配置標準FHS,按圖1所示約定目錄樹結構,將安裝的儀控系統(tǒng)軟件放置在/opt目錄下,配置文件放于/etc目錄下,程序相關實時文件放于/var目錄下[15],同時還對各子目錄進行了更細致的劃分。約定好目錄結構之后,就可以明確一些基本的環(huán)境變量,供后續(xù)軟件配置管理使用。該目錄結構仍需根據(jù)今后工程實際情況進行完善,但是它為TMSR EPICS系統(tǒng)的開發(fā)環(huán)境提供了一個基礎目錄框架和擴展原則。
商業(yè)DCS成品集成了所有軟件功能模塊,如同一個“黑匣子”,安裝自動化和傻瓜化,并不需要專業(yè)人員額外的編譯。而目前大家在使用EPICS時,通常需要上網(wǎng)一個一個下載所需的軟件模塊,再一個一個解壓縮、安裝、編譯、測試、卸載等。其中有大量重復的工作,手工成本太高。因此本文結合RPM技術和系統(tǒng)編程,只需要一條簡單的命令,就可以實現(xiàn)這一系列軟件模塊的自動化安裝。
圖1 目錄樹架構示意圖Fig.1 Directory tree structure.
3.1 RPM打包
RPM是一套開放的軟件包管理系統(tǒng),幾乎所有的Linux發(fā)行版本都使用這種形式的軟件包管理安裝、更新和卸載[15?16]。Linux系統(tǒng)提供了自定義RPM安裝包的方式,即通過創(chuàng)建RPM安裝包的工具rpm-build和SPEC文件(Specific file)來實現(xiàn)。rpm-build工具提供命令來生成不同的rpm包,打包的過程則是由SPEC文件核心控制。SPEC文件具有自己的編寫規(guī)范,包括RPM打包過程的操作和新生成的軟件包的基本信息等內容。圖2以 EPICS Base打包為例,展示了它的SPEC文件中的關鍵操作(圖2中省略了一些類似的拷貝操作)。新生成的RPM包內含的程序都已經編譯并打包完畢,用戶不用再重新編譯。RPM包的安裝和卸載均可使用簡單的rpm命令來完成。
3.2 具體實現(xiàn)
要實現(xiàn)軟件自動化安裝,實質上只需要用命令將所有手工操作串在一起,放進一個獨立的Shell腳本里[16]。用戶可以將該腳本當做一個黑盒來使用,并不需要了解軟件構建的細節(jié),使用時只需運行tmsrsoftinstall命令。該命令封裝了以下操作:(1)創(chuàng)建目錄結構;(2) 設置環(huán)境變量;(3) EPICS-Base包、相關支持模塊及驅動的下載、RPM打包和安裝;(4) CSS、BEAST、BEAUTY軟件工具集的下載,RPM打包和安裝。
整個過程像全自動流水線一樣,很快就能按照約定的目錄結構部署好各軟件。安裝好的軟件模塊可以直接使用。軟件的卸載封裝在各自的uninstall命令中,運行${Appname}uninstall命令即可快速卸載。整個構建過程中的各個環(huán)節(jié)都已通過測試。
圖2 EPICS-Base的SPEC文件Fig.2 SPEC file of EPICS-Base.
4.1 Linux服務
Linux系統(tǒng)中通常使用service命令統(tǒng)一管理服務。service命令實質上是一個可執(zhí)行的腳本,位于/sbin目錄下。service的標準調用格式:
service [service_name] (start|stop|restart|…)
Linux系統(tǒng)還提供了/sbin/chkconfig工具,用來設置服務的開機自啟動及運行級別[15]。它的使用需要在/etc/init.d下的服務控制腳本中設定chkconfig和description兩個注釋參數(shù),再通過chkconfig--add<service>簡單的命令添加自啟動服務。
4.2 EPICS軟件調用現(xiàn)狀
部署好的EPICS軟件環(huán)境下,軟件的調用方式各異。如:IOC啟動時需要調用IOCBOOT下的st.cmd腳本;Alarm Server、Archive Engine等軟件工具在啟動時需要調用相應的啟動腳本,并指定配置文件及端口號等參數(shù)。軟件的調用方式繁雜,不利于管理。此外,當系統(tǒng)調試或者意外宕機需要重啟時,系統(tǒng)管理員需要手動輸入各種不同的命令和參數(shù)依次啟動各軟件,耗時耗力。
因此,本文提出將EPICS軟件設置成Linux服務,以規(guī)范統(tǒng)一的模式進行調用;并使用chkconfig工具將它們設置成開機自啟動。
4.3 EPICS軟件規(guī)范調用和自啟動實現(xiàn)
分兩步實現(xiàn):注冊Linux系統(tǒng)服務和添加自啟動服務。關鍵在于如何將EPICS軟件注冊成Linux系統(tǒng)服務。Linux服務的注冊依賴于/etc/init.d目錄下相應的服務腳本,即sercive控制腳本。各軟件的service控制腳本的工作大致類似,其工作流程如圖3所示。
考慮到代碼復用,也為了方便增加自定義服務,因此將圖3中“虛線框中”的部分作為通用的功能提取出來,設置成注冊服務的公用接口,即service-common腳本。
service-common腳本中實現(xiàn)了獲取服務程序PID函數(shù)get_service_pid()、程序啟動函數(shù)start()、終止進程函數(shù)stop()、查詢程序運行狀態(tài)函數(shù)status()、重啟程序函數(shù)restart()。當添加單個服務時,只需要在單個服務腳本中設置好服務名、啟動腳本路徑等偏好參數(shù),并在末尾調用service-common腳本即可。
通過以上設置,EPICS各軟件就成功注冊成為Linux系統(tǒng)服務,使用簡單的service命令就可以調用,如圖4所示。圖4(a)以CSS Alarm Server為例顯示了除IOC程序之外的軟件服務管理過程,圖4(b)以一個園區(qū)輻射監(jiān)測系統(tǒng)區(qū)域監(jiān)測IOC程序展示了IOC服務管理過程。與之前EPICS環(huán)境下的軟件調用方法相比,具有簡單明了、方便統(tǒng)一的特點。
圖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) 從系統(tǒng)管理角度,在多人參與的工程項目中,上述方案存在安全隱患。service命令只能在root用戶下使用,某些軟件的調用也只有root用戶有權限,普通用戶在使用軟件時需要使用su來切換到root下操作,而root用戶的密碼理應掌握在少數(shù)用戶手中[15]。因此,采取以下改進措施:
設置軟件服務啟動腳本的軟鏈接至/usr/bin目錄下,實現(xiàn)直接通過服務名調用軟件;并使用sudo工具將超級用戶對軟件調用的權限有針對性的下放給普通用戶。
(2) 在調試過程中,可能需要反復啟動、停止各軟件服務。按照§4.3所述的方案,用戶不得不在終端對軟件服務一個一個進行操作。為解決該問題,在service-common腳本的基礎上編寫multiple-services-common腳本,在其中實現(xiàn)doall()函數(shù),同時編寫另一個腳本傳入需要批量啟動的服務名序列,如SERVICES=("Alarm Server" "Archive Engine" "JMS2RDB")。
改進之后,普通用戶可以批量啟動服務,手工操作也最少化。如圖5所示,在用戶controluser1中可同時對多個CSS服務進行管理。
圖5 普通用戶批量管理服務Fig.5 Management of multiple services for general users.
本文緊密結合Linux系統(tǒng)的特點,使用相關軟件工具和編程初步完成了TMSR核心軟件的自動化部署和規(guī)范化調用,解決了目前EPICS軟件開發(fā)過程中的諸多不便,實現(xiàn)了Linux系統(tǒng)環(huán)境與EPICS軟件架構的統(tǒng)一。在后續(xù)工作中,將進一步完善其中的各個環(huán)節(jié),以期最大程度減少人工操作,實現(xiàn)統(tǒng)一、全自動化的軟件平臺。
致謝 作者之一雷蕾感謝她的導師和部門老師的悉心指導,以及部門所提供的良好的學習和實驗平臺。
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在加速器控制系統(tǒng)中的應用[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數(shù)據(jù)采集系統(tǒng)研究[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在正負電子對撞機低溫控制系統(tǒng)中的應用[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 李為民, 李京祎, 劉功發(fā), 等. EPICS和合肥光源控制系統(tǒng)[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的運動控制系統(tǒng)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 楊路明, 雷亞軍. 組態(tài)軟件WinCC在自動監(jiān)控系統(tǒng)中的應用[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核能系統(tǒng)[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集成開發(fā)工具軟件的實現(xiàn)與應用[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環(huán)境的研究[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控制系統(tǒng)軟件開發(fā)環(huán)境[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
中國科學院戰(zhàn)略先導科技專項(No.XDA02010300)資助
雷蕾,女,1989年出生,2012年畢業(yè)于武漢理工大學,現(xiàn)為碩士研究生,研究領域反應堆控制系統(tǒng)軟件
韓利峰,E-mail: hanlifeng@sinap.ac.cn
2015-03-18,
2015-04-10