楊子言,胡純棟,趙遠哲
(1.安徽大學物質科學與信息技術研究院,安徽 合肥 230601;2.中國科學院合肥物質科學研究院等離子體物理研究所,安徽 合肥 230031)

Figure 1 Structure of data plotting system 圖1 數據繪制系統結構
中性束注入憑借其優秀的加熱效果和清晰的物理機制,成為了聚變等離子體重要的加熱手段。而射頻負離子源因其適合長時間穩態運行且中性化效率不會隨粒子能量增加而下降的特性,逐漸取代了燈絲源和正離子源,成為中性束離子源的發展方向。負離子源中性束注入NNBI(Negative ion based Neutral Beam Injection)系統的研制也成為中國核聚變實驗堆CFETR(China Fusion Experimental Test Reactor)發展總體規劃中的重要部署。射頻負離子源脈沖實驗在實驗過程中會產生大量的數據,如實驗信號、設備狀態、圖像信息和日志記錄等。在以往的短脈沖實驗中,以LZO(Lempel-Ziv-Oberhumer)壓縮文件作為數據的存儲方式可以滿足實驗需求[1 - 5]。但是,隨著脈沖實驗的進一步發展,實驗的時間長度將由過去的數秒量級,逐步發展至未來的千秒量級,同時待采集的信號數量也在逐步增加,目前單次實驗產生的實驗數據已達到百兆字節量級[1],LZO壓縮文件的非實時特性已不能滿足實驗運行的數據存取要求[1,5]。而模型驅動系統MDSplus(Model Drive System plus)作為一個高效、功能豐富的數據管理系統,憑借其強大的數據存儲和數據實時處理特性,獲得了聚變界的廣泛認可,并逐步應用于美國的D形截面約束托卡馬克裝置DIII-D(DoubletIII-Di)、意大利的反場磁約束實驗裝置RFX(Reversed-Field eXperiment)和中國的全超導托卡馬克核聚變實驗裝置EAST(Experimental and Advanced Superconducting Tokamak)等聚變實驗中[6 - 10]。在該背景下,射頻負離子源脈沖實驗項目也計劃將MDSplus作為實驗數據的存儲管理系統。
然而,現有的數據繪制軟件只適用于LZO壓縮文件存儲方式,而MDSplus自帶的jScope繪制軟件無法對任意炮號數據波形進行對比并且缺少相關輔助功能[11],無法滿足實驗人員的研究需求。本文針對射頻負離子源脈沖實驗的實驗特性,結合MDSplus數據管理系統的系統特性,利用.NET平臺上Winform框架多種控件的豐富功能,設計了一套實時、多功能的射頻負離子源數據繪制系統。
系統結構在設計時主要考慮目前實驗對數據存取性能的需求以及將來實驗規模擴大后的可擴展性。根據需求分析,射頻負離子源數據繪制系統要滿足實驗數據的分段存儲以及用戶對實驗數據的遠程實時繪制要求。該系統主要由數據存儲模塊和數據繪制模塊組成,如圖1所示。
2.1.1 存儲需求分析
在射頻負離子源脈沖實驗中,根據啟動條件、采樣率和采集對象來源的不同,將采集的實驗數據對象種類分為高速采集數據;低速采集數據、真空數據、光譜診斷數據、低溫數據和朗繆爾探針數據等。其中,高速采集數據主要是加速電源以及引出電源產生的電壓電流;低速采集數據主要是射頻功率源、引出電源、加速電源、偏置電源、偏置板電源、磁濾器電源、緩沖器偏置電源、啟動燈絲電源、弧偏置電源和電偏轉電源等的電壓電流;真空系統、光譜數據、低溫數據等數據對象則為對應子系統產生的各類相關數據[1]。
MDSplus支持儲存的數據類型中,除了有符號整數、無符號整數、單精度和雙精度實數、單精度和雙精度復數、字符數據以外,還包括了信號和設備等復合數據類型。其中,信號復合類型包含實驗數據及其他相關的獨立軸(例如射頻負離子源源電流與時間的關系)。考慮到實驗數據的繪制需求皆與實驗時間相關聯,因此對于實驗數據的存儲皆采用信號復合數據類型。而除此之外的其他數據,諸如增益、偏移和采樣率等相關配置信息,采用單精度實數就足以滿足數據存儲要求。
2.1.2 存儲結構設計
MDSplus在邏輯存儲結構上采用樹形結構,單個實驗項目由一個模型樹文件和若干個脈沖樹文件組成[1]。其中,模型樹決定了數據存儲的層次結構,模型樹內的分支構成了樹的結構,葉子節點則為對應數據存儲的位置;而脈沖樹則是模型樹的數據副本,用于按照模型樹的層次結構存儲對應實驗所產生的數據。根據存儲需求的分析,射頻負離子源脈沖實驗數據的模型樹結構設計如圖2所示。

Figure 2 Structure of model tree 圖2 模型樹結構
在模型樹結構中,按照射頻負離子源系統的子系統組成分為若干個子樹,子系統下按照設備的不同再次延伸為若干個子樹。為了在滿足實驗需求的基礎上提高存儲效率,每個子樹葉子結點下設置信號(Signal)、原始數據(Raw Data)、時序(Timing)、開始時間(Start Time)、采樣率(Sampling Frequeney)、偏移(Offset)和增益(Gain)等數據節點。其中,信號節點為復合數據類型,由原始數據和時序復合而成。為了避免數據冗余,本文采用MDSplus的BUILD_RANGE方法,根據實驗的開始時間、持續時間和采樣率動態計算得到相應的時序,以節省時序數據占用的空間;信號節點的復合通過MDSplus的MAKE_SIGNAL方法實現,只需通過該方法即可將原始數據與時序建立起對應關系,且不占用額外存儲空間。
2.1.3 存取方式設計
為了保證數據的安全性以及服務器運行的穩定性,數據存儲模塊運行于CentOS系統服務器上,并配合MDSplus中Mdsobjects.h提供的函數實現服務器對實驗數據的存取功能。
MDSplus相對于以往的LZO壓縮方式來說,在數據存取上的最大特點就是支持數據的分段寫入和讀取[3]。在數據寫入的過程中,采集設備將每一秒內采集的數據與對應的炮號、信號名稱以及采集的開始時間、結束時間、采樣率等信息打包發送給服務器,服務器接收后通過對數據包進行分析找到對應的節點,并用MakeSegment方法將數據段寫入,寫入流程如圖3所示。MakeSegment方法會將數據保存至數據段的末尾,當實驗過程中出現錯誤導致實驗數據不能正常存儲時,可用PutSegment方法將數據段插入至指定位置。

Figure 3 Flow chart of data writing圖3 數據寫入流程
當第一段數據寫入數據庫后,MDSplus允許對數據庫中的數據按段進行讀取。利用GetNumSegments方法,可以獲取當前節點的數據的段數量,再利用GetSegment方法即可獲取當前節點目標段號的段數據。系統還設計了SetTimeContext方法,該方法允許用戶按照指定采樣率獲取指定時間段內的全部數據。GetNumSegments方法和SetTimeContext方法的使用差異如圖4所示。

Figure 4 Data read mode comparison圖4 數據讀取方式對比示意圖
2.2.1 繪制需求分析
射頻負離子源脈沖實驗中,目前單次實驗的時間長度為26 s,采樣率為5 000 Hz,單個信號源的數據量可達13萬。除此之外,目前共有64道信號數據需進行采集繪制。考慮到將來實驗時間長度的延長和待采集信號數量的增長,系統需支持對最大百萬量級的數據實現快速穩定的傳輸和繪制。
在波形繪制方面,系統除了需要將數據平滑完整地繪制以外,還需要提供橫縱向縮放、區域截取和數值顯示等基本功能。為了方便實驗人員在實驗過程中觀察數據,還需要添加諸如波形對比、全局縮放、波形平鋪和縮放記憶等輔助功能。除此之外,針對將來脈沖實驗持續時間最長可至3 600 s這一現實需求,還需要提供數據重采樣功能,以實現對高采樣率數據進行低采樣率快速繪制。
在數據通信方面,因為TCP協議具有擁塞控制、快速重傳和快速恢復等特性,能夠保證射頻負離子源脈沖實驗產生的數據完整地傳輸至用戶端口,所以系統采用TCP協議來實現數據的遠程傳輸。為了實現客戶端與服務器之間、服務器與采集端之間的統一通信,系統定義了MDSplusHeader結構體作為服務器識別請求的媒介。MDSplusHeader中定義了設備名、服務器名、操作符、信號名、炮號、時間增量、開始時間、結束時間和數據長度等信息,服務器識別對應信息后,會進行相應存入或者讀取數據的操作。MDSplusHeader結構體中各字段如圖5所示。

Figure 5 Diagram of MDSplusHeader field 圖5 MDSplusHeader各字段示意圖
2.2.2 數據繪制模塊設計
為了保證數據的平滑繪制及相關功能的實現,在經過對比msChart、MicroChart、ZedGraph、WaveFormGraph和EasyChart等波形繪制控件的功能及顯示效果之后,射頻負離子源數據繪制模塊采用簡儀科技開發的EasyChartX和StripChartX繪圖控件實現數據繪制。上述控件繪制百萬量級的數據所需時間最快僅需數十毫秒,能夠滿足實驗需求。數據繪制模塊流程如圖6所示。

Figure 6 Flow chart of data plotting module圖6 數據繪制模塊流程圖
根據需求分析,數據繪制模塊的重點是能在數據繪制方面提供多種功能。繪圖控件自身提供了橫縱向縮放、區域截取和數值顯示等基本功能,其余特色功能需要利用控件提供的各項接口組合實現。其中,利用繪圖控件支持同時繪制多線條的特性,可以實現多炮號實驗波形的對比功能,考慮到這一功能的使用場景往往為單次實驗結束之后,因此數據繪制模塊將繪制功能分為實時模式和對比模式2種模式。在實驗過程中,實驗人員往往需要對整段數據中固定時間范圍的所有信號數據進行縮放,根據這一需求,本文利用控件的ViewMaximum和ViewMinimum屬性實現對全局信號的統一控制,也可以記錄當前縮放狀態以對下一炮的實驗數據波形進行相同范圍縮放。
平鋪繪制功能和數據重采樣功能是數據繪制模塊的特色功能。其中平鋪繪制功能針對的是實驗數據的峰谷值相差較大時,在對某一區間數據截取后還需要多次進行手動縱向的縮放才能達到良好的繪制效果這一問題。利用ArrayArithmetic庫中的FindMaxMin函數,可以獲取到數據內的最大值和最小值,即可通過限制視圖范圍的方式對數據線條進行平鋪。并且當用戶對特定區域進行縮放后,仍可對該特定區域的繪制線條進行二次平鋪。該功能能夠簡化實驗人員的操作步驟,方便實驗人員對實驗數據進行分析。該功能繪制效果如圖7所示。

Figure 7 Plotting effect of tile function 圖7 平鋪功能繪制效果
數據重采樣功能針對的是對大量實驗數據進行分析繪制。當待接收的數據量過大時,會導致系統響應緩慢,且會增加實驗人員的等待與反應時間。而系統的數據收集與數據繪制是2個獨立的過程,只有當數據收集完成后,控件才會對數據進行繪制,這其中數據收集耗費的時間遠大于繪制所耗費的時間。因此,針對長脈沖數據的繪制任務,可利用本文設計的SetTimeContext方法先獲取低采樣率的數據。SetTimeContext方法允許用戶從MDSplus數據庫中獲取不同采樣率的數據。當低采樣率數據快速繪制完成后,數據繪制模塊在后臺繼續接收高采樣率的數據,當接收完成后,實驗人員可以自行選擇是否將波形更新為高采樣率的數據。該功能的繪制流程如圖8所示。

Figure 8 Flow chart of resampling function圖8 重采樣繪制功能流程圖
通過這種方法實現的數據重采樣功能,在應對將來的3 600 s脈沖實驗時,能夠極大節省繪制時實驗人員的等待時間。具體效果如圖9所示。圖9中,“Before Resampling”為500 Hz采樣率的數據繪制效果,“After Resampling”為5 000 Hz采樣率的數據繪制效果。

Figure 9 Plotting effect of resampling function 圖9 重采樣功能繪制效果
在界面設計上,由于數據繪制模塊的主要目標是滿足實驗人員分析數據的需求,因此波形繪制界面在整體界面中占有很大的比重。除此之外,本文還設計了諸如基本功能選擇欄、配置信息設置、全局模式設置、基本信息顯示和小功能欄等模塊方便實驗人員使用。界面的整體布局如圖10所示。

Figure 10 Interface layout of data plotting module 圖10 數據繪制模塊界面布局
為檢測系統在時間、空間和功能上的性能是否能夠滿足需求,現對數據存儲和數據繪制2個模塊的相關性能進行測試。
由于數據的壓縮效率和數據的讀取時間對系統整體的使用影響最大,本節主要測試數據壓縮的空間性能和數據讀取的時間性能。
系統測試中客戶端環境為Intel Core i7-8700K處理器、16 GB DDR4內存、1 000 Mbps網絡;數據服務器環境為Intel Xeon E5-2450L處理器、8 GB DDR3內存、1 000 Mbps網絡、MDSplus版本為7.96-stable。
數據壓縮方面,測試采用26624、26625、26635三炮的實驗數據在文本文件下與MDSplus數據服務器內相應炮號脈沖樹下的.datafile文件字節大小的不同來計算壓縮率,結果如表1所示。經測試得到MDSplus數據的壓縮率平均為15.5%,與LZO算法平均20%的壓縮率[11]相比,進一步提高了存儲空間的利用率。

Table 1 MDSplus file compression ratio表1 MDSplus文件壓縮率
數據讀取方面,由于MDSplus具有分段管理數據的特性,服務器在處理讀取數據的請求時會按數據段異步執行讀取和傳輸操作,所以單次數據請求的處理時間將由網絡傳輸速度決定,數據讀取耗時可忽略不計。
數據繪制模塊的測試主要是數據繪制模塊執行各項繪制功能所需的時間,以及軟件運行的穩定性。各功能所需執行時間如表2所示。

Table 2 Execution time of module functions 表2 數據繪制模塊各功能耗時
經多次測試,數據繪制模塊對于單個約127 MB的數據文件繪制的平均耗時為530 ms。而在繪制2個總大小為253 MB的數據文件這種較為極端的情況時,繪制耗時平均為1 260 ms。針對這種情況對采樣率為5 000 Hz的原數據文件分別進行1 000 Hz和500 Hz的重采樣繪制之后,平均繪制耗時則分別為315 ms和133 ms,該功能能夠在保證一定繪制質量的同時極大地減少繪制耗時。
本文基于MDSplus的數據存儲模塊和基于C++的數據繪制模塊共同實現了數據的分段存儲、分段讀取、實時繪制等射頻負離子源脈沖實驗迫切需求的功能。而MDSplus對實驗數據的高效壓縮以及數據繪制模塊提供的多種功能進一步提高了實驗過程中數據存儲和分析的效率,改善了實驗人員的體驗,也通過了時間的考驗。該系統除了可以應用于射頻負離子源脈沖實驗這類中性束注入實驗以外,對于大部分需要大量繪制和存儲實驗數據的使用場景,均能起到減少數據存儲空間、分段管理數據和實時繪制數據等作用。然而,系統本身仍舊存在一些需要改進的地方。下一步將針對數據繪制模塊使用過程中內存占用較高、無法保留已繪制的頁面、最大僅支持三炮數據對比繪制等問題,進行進一步改進和完善。同時,也將繼續在數據存儲結構優化和數據存儲管理等方面進行探索,以求找到更高效、更靈活的數據存取方式。