張?zhí)煺?孔安博 陳凱 陳留國 劉功發(fā)
(中國科學(xué)技術(shù)大學(xué) 國家同步輻射實驗室 合肥 230029)
在使用X射線進行材料表征時,相關(guān)掃描實驗可進行多維度、多模態(tài)成像以及吸收譜學(xué)測試,從而全面、準確地得到樣品內(nèi)部結(jié)構(gòu)和細節(jié)、元素組成和化學(xué)狀態(tài)[1-2]。合肥光源(Hefei Light Source,HLS)是真空紫外和軟X射線同步輻射光源[3]。目前,HLS的軟X射線磁性圓二色(X-ray Magnetic Circular Dichroism,XMCD)、催化與表面科學(xué)和計量等實驗站在進行掃描實驗時,均采用步進掃描模式。步進掃描模式的掃描過程是電機在運動到設(shè)定位置時停止,觸發(fā)探測器或者傳感器完成數(shù)據(jù)的采集和記錄,然后再控制電機運動到下一個設(shè)定位置,重復(fù)上述過程,直到掃描結(jié)束。在步進掃描模式中,電機需要經(jīng)歷多輪的減速、停止與加速過程,由電機運動帶來的死區(qū)時間在掃描總用時中占據(jù)極大比例,導(dǎo)致掃描過程耗時長,實驗效率低[4-5]。解決這個問題的一種有效方法是采用飛掃模式進行掃描實驗,讓電機在掃描過程中連續(xù)運動,并同步采集探測器數(shù)據(jù),從而減少掃描用時,提高實驗效率[6]。
目前,國內(nèi)外已經(jīng)有一些實驗站正在使用或者正在部署飛掃這種快速連續(xù)掃描系統(tǒng),包括能量飛掃和空間位置飛掃。目前飛掃的實現(xiàn)方式主要有兩種。第一種系統(tǒng)是使用集成了運動控制、位置捕捉并有同步觸發(fā)功能的運動控制器,例如西班牙ALBA光源在其BL22線站使用Turbo PMAC控制器實現(xiàn)飛掃[7]。第二種系統(tǒng)的運動控制部分由MAXv、IcePAP等不具有位置捕捉和硬件觸發(fā)功能的控制器實現(xiàn),借助外部計數(shù)卡或者同步觸發(fā)硬件計算觸發(fā)位置并完成觸發(fā),例如BESSY Ⅱ光源、上海光源、ALBA光源的部分線站使用計數(shù)卡實現(xiàn)飛掃[8-9];中國臺灣TPS、日本KEK、法國SOLEIL、英國Diamond、美國NSLS-Ⅱ、中國北京HEPS等光源通過基于FPGA的同步觸發(fā)硬件實現(xiàn)飛掃[10-17]。綜合考慮兩種方法,為了適應(yīng)更多種類的運動控制器,本文選擇使用第二種方法。參考SOLIEL和Diamond合作研制的硬件同步觸發(fā)系統(tǒng)PandABox設(shè)計了基于國產(chǎn)SoM(System-on-module) Alinx-AC7020的同步觸發(fā)模塊[18-20]。開發(fā)了基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA) Zynq7020的硬件同步觸發(fā)模塊,并以它為核心構(gòu)建了包含同步信號采集模塊、同步運動控制模塊、上層軟件控制模塊的飛掃控制系統(tǒng)。我們將這套飛掃控制系統(tǒng)應(yīng)用于合肥光源XMCD實驗站,實現(xiàn)了單色器能量飛掃實驗,并對X射線吸收譜實驗數(shù)據(jù)的一致性、穩(wěn)定性和重復(fù)性等關(guān)鍵指標做了分析。實驗結(jié)果表明,在滿足采譜性能指標的前提下,該飛掃系統(tǒng)可顯著提高實驗效率和用戶體驗。
飛掃的掃描過程主要包含電機運動和數(shù)據(jù)采集,為了快速、同步地完成掃描,本文設(shè)計的飛掃系統(tǒng),主要由同步運動控制模塊、同步數(shù)據(jù)采集模塊以及上層軟件控制模塊組成。系統(tǒng)結(jié)構(gòu)如圖1所示,其中運動控制器負責按照設(shè)定的軌跡運動控制多軸電機同步運動,并通過編碼器采集運動機構(gòu)的位置編碼信號發(fā)送給同步數(shù)據(jù)采集模塊內(nèi)的硬件同步觸發(fā)模塊。硬件同步觸發(fā)模塊根據(jù)編碼器信號計算電機運動位置,依據(jù)預(yù)先設(shè)定的位置列表產(chǎn)生觸發(fā)信號,提供給探測器或傳感器觸發(fā)數(shù)據(jù)采集。
圖1 飛掃系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of the proposed on-the-fly mode control system
HLS的控制系統(tǒng)是基于實驗物理及工業(yè)控制系統(tǒng)(Experimental Physics and Industrial Control System,EPICS)的分布式控制系統(tǒng)[21]。運動控制器、硬件同步觸發(fā)模塊、探測器或傳感器的控制信號以及設(shè)備狀態(tài)信息都通過EPICS網(wǎng)絡(luò)傳送。掃描控制軟件基于Bluesky架構(gòu),Bluesky是由美國NSLS-Ⅱ和APS實驗室共同研發(fā)的用于科學(xué)數(shù)據(jù)采集、管理和分析的軟件組件,是建立在硬件抽象層之上的數(shù)據(jù)收集框架[22]。飛掃系統(tǒng)底層通過EPICS跟硬件進行交互,實現(xiàn)掃描方式、掃描范圍、探測器控制、運動控制等參數(shù)的控制,探測器的實驗數(shù)據(jù)采用以太網(wǎng)進行傳輸。上層應(yīng)用軟件主要實現(xiàn)掃描結(jié)果的處理、存儲和顯示。
運動控制器負責接收上位機生成的運動路徑,控制多軸電機同步運動。本文選擇Zmotion公司的ZMC464運動控制器為同步運動控制模塊核心。ZMC464運動控制器最多支持64軸同步控制,支持編程以及EtherCAT(Ethernet for Control Automation Technology)接口,支持多軸插補功能,最大脈沖頻率為10 MHz,能提供給電機較高的轉(zhuǎn)速和位置精度。驅(qū)動器選擇的是支持EtherCAT總線接口和CiA 402協(xié)議的驅(qū)動器。電機上的編碼器信號一分為二,一路給同步觸發(fā)模塊用來計算位置,產(chǎn)生硬件同步觸發(fā);一路給運動控制器,實現(xiàn)閉環(huán)控制。ZMC464運動控制器與多臺驅(qū)動電機的驅(qū)動器采用EtherCAT主從模式進行通信來實現(xiàn)多軸同步,其中ZMC464為主站,掛載多臺驅(qū)動器為從站。
ZMC464運動控制器和EPICS IOC(Input-Output Controllers)之間采用TCP通訊。運動控制器的程序流程如圖2所示?;诙嗳蝿?wù)技術(shù)進行編程,主任務(wù)創(chuàng)建新任務(wù)后,任務(wù)獨立執(zhí)行,各任務(wù)間互不影響。軌跡更新任務(wù)在上電后自動創(chuàng)建,循環(huán)等待上位機發(fā)送的運動軌跡信息,并將這些軌跡點存入運動控制器內(nèi)的TABLE寄存器;主任務(wù)在上電后循環(huán)運行,根據(jù)上位機指令可以完成軸號選擇、參數(shù)設(shè)定、運動等功能,當接收到啟動飛掃的指令時創(chuàng)建飛掃任務(wù),依據(jù)已設(shè)定軌跡完成多軸同步運動,完成運動后飛掃任務(wù)結(jié)束。
圖2 運動控制器程序流程圖Fig.2 Flowchart of the motion controller program
同步觸發(fā)模塊是為了在電機快速、連續(xù)運動時,根據(jù)電機的位置同步地產(chǎn)生觸發(fā)信號,觸發(fā)探測器完成數(shù)據(jù)采集。同步觸發(fā)模塊主要包含Zynq核心、編碼器控制單元、脈沖IO單元、設(shè)備監(jiān)控單元、供電單元其結(jié)構(gòu)如圖3所示。Zynq芯片型號為XC7Z020-2CLG400,包含F(xiàn)PGA programmable logic(PL)和ARM Cortex-A9 processor system(PS),外接主要元器件為DDR3、QSPI-flash、USB串口、SD卡、以太網(wǎng)PHY。
圖3 同步觸發(fā)模塊系統(tǒng)結(jié)構(gòu)圖Fig.3 Structure diagram of the synchronous trigger module system
編碼器控制單元包括輸入控制和輸出控制兩部分,支持正交(Quadrature)、同步串行接口(Synchronous Serial Interface,SSI)、雙向同步串行接口(Bidirectional Synchronous Serial Interface,BISS)和數(shù)字同步串行協(xié)議(EnDat),使用跳線配置編碼器信號類型。輸入控制對接收的外部編碼器信號進行電平轉(zhuǎn)換后輸入至Zynq的PL編碼器端控制模塊,輸出控制則是將PL端編碼器控制模塊輸出的波形輸出至外部接口。PL中編碼器控制模塊用于與編碼器控制單元通信,提供控制信號、采集編碼器波形數(shù)據(jù)并解碼得到位置數(shù)據(jù),同時也可根據(jù)位置序列產(chǎn)生編碼信號送至編碼器輸出。
脈沖IO單元輸入輸出同步脈沖,接收PL端脈沖產(chǎn)生模塊產(chǎn)生的脈沖信號進行轉(zhuǎn)換輸出單端或差分脈沖,接收外部脈沖信號轉(zhuǎn)換發(fā)送至PL端。PL端脈沖產(chǎn)生模塊與脈沖IO單元通信,提供控制信號、采集輸入脈沖信號,可配置脈沖數(shù)、寬度、頻率、觸發(fā)條件等參數(shù),產(chǎn)生脈沖信號輸出至脈沖IO單元。
設(shè)備監(jiān)控單元用于采集設(shè)備內(nèi)各類工作電壓的狀態(tài)以及風扇轉(zhuǎn)速和溫度數(shù)據(jù),通過I2C跟ZYNQ芯片的PL端設(shè)備監(jiān)控模塊相連接。
PS和PL之間通過可擴展互聯(lián)總線(Advanced eXtensible Interface,AXI)互聯(lián),PL端接口配置模塊接收PS端控制需求和數(shù)據(jù)采集請求,對編碼器控制和脈沖產(chǎn)生模塊提供接口配置參數(shù)控制,收集位置數(shù)據(jù)和設(shè)備監(jiān)控數(shù)據(jù),打包后通過AXI總線發(fā)送至PS端。PS上運行TCP服務(wù)器,上位機可以使用IOC通過TCP對同步觸發(fā)模塊進行訪問,通過讀寫映射在用戶空間的PL端寄存器,讀取位置信息和配置參數(shù)。
軟件控制模塊基于Bluesky框架進行開發(fā),其結(jié)構(gòu)如圖4所示。底層的硬件設(shè)備通過以太網(wǎng)接入軟件控制模塊,通過EPICS IOC進行控制和狀態(tài)讀取。Ophyd層將EPICS PV信息抽象為設(shè)備對象,并提供給Bluesky以API接口。在Bluesky中,掃描過程被抽象為Plan,具體為調(diào)用實驗需要的硬件對象按照實驗過程執(zhí)行一系列原子操作來完成整個實驗。Bluesky將飛掃的Plan定義為包括包括kickoff、complete、collect三個函數(shù),其中kcikoff先完成掃描和探測器相關(guān)的參數(shù)設(shè)置然后啟動掃描,complete是等待掃描完成最后執(zhí)行,collect完成對探測器數(shù)據(jù)的采集、處理。RunEngine是Plan的解釋器,通過執(zhí)行設(shè)計好的Plan實現(xiàn)多設(shè)備聯(lián)動完成特定實驗。掃描運行過程中,RunEngine同步將數(shù)據(jù)和元數(shù)據(jù)通過Documents的方式拋出,傳遞給多個回調(diào)函數(shù),在回調(diào)函數(shù)中進行數(shù)據(jù)的實時處理、顯示以及存儲。從用戶系統(tǒng)獲取的包括用戶ID、實驗類型、實驗參數(shù)等內(nèi)容作為元數(shù)據(jù)同時被存儲,實驗數(shù)據(jù)和元數(shù)據(jù)統(tǒng)一打包成HDF5文件格式,HDF5可以處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),并支持高性能的數(shù)據(jù)存儲和檢索。
圖4 軟件控制模塊結(jié)構(gòu)圖Fig.4 Structure diagram of the software control module
本文設(shè)計的飛掃系統(tǒng)在HLS的XMCD線站完成部署并應(yīng)用在XAS實驗采譜中?,F(xiàn)場部署示意圖如圖5所示,單色器的電機采用了鳴志公司的SSDC06-ECX-H,電機的編碼器信號接入同步觸發(fā)模塊。
圖5 現(xiàn)場部署示意圖Fig.5 Schematic of the on-site deployment
式(1)給出了光柵方程和聚焦關(guān)系,其中:α、β分別為光柵的入射角和衍射角;λ是波長;a1是光柵的設(shè)計參數(shù);n為光柵線密度;m為衍射級次;r1、r2分別為光柵的入射臂和出射臂[23]。依據(jù)出射光能量不同計算出α、β。
光柵單色器光路示意圖如圖6所示,由此可得到平面鏡和光柵偏轉(zhuǎn)角度的計算公式(2),其中:α、β分別為光柵的入射角和衍射角;θ、φ是平面鏡和光柵的偏轉(zhuǎn)角度;γ是運動機構(gòu)的安裝誤差;Xm、XG是平面鏡和光柵的位置,X0m、Lem、θ0m、X0g、Leg、φ0g是初始位置和角度參數(shù)由標定得到。
圖6 光柵單色器光路示意圖Fig.6 Schematic of the light path in a grating monochromator
綜合式(1)和式(2)通過能量計算對應(yīng)波長得到光柵的入射角和衍射角α、β進而計算出平面鏡和光柵的偏轉(zhuǎn)角θ、φ,進一步得到能量和平面鏡、光柵位置Xm、Xg之間的關(guān)系,即按照特定軌跡同步運動光柵和平面鏡就可以連續(xù)改變能量。
進行飛掃實驗的時候,控制平面鏡和光柵位置的兩個電機進行同時同步運動。兩軸的聯(lián)動運動控制采用連續(xù)直線插補運動,飛掃運動過程中,速度設(shè)定值為兩個軸的合成速度,XMCD線站光柵-平面鏡位置關(guān)系如圖7所示,在常用實驗?zāi)芰慷谓茷榫€性,兩個電機的速度近似勻速。同步脈沖的觸發(fā)選擇光柵電機的編碼器作為觸發(fā)。
圖7 XMCD線站光柵-平面鏡位置關(guān)系Fig.7 Relationship between the grating and mirror position in XMCD
光電流信號采集使用電流計6517B,6517B可以在設(shè)定觸發(fā)點數(shù)量的條件下,通過外觸發(fā)進行采集并將采集的數(shù)據(jù)保存在內(nèi)部寄存器中,當采集到數(shù)量上限時停止接收觸發(fā)信號。使用6517B的TRIGGER LINK觸發(fā)模式接收同步觸發(fā)模塊的TTL輸出信號,進行同步數(shù)據(jù)采集。
上位機運行掃描控制軟件,其飛掃的軟件流程如圖8所示。用戶在圖形界面上輸入和實驗相關(guān)的用戶信息、樣品信息以及掃描相關(guān)的起始能量、結(jié)束能量和能量間隔。根據(jù)掃描起始能量、結(jié)束能量以及能量間隔這3個參數(shù)計算得到對應(yīng)的掃描能量點數(shù)量,再通過式(1)和式(2)計算得到每個掃描能量點對應(yīng)的光柵和平面鏡位置,聯(lián)合這些位置信息即可得到對應(yīng)掃描能量范圍的光柵和平面鏡二維運動軌跡。
圖8 飛掃軟件流程圖Fig.8 Flowchart of the on-the-fly mode program
開始掃描后,RunEngine執(zhí)行飛掃Plan,在Kickoff過程完成對6517B電流計觸發(fā)模式、觸發(fā)點數(shù)的設(shè)置以及將掃描軌跡和觸發(fā)點參數(shù)分別發(fā)送給運動控制模塊和同步觸發(fā)模塊,其中觸發(fā)點參數(shù)以相對位置的形式存儲在同步觸發(fā)模塊的序列表模塊,在開始掃描前將其內(nèi)部位置參數(shù)設(shè)為0與序列表首行位置對齊,設(shè)置結(jié)束后會給控制器下發(fā)開始飛掃的命令,控制器按照寄存器中保存的掃描軌跡驅(qū)動兩臺伺服電機同步運動。之后進入Complete過程等待掃描的結(jié)束,掃描結(jié)束后收集6517B電流計記錄的數(shù)據(jù),在圖形界面上顯示掃描結(jié)果并將數(shù)據(jù)以HDF5的格式存入數(shù)據(jù)庫。
對于上位機下發(fā)的觸發(fā)點參數(shù),同步觸發(fā)模塊將其存儲到序列表模塊中,并在初始狀態(tài)指向序列表第一行。掃描過程中,同步運動控制模塊依據(jù)能量設(shè)置參數(shù)改變光柵、平面鏡的位置,同時編碼器將位置信號輸入到同步觸發(fā)模塊,同步觸發(fā)模塊解碼后得到電機當前位置,將當前位置與內(nèi)部序列表模塊生成的觸發(fā)位置進行比較,若滿足序列表當前行的預(yù)設(shè)條件則生成觸發(fā)信號,觸發(fā)6517B電流計記錄當前電流,同時序列表內(nèi)部指向下一行,等待到達下一個觸發(fā)位置再次觸發(fā),直到掃描結(jié)束。
首先是驗證飛掃系統(tǒng)實驗結(jié)果的正確性,即與傳統(tǒng)步進掃描結(jié)果相比的一致性。對Fe樣品在能量范圍為690~740 eV、能量分辨率為0.1 eV的條件下分別使用飛掃系統(tǒng)和步進掃描方式進行XAS(Xray Absorption Spectroscopy)實驗。實驗結(jié)果如圖9所示,橫軸為掃描能量范圍,縱軸為兩臺6517B采集電流結(jié)果相除后歸一化后的值。飛掃系統(tǒng)用時為1 min 50 s,獲得相同結(jié)果使用傳統(tǒng)的步進掃描方式需要花費25 min左右。
圖9 XAS實驗的一致性測試結(jié)果Fig.9 Results of consistency testing in XAS experiments
可以看出,兩次結(jié)果峰形一致、峰位置一致。以步進掃描結(jié)果為基準,依據(jù)式(3)計算平均絕對誤差和相關(guān)系數(shù)[24]。平均絕對誤差是兩組數(shù)據(jù)每個數(shù)據(jù)點誤差絕對值的平均值,結(jié)果越小說明兩條曲線一致性越好;相關(guān)系數(shù)是兩組數(shù)據(jù)的線性相關(guān)程度,越接近1則兩條曲線越相關(guān)即一致性越好。
其中:MAE是平均絕對誤差;r是相關(guān)系數(shù);y1、y2是步進掃描和飛掃實驗中6517B采集的電流值。
經(jīng)過計算,平均絕對誤差結(jié)果為0.01,相關(guān)系數(shù)為0.993,兩條曲線的最高峰半高寬均為3.40 eV,說明使用飛掃模式只需要花費步進掃描十幾分之一的時間就可以得到一致性很高的結(jié)果,實驗效率提高了十倍以上。
為了測量飛掃系統(tǒng)多次實驗結(jié)果的重復(fù)性即系統(tǒng)的穩(wěn)定性,本文對Co樣品在能量范圍275~315 eV,能量分辨率為0.1 eV,使用飛掃系統(tǒng)進行XAS實驗,以相同的運動速度采集了10組數(shù)據(jù)。為清晰展示,在原始數(shù)據(jù)上做了上下偏移,實驗結(jié)果如圖10所示。
圖10 XAS實驗的穩(wěn)定性測試結(jié)果Fig.10 Results of stability testing in XAS experiments
依據(jù)式(4)計算多條曲線的平均絕對誤差,與式(3)不同的是當有多條曲線時,先計算每條曲線與其他曲線之間的平均絕對誤差,然后將它們求平均得到多條曲線之間的平均絕對誤差,平均絕對誤差越接近0說明多條曲線的偏差越小即結(jié)果越穩(wěn)定。
其中:MAE是所有曲線的平均絕對誤差;MAEi是每一條曲線與其他曲線計算出的平均絕對誤差結(jié)果;n是曲線數(shù)量;m是數(shù)據(jù)數(shù)量。
10條曲線與其他曲線的平均絕對誤差計算結(jié)果如表1所示,最后計算10組數(shù)據(jù)的平均絕對誤差為1.44×10-3,非常接近0,說明在相同實驗條件下使用飛掃模式多次實驗結(jié)果重復(fù)性高,穩(wěn)定性好。
表1 每組數(shù)據(jù)的平均絕對誤差Table 1 Mean absolute error for each group
對Fe樣品改變不同的運動速度使用飛掃模式進行實驗,分別花費1 min 20 s、1 min 50 s、5 min 5 s在相同能量范圍、相同能量間隔完成三次XAS采譜,得到如圖11所示結(jié)果,三次采譜結(jié)果峰形一致且峰位置一致。依據(jù)式(4)計算三次結(jié)果的平均絕對誤差為1.5×10-3,接近于0,可知結(jié)果基本一致。因此,本文設(shè)計的飛掃系統(tǒng)進行能量掃描受速度影響很小具有通用性,可以根據(jù)不同實驗的要求,合理選擇飛掃的運行速度以達到最好的實驗效果。
圖11 XAS實驗不同掃描速度測試結(jié)果Fig.11 Results of different scanning speeds testing in XAS experiments
為解決合肥光源線站現(xiàn)有步進掃描速度慢、效率低的問題,本文設(shè)計開發(fā)了一種基于硬件觸發(fā)的飛掃系統(tǒng),基于Zynq 7020設(shè)計了硬件同步觸發(fā)模塊,并采用EtherCAT總線搭建了同步運動控制模塊,在EPICS架構(gòu)基礎(chǔ)上采用Bluesky開發(fā)了軟件控制模塊,并在合肥光源的軟X射線磁性圓二色實驗站上部署、測試了該系統(tǒng)。實驗結(jié)果表明,使用該系統(tǒng)進行XAS能量采譜,單次采譜時間相較于步進掃描模式的幾十分鐘量級縮短至分鐘量級并且能保證吸收譜結(jié)果一致,達到了預(yù)定的設(shè)計目標。本文設(shè)計的飛掃系統(tǒng)提高了掃描實驗的實驗效率和用戶體驗,一方面為未來合肥先進光源(Hefei Advanced Light Facility,HALF)線站相關(guān)系統(tǒng)的搭建、調(diào)試打下了基礎(chǔ),另一方面由于設(shè)計的硬件系統(tǒng)和使用的軟件框架具有良好的可拓展性,可為其他光源的實驗站建設(shè)提供參考。
作者貢獻聲明張?zhí)煺茇撠熡布_發(fā),系統(tǒng)測試和調(diào)試;孔安博負責軟件開發(fā);陳凱負責測試和實驗數(shù)據(jù)分析;陳留國負責統(tǒng)方案設(shè)計,論文的修改與指導(dǎo);劉功發(fā)負責論文審閱和修改。