999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

EPICS PCAS及其在BEPCII上的應用

2012-03-22 02:42:38張玉亮徐廣磊
核技術 2012年10期
關鍵詞:程序數據庫

張玉亮 雷 革 徐廣磊 朱 鵬

(中國科學院高能物理研究所 北京 100049)

EPICS(Experimental physics and industrial control system)[1]軟件應用于粒子加速器、大型射電天文望遠鏡及飛機工業等領域。其組成包括運行在客戶端的操作員接口模塊OPI(Operator inter face)、運行在服務器端的輸入輸出控制模塊 IOC(Input output controller)和網絡通訊模塊 CA(Channel access),它們以客戶/服務器模式工作在網絡環境中。

CA(Channel access)就像客戶端和數據庫之間的網關,提供與EPICS PV(Process variable)建立網絡透明連接,連接建立后,CAC(Channel access client)可通過CA訪問運行在CAS(Channel access server)[2]的PV。應用中,每當客戶端應用程序調用CAC庫的任何請求時即會建立CAC,當CAC的請求發送到CAS后,CAS的工作就是調用數據庫程序完成讀、寫或監測等任務。

目前,大多數EPICS客戶端工具,只能和具有EPICS功能模塊的數據庫一起使用,不能和EPICS的異構系統一起使用,因為這些EPICS客戶端工具均通過上面的方法訪問PV變量的。比如EDM,通過調用 CAC庫請求與服務器建立連接,而后這些連接被映射成EPICS數據庫程序請求來操作EPICS數據記錄(Record)或者域(Field),但是,EPICS數據庫程序請求只能操作EPICS數據庫。

利用CAS服務器級別的應用程序接口(API)可解決上述問題,這種服務器級別的 API稱為PCAS(Portable channel access server)。PCAS可以和EPICS數據庫I/O程序及異構系統程序建立聯系。使用PCAS可直接創建EPICS PV的特性,開發出專門用于特殊低優先級任務的EPICS CA服務器程序,這樣EPICS客戶端應用程序就可和基于PCAS的服務器進行通信。在EPICS CAS工具CaSnooper[3]、PV Gateway[4]以及 NameServer[5]中都用到PCAS技術,用來在程序中直接創建EPICS PV。

本文介紹PCAS的使用方法,利用PCAS開發了名為pcasdll的動態鏈接庫。并以win32平臺為例,介紹了使用pcasdll開發的BEPCII電子槍定時插件測溫采集系統。

1 PCAS介紹

PCAS是一個具有簡單類接口的C++庫[6,7],利用 API可開發具有 CA服務器功能的應用程序—EPICS服務器工具,圖1所示為PCAS服務器工具接入EPICS示意圖。可創建EPICS PV,并將用戶定義變量賦值給EPICS PV,或把EPICS PV賦值給用戶定義變量,OPI可直接通過CA訪問EPICS服務器工具中的 PV。PCAS對開發者隱藏了實現CA服務的全部細節,PCAS中包含服務器創建/撤銷,PV創建/撤銷,響應客戶端的PV搜索和PV讀/寫請求,發出PV 狀態事件等功能。

PCAS由九個類組成,每類包含多個成員函數,有些成員函數是虛函數,即這些函數可以在派生類中重新定義,實現該函數具體的功能;還有一部分成員函數是純虛函數,即需在開發應用程序時,完成這些函數的實現。盡管如此,實現一個基本功能的服務器程序的代碼量很少,同時CA實現的復雜性也在面向對象的編程類接口中隱藏了。PCAS的API的九個類為:服務器類 caServer、過程變量類casPV、過程變量查詢類 pvExistReturn、過程變量創建類pvAttachReturn、通道訪問類casChannel;4個異步I/O類為casAsyncPVExistIO、casAsync-CreatePVIO、casAsyncReadIO、casAsyncWriteIO。

實現一個 PCAS,須繼承前四個類的,即:實現caServer、casPV、pvExistReturn、pvAttachReturn的派生類。另外,casChannel類輔助實現CA訪問控制功能,異步I/O類可以實現異步讀寫操作功能。

圖1 PCAS服務器工具接入EPICS示意圖Fig.1 Schematics of the PCAS server tool porting to EPICS.

2 動態鏈接庫pcasdll

2.1 pcasdll動態鏈接庫設計與實現

為方便使用EPICS PCAS開發應用程序,利用PCAS開發了名為pcasdll的動態鏈接庫[6–8],pcasdll程序源代碼可在linux平臺或Win32平臺上編譯,分別生成linux平臺或windows平臺的動態鏈接庫,實現跨平臺使用。pcasdll基于EPICS Base3.14.x (Base 3.14系列)開發,共包含七個類:Server、Record、Field、EnumRecord、StringRecord、Num-Record和exChannel。

Server類從caServer類繼承而來,主要實現注冊Record(本地變量)至RecordTable,關聯EPICS PV至Record,響應Client端對EPICS PV查詢的功能;Field類從casPV類繼承而來,主要實現創建EPICS PV,響應Client端EPICS PV讀/寫請求,返回EPICS PV屬性的功能;exChannel類從casChannel類繼承而來,用來實現EPICS PV的訪問控制功能;Record類主要實現保存Record的值與屬性,對Record值與屬性進行操作,發送EPICS狀態事件,注冊/撤銷Field(EPICS PV),實現寫EPICS PV時的callback機制等功能;EnumRecord、NumRecord和String-Record繼承于 Record類,分別用來實現對枚舉類型、數字類型和字符串類型Record的支持。

pcasdll的實現框圖如圖2。在pcasdll設計中,Record的名字放在map型變量RecordTable中,調用pcasdll開發的應用程序,每生成一個xxxRecord實例,其基類 Record的構造函數通過調用 Server類成員registerRecord(),把xxxRecord實例名字置于 RecordTable中。當應用程序收到來自客戶端的PV查詢請求時,通過調用Server類成員函數pvExist-Test(),檢查應用程序的RecordTable中是否擁有該名字。若有,則返回pverExistsHere,并調用Server類成員函數pvAttach()創建一個EPICS PV與該名字關聯,這樣就建立了EPICS PV與應用程序本地變量的聯系;若無,則返回pverDoesNotExistHere。

圖2 pcasdll實現框圖Fig.2 Implementation block diagram of pcasdll.

pcasdll對于PV的書寫格式,采取類似EPICS數據庫中PV“Record.Field”的形式,在Record類中,保存了與PV值與屬性。當客戶端軟件請求讀/寫PV時,pcasdll首先調用Field類成員函數read()/write(),根據Client請求數據的類型,繼而調用Record類成員函數readxx()或writexx()來讀/寫PV屬性,如函數readValue()和wirteValue()分別用來讀取PV的值和向PV寫入值。若Client請求的數據類型在Record中未找到,則返回S_casApp_noSupport。

pcasdll提供接口函數setxxx()和getxxx(),用來獲取當前PV值或設定PV值。用戶調用pcasdll開發的應用程序,通過調用函數 setxxx(),把應用程序的本地變量值賦給EPICS PV變量,或用getxxx()函數獲取 EPICS PV的值。其中函數 setxxx()和getxxx()可根據PV不同的屬性,進行選擇調用。比如:函數setval()和getval用于給PV賦值和獲取PV值;函數 setHihi()和 getHihi()用于設置和獲取 PV最高、最低報警界限。

pcasdll實現了 EPICS的 callback機制和postEvent機制。當客戶端通過CA改變了PV值或屬性值,通過調用函數doWriteCallback()對應用程序進行通知,修改相應的本地變量;當應用程序通過setxxx()函數改變了PV值或屬性值,通過調用函數postEvents()向客戶端發送EPICS事件通知,以實現客戶端程序和本地應用程序數據的同步更新。

2.2 pcasdll性能測試及應用介紹

為檢測pcasdll的CA響應性能,選取同為運行在非實時操作系統上的EPICS SoftIOC服務器程序作為比較對象,利用catime工具對PCAS服務器與SoftIOC進行CA訪問測試。測試中,PCAS服務器與SoftIOC運行在同一臺運行Windows XP系統的機器上,運行了100個EPICS PV,catime工具運行在與 Windows機器網線插于同一個交換機中的一臺運行Linux Redhat enterprise 4.0操作系統機器上。利用catime分別對兩個EPICS服務器中的其中一個PV進行10000次CA測試,選取網絡速度近似相等的測試結果進行比較,對單精度、字符串和雙精度型數據同步訪問測試結果如表 1所示,可以看到PCAS服務器和SoftIOC對CA同步訪問響應性能基本上一致。

表1 PCAS與SoftIOC CA測試結果對比Table 1 CA test comparison between PCAS and SoftIOC.

3 BEPCII電子槍定時插件的溫度數據采集程序

BEPCII電子槍定時插件溫度數據采集系統結構如圖3所示,此程序運行于一臺運行Windows XP系統的Tektronix示波器上,負責讀取示波器測量的電子槍觸發信號抖動值。由于Tektronix示波器運行Windows XP系統,程序開發中使用了 pcasdll的win32版本,即pcasdll.dll。數據采集程序通過串口讀取溫度數據,在采集程序內部利用PCAS把溫度數據賦值給 EPICS PV,從而實現溫度數據通過EPICS進行實時監測。圖4為通過EPICS Archiver-Viewer查詢到的溫度歷史數據。

圖3 BEPCII電子槍定時插件測溫采集系統Fig.3 Temperature measurement of timing module for electron-gun of BEPCII.

圖4 BEPCII電子槍定時插件溫度歷史數據Fig.4 History temperature of timing module for electron-gun of BEPCII.

4 結語

介紹了EPICS PCAS類庫接口,并研究了如何利用PCAS把EPICS異構系統接入EPICS中。為方便使用PCAS類庫,開發了基于PCAS的動態鏈接庫pcasdll,pcasdll源代碼可在linux平臺和win32平臺編譯,實現了跨平臺使用。此外,還對 PCAS服務器進行了CA訪問測試,其CA同步訪問響應和SoftIOC性能相當。

對于EPICS異構系統,可使用PCAS把本地程序接入EPICS中。利用PCAS開發應用程序,方便靈活、易于移植,極大降低了軟件開發周期和系統開發成本。本文利用 pcasdll動態鏈接庫開發了BEPCII電子槍定時插件溫度數據采集系統,經長時間檢測,其運行穩定,可很好滿足調束人員的需求。

1 http://www.aps.anl.gov/epics/, 2012

2 http://www.aps.anl.gov/epics/extensions/cas/index.php, 2012

3 http://www.aps.anl.gov/epics/extensions/caSnooper/index. php, 2012

4 http://www.aps.anl.gov/epics/extensions/gateway/index. php, 2012

5 http://www.aps.anl.gov/epics/extensions/nameserver/inde x.php, 2012

6 Philip Stanley. Channel access portable server API tutorial, 1999, http://www.aps.anl.gov/epics/extensions/cas/index.php, 2012

7 Philip Stanley. Channel access portable server reference guide, 1997, http://www.aps.anl.gov/epics/extensions/cas/index.php, 2012

8 http://www.aps.anl.gov/epics/EpicsDocumentation/Epics General/gddref2.html, 2012

猜你喜歡
程序數據庫
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
數據庫
財經(2017年15期)2017-07-03 22:40:49
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 色欲色欲久久综合网| 99无码中文字幕视频| 极品私人尤物在线精品首页| 国产精品午夜电影| 国产一区在线观看无码| 亚洲国产精品一区二区第一页免| 一区二区偷拍美女撒尿视频| 99精品久久精品| 亚洲午夜国产精品无卡| 亚洲品质国产精品无码| 2021国产精品自产拍在线| 99在线视频网站| 日本91在线| 亚洲高清无在码在线无弹窗| 粉嫩国产白浆在线观看| 久久一日本道色综合久久| 9丨情侣偷在线精品国产| 欧美午夜小视频| 亚洲乱码视频| 老司机aⅴ在线精品导航| 亚洲无码37.| 亚洲中文在线看视频一区| 国产又色又刺激高潮免费看| 狠狠干综合| 亚洲视屏在线观看| 欧美福利在线观看| 伊人狠狠丁香婷婷综合色| 国产亚洲精品自在线| 亚洲视频无码| 99尹人香蕉国产免费天天拍| 久久国产精品嫖妓| 亚洲美女一区| 久久久久久国产精品mv| 丰满人妻久久中文字幕| 国产大片黄在线观看| 波多野结衣无码中文字幕在线观看一区二区| 久青草网站| 国产激情在线视频| 好吊色国产欧美日韩免费观看| 啪啪啪亚洲无码| 国产欧美精品午夜在线播放| 无码中文字幕精品推荐| 久草视频精品| 国产综合色在线视频播放线视| 极品av一区二区| 久久中文字幕2021精品| 亚洲无线视频| 无码免费的亚洲视频| 欧美日韩中文字幕二区三区| 亚洲愉拍一区二区精品| 国内精自视频品线一二区| 四虎成人精品| 黄色片中文字幕| 日本伊人色综合网| 高清不卡一区二区三区香蕉| 国产成人h在线观看网站站| 青青草91视频| 欧美精品1区2区| 国产亚洲男人的天堂在线观看 | 青青草国产免费国产| 欧美色伊人| 91丨九色丨首页在线播放| 亚洲国产系列| AV在线麻免费观看网站 | 国产浮力第一页永久地址| 国产91麻豆免费观看| 国产女人18水真多毛片18精品 | 丰满的熟女一区二区三区l| 18禁高潮出水呻吟娇喘蜜芽| 99在线观看视频免费| 欧美成人国产| 精品一区二区三区无码视频无码| 国产成人综合久久| 美女一级毛片无遮挡内谢| 久久精品丝袜| 老司机午夜精品视频你懂的| 久久黄色视频影| 2021国产乱人伦在线播放| 国产91在线|日本| 亚洲swag精品自拍一区| 国产黄色视频综合| 特级毛片免费视频|