楊 永
(中國科學院 等離子體物理研究所,合肥 230031)
電子回旋共振加熱(electron cyclotron resonance heating,ECRH)是可控核聚變反應的重要的加熱方法之一,具有耦合效率高、功率沉積局域性好、微波發射天線結構簡單、發射功率密度較高、易于控制回旋共振層等許多優點,能夠彌補傳統加熱方式加熱溫度有限的缺點,如中國環流器新一號(HL-1M) 裝置上研制的500 kW/50 ms的電子回旋共振加熱系統[1]。中國環流器二號A(HL-2A)裝置在一代的基礎上先后從2005年的2只500 kW回旋管共1 MW輸出功率逐步發展到2009年6只共3 MW輸出功率[2-3]。作為中國第一個超導托卡馬克HT-7[4]的升級版,EAST(experimental advanced superconducting tokamak)托卡馬克裝置上配備了4 MW長脈沖電子回旋加熱系統[5-7]。
回旋管作為整個ECRH系統的核心器件,它的控制需要遵循嚴格的要求,其中一個重要的原則是:加電時,應先加陰極高壓,再加陽極高壓;關斷時,先關陽極高壓,再關陰極高壓,即陽極高壓要在陰極高壓已經加載的情況下才能加載,不能單獨加載[8]。中央控制器作為直接控制回旋管的部件,為了保證回旋管可靠運行,以及不被各種意外情況損壞,其控制邏輯復雜,輸入輸出信號繁多,如果安裝調試中遇到異常狀況,難以定位異常發生的位置。如果沒有異常診斷功能,遇到異常時,需要使用示波器去再次捕獲異常,由于信號繁多、連線困難,而且有些異常出現的頻率較低,使得調試工作非常繁瑣,效率低下,嚴重拖延工作進展。因此設計一種實時在線的異常診斷邏輯勢在必行。
另外,配合計算機進行長期的異常數據記錄,通過分析異常的類型和出現頻率的變化,還可以評估ECRH系統中重要部件的運行狀態。ECRH系統正常運行時,也會出現一些異常,但是出現的頻率很低,隨著系統運行時間的增長,各部件會逐漸老化,這些異常出現頻率可能會增加或者減少,通過分析這些異常發生的頻率,可以間接地監控各部件運行的狀態。
傳統的ECRH系統主要采用可編程邏輯控制器(programmable logic controller,PLC)來控制回旋管高壓電源的開關。但是PLC的控制響應速度不高,一般為毫秒量級,且無法編程實現較為復雜的邏輯,大大限制了ECRH系統回旋管控制的性能提升。FPGA(field programmable gate array)作為PAL、GAL等可編程器件的進一步發展的產物,具有速度高、邏輯資源豐富,幾乎能夠編程實現任意復雜邏輯。為了提高控制響應速度、控制時間精度、以及復雜度,EAST托卡馬克裝置的ECRH系統采用FPGA芯片作為回旋管的主控芯片。
本文主要介紹了ECRH系統中央控制器的控制原理以及異常診斷的邏輯設計,并且進行了仿真驗證。第二小節介紹了中央控制器正常的回旋管控制流程。第三小節詳述了可能出現的異常種類及其原因,然后設計了對應的診斷邏輯。第四小節對這些診斷邏輯進行了時序仿真。第五小節對全文進行了總結。
中央控制器的主要作用是根據EAST裝置的總控發來的觸發信號和等離子體電流信號來控制回旋管陰極高壓電源和陽極高壓電源的開關。由于要嚴格保證陽極高壓不被單獨加載在回旋管上,因此需要實時檢測陰極高壓源的輸出狀況,一旦檢測到異常就先迅速關閉陽極電源。中央控制器的輸入輸出信號如圖1所示。圖中只畫出了中央控制器與其他部件或系統之間的信號連接關系,各部件或系統之間的信號連線沒有在該圖中表示,比如PLC也會監視陰極高壓電源的輸出情況等。與中央控制器相連的有EAST總控、陰極高壓單元、陽極高壓電源、PLC監視器、ECRH總控見算計、自檢計算機以及各種保護單元。

圖1 中央控制器輸入輸出信號
信號TriggerIn_-60、TriggerIn_0以及Ip是EAST總控發來的信號,TriggerIn_-60為負60秒觸發脈沖信號,用于通知ECRH系統作好一次放電實驗的準備,因為ECRH系統中有些部件(比如陰極高壓電源)從啟動到就緒需要比較長的時間。TriggerIn_0為0秒觸發脈沖信號用于通知中央控制器可以立即打開回旋管給EAST裝置輸送高功率微波。Ip為EAST總控發送來的等離子電流信號,當回旋管輸出微波后就會接收到Ip信號有效,等Ip信號再次變為無效時,表示一次放電過程結束,應立即關閉回旋管。
NegHVPre_-60為陰極高壓電源負60秒準備信號,DAQCtrl_OnOff為數據采集控制信號,與NegHVPre_-60時刻保持同步。NegHV_OnOff為陰極高壓電源的輸出開關信號,NegHV_Ready為其準備就緒信號,NegHV_OutputState為其輸出狀態信號,NegHV_Voltage為其輸出電壓信號,該信號用電平高低來表示輸出電壓是否達到要求。PosHV_OnOff為陽極高壓電源的輸出開關信號。PLC_Ready為PLC準備就緒信號,Wave_OutputState為實時波輸出狀態信號,其電平的高低表示回旋管有無波輸出,由于微波功率檢測器輸出的模擬信號噪聲較大,可能會造成Wave_OutputState信號有脈沖干擾,因此需要對該信號進行兩次或多次確認才能比較可靠地判斷波輸出的真實狀態。
Wave_OutputState_Down為發生波輸出狀態異常時的診斷輸出信號,IpNull為發生無等離子電流異常時的診斷輸出信號,NegHV_Down為發生陰極高壓輸出狀態異常時的診斷輸出信號,PLC_Ready_Down為發生PLC就緒狀態異常時的診斷輸出信號,NegHV_Ready_Down為發生陰極高壓就緒狀態異常時的診斷輸出信號。
除了上述信號之外,還有各種保護和急停信號,統稱為Protection Stop Signals,當這些信號中的任意一個有效時,中央控制器會立即關閉回旋管,并且輸出對應信號的診斷輸出信號,這里統稱為Protection Signals.
回旋管除了需要陰極高壓電源和陽極高壓電源外,還需要配套超導磁體及其電源、燈絲電源、鈦泵電源等附屬部件,因為這些部件的監控要求速度相對不高,由其他PLC等控制器來監控,當出現異常時,會發送保護停止信號(protection stop signals)給中央控制器,來使其關閉陰極高壓電源和陽極高壓電源。
中央控制器的控制流程可以用圖2所示的狀態圖來表示:
1)上電初始化:系統上電之后100 ms內,復位信號有效,此時處于“空閑狀態”,系統進行初始化,FPGA將所有輸出信號置為無效狀態(NegHVPre_-60、NegHV_Onoff、PosHV_Onoff、DAQCtrl_OnOff、IpNull為低電平,Wave_OutputState_Down、NegHV_Down、PLC_Ready_Down、NegHV_Ready_Down、Protection Signals為高電平);
2)當PLC就緒信號PLC_Ready為高電平時,進入“準備狀態”;此時如果-60 s觸發脈沖信號TriggerIn_-60有效,進入“負60 s觸發狀態”,FPGA將負60 s陰極高壓準備信號NegHVPre_-60和DAQCtrl_OnOff置為高電平,以使陰極高壓電源開始準備,各信號數據開始被采集;當陰極高壓電源準備好后,陰極高壓準備好狀態信號NegHV_Ready變為高電平;
3)處于“負60 s觸發狀態”時,當NegHV_Ready信號變為高電平后,如果0 s觸發脈沖信號TriggerIn_0有效,FPGA將陰極高壓啟停信號NegHV_OnOff置為高電平,給回旋管加載陰極高壓電源,程序進入“等待陰極高壓輸出狀態”;
4)等待1 ms后,程序自動進入“檢測陰極高壓輸出狀態”,檢測信號NegHV_OutputState是否正常;如果NegHV_OutputState異常(表示陰極高壓電源沒有正常加載),進入“關閉狀態”;如果NegHV_OutputState正常(表示陰極高壓電源已正常加載),程序進入“等待陽極高壓輸出狀態”,50 ms后自動進入“等待波輸出狀態”,并將陽極高壓啟停信號PosHV_OnOff置為高電平,給回旋管加載陽極高壓電源;
5)當陽極高壓啟停信號PosHV_OnOff發出后,程序等待1 ms,然后進入“檢測波輸出狀態”,檢測信號Wave_OutputState是否正常;如果Wave_OutputState檢測為異常,程序進入“再次等待波輸出狀態”,等待1 ms,然后進入“再次檢測波輸出狀態”,再次檢測信號Wave_OutputState是否正常,如果波輸出狀態信號再次檢測不正常,進入“關閉狀態”;如果Wave_OutputState檢測(或再次檢測)為正常,則進入“等待等離子電流狀態”,等待1 ms后,進入“檢查等離子電流狀態”,檢測信號Ip是否正常;
6)如果信號Ip正常,程序進入“等待關閉狀態”;如果異常,則直接進入“關閉狀態”;
7)在“等待關閉狀態”中,程序等待信號Ip變為無效(表示一個放電過程結束),然后正常進入“關閉狀態”;如果此時檢測到波輸出異常,程序會進入“再次等待波輸出狀態”,等待1 ms后,進入“再次檢測波輸出狀態”,如果檢測正常,會直接返回“等待關閉狀態”;否則會進入“關閉狀態”。程序從“等待關閉狀態”進入到“再次等待波輸出狀態”以及“再次檢測波輸出狀態”時,當Ip信號變為無效時,也判定為放電過程正常結束,立即進入“關閉狀態”;
8)當程序進入“關閉狀態”后,會將PosHV_Onoff置為低電平,以關閉陽極高壓電源,等待2 ms后進入“關閉狀態2”;在“關閉狀態2”中,將NegHV_Onoff置為低電平,以關閉陰極高壓電源,等待200 ns后進入“關閉狀態3”;在“關閉狀態3”中,將NegHVPre_-60和DAQCtrl_OnOff置為低電平;最后返回“空閑狀態”。

圖2 FPGA控制部分狀態機
除了上一節所述的正常的控制邏輯外,在控制回旋管運行時,還會出現各種異常的情況,中央控制器必須及時地診斷和處理這些異常狀況,才能起到保護回旋管的作用。異常診斷邏輯是根據程序跳轉到關閉狀態前的狀態以及各輸入信號的電平高低來判斷是否發生了異常以及診斷異常發生的原因。當主控制邏輯處于空閑、就緒或者關閉狀態時,輸入狀態信號異?;蛘弑Wo急停信號有效不會被判定為一個異常情況。只有在一次放電過程中,輸入狀態信號異常才有可能產生一個異常情況。異常主要可以分為以下六種情況:
1)PLC就緒狀態異常:指當程序處于狀態2~12時(即處于一個放電過程中),PLC_Ready信號突然變為低電平,表示PLC出現了異常狀況,此時回旋管控制邏輯從狀態2~12中的某一個狀態跳轉到“關閉狀態”,異常診斷邏輯監測這一狀況后,將信號PLC_Ready_Down置為低電平,并保持20 s后再拉高;
2)陰極高壓就緒狀態異常:指當0 s觸發脈沖信號TriggerIn_0有效后至放電過程結束進入“關閉狀態”前,NegHV_Ready信號突然變為低電平,表示陰極高壓電源沒有就緒。此時回旋管控制邏輯從狀態2~12中的某一個狀態跳轉到“關閉狀態”,異常診斷邏輯監測這一狀況后,檢查跳轉前的狀態是否是“負60 s觸發狀態”,如果是,則還需檢查TriggerIn_0信號,只有當TriggerIn_0信號同時為高時,才表示發生了陰極高壓就緒狀態異常;如果跳轉前的狀態不是“負60 s觸發狀態”,NegHV_Ready信號為低就直接表示發生了陰極高壓就緒狀態異常,然后異常診斷邏輯將信號NegHV_Ready_Down置為低電平,并保持20 s后再拉高;
3)陰極高壓輸出狀態異常:指當程序處于狀態4~12時,NegHV_OutputState信號或NegHV_Voltage信號為低電平,表示陰極高壓輸出不正常,此時程序從狀態4~12中的某一個狀態跳轉到“關閉狀態”,異常診斷邏輯監測這一狀況后,將信號NegHV_Down置為低電平,并保持20 s后再拉高;
4)波輸出狀態異常:由于回旋管波輸出信號噪聲比較大,為了避免誤判,程序中只有連續兩次檢測到波輸出信號Wave_OutputState為低時才判定為異常狀況,即當程序從“再次檢查波輸出狀態”跳轉到“關閉狀態”,且波輸出信號Wave_OutputState為低時,才表示發生了波輸出狀態異常。異常診斷邏輯監測這一狀況后,將信號Wave_OutputState_Down置為低電平,并保持20 s后再拉高;
5)無等離子電流異常:當程序從“檢查等離子電流狀態”跳轉到“關閉狀態”,且Ip信號為低時,表示發生了無等離子電流異常。異常診斷邏輯監測這一狀況后,將信號IpNull置為高電平,并保持5 s后再拉低;
6)保護急停信號有效:指當程序處于狀態2~12時(即處于一個放電過程中),保護停止類信號中的任意一個突然變為高電平,表示ECRH控制系統給中央控制器發送了停止命令,此時回旋管控制邏輯從狀態2~12中的某一個狀態跳轉到“關閉狀態”,異常診斷邏輯監測這一狀況后,將對應停止類信號的異常輸出信號置為低電平,并保持20 s后再拉高。
本設計的開發采用Quartus II軟件,FPGA芯片選用Cyclone II系列[9]的工業級芯片,上述2、3兩小節的邏輯采用VerilogHDL進行編寫。FPGA系統時鐘采用外部的高精度有源晶振產生的頻率為29.2412 MHz的時鐘信號,不適用內部PLL。由于系統中各輸入信號與系統時鐘是異步的,如果直接使用會產生亞穩態。因此為了避免時序混亂,對所有輸入信號用系統時鐘進行了兩步采樣寄存,雖然理論上仍然可能進入亞穩態,但是其概率已經非常小[10-11]。
為了驗證設計的正確性,將程序在各種可能的輸入情況下進行了仿真。仿真時,為了減少仿真時間以及便以觀察波形,對涉及的各個時間間隔進行了適當的縮短。
圖3為正常運行的仿真時序圖,仿真開始時,PLC_Ready信號有效,程序應處于準備狀態;隨著TriggerIn_neg_60信號脈沖的到來,一次放電過程開始,首先將陰極高壓電源負60秒準備信號(NegHVPre_neg_60)和數據采集控制信號(DAQCtrl_OnOff)置高,啟動陰極高壓電源,并且開始數據采集;一段時間后,陰極高壓電源準備好信號(NegHV_Ready)變高,表示陰極高壓電源就緒;然后0秒觸發脈沖信號(TriggerIn_0)來了一個脈沖,程序立即將陰極高壓電源的輸出開關信號(NegHV_OnOff)置高,以給回旋管陰極加載高壓,然后陰極高壓輸出狀態信號(NegHV_OutputState)和陰極高壓輸出電壓信號(NegHV_Voltage)均變高,表示陰極高壓輸出正常;檢測到陰極高壓輸出正常后將陽極高壓電源的輸出開關信號(PosHV_OnOff)置高,給回旋管陽極加載高壓;延遲一小段時間后檢測波輸出是否正常,圖3中Wave_OutputState為高表示波輸出正常;然后進入等離子電流信號(Ip_D)檢測,檢測到Ip_D正常后一直等待Ip_D信號變低;先將陽極高壓電源的輸出開關信號(PosHV_OnOff)置低,再將陰極高壓電源的輸出開關信號(NegHV_OnOff)置低,最后將將陰極高壓電源負60秒準備信號(NegHVPre_neg_60)和數據采集控制信號(DAQCtrl_OnOff)置低;一次正常的放電過程結束。

圖3 正常運行仿真時序圖
圖4為發生無等離子電流異常時的仿真時序圖。直到波輸出狀態信號Wave_OutputState變高前,與正常運行時相同;但是由于在Wave_OutputState變高后的很長一段時間內等離子電流信號Ip_D均保持為低,此時程序應已進入“檢查等離子電流狀態”,然后主控制邏輯檢測到Ip_D為低,進入“關閉狀態”,依次將陽極高壓電源的輸出開關信號(PosHV_OnOff)、陰極高壓電源的輸出開關信號(NegHV_OnOff)、以及陰極高壓電源負60秒準備信號(NegHVPre_neg_60)和數據采集控制信號(DAQCtrl_OnOff)置低。異常診斷邏輯檢測到主控制邏輯從“檢查等離子電流狀態”跳轉到“關閉狀態”,且此時Ip_D為低,因此診斷為發生了無等離子電流異常,將IpNull信號拉高一段時間。

圖4 無等離子電流異常仿真時序圖
圖5為發生波輸出狀態異常時的仿真時序圖。當陽極高壓電源的輸出開關信號(PosHV_OnOff)置高后,很長一段時間內波輸出狀態信號Wave_OutputState保持為低,因此導致主控制邏輯連續兩次檢測波輸出信號為低,因此直接進入了“關閉狀態”,依次將PosHV_OnOff、NegHV_OnOff以及NegHVPre_neg_60和DAQCtrl_OnOff置低。異常診斷邏輯檢測到主控制邏輯從“再次檢測波輸出狀態”跳轉到“關閉狀態”,且此時波輸出狀態信號Wave_OutputState為低,因此診斷為發生了波輸出狀態異常,將信號Wave_OutputState_Down拉低一段時間。

圖5 波輸出狀態異常仿真時序圖
圖6為發生陰極高壓就緒狀態異常時的仿真時序圖。當0 s觸發脈沖信號TriggerIn_0有效時,檢測到陰極高壓電源準備信號(NegHV_Ready)為低,主控制邏輯進入進入“關閉狀態”。異常診斷邏輯檢測到這一情況后,將信號NegHV_Ready_Down拉低一段時間。

圖6 陰極高壓就緒狀態異常仿真時序圖
本文主要闡述了ECRH系統中央控制器異常診斷的邏輯設計。針對回旋管中央控制器發生故障時調試工作繁瑣、難以查找異常發生的原因等問題,設計了一套實時在線的異常檢測和診斷邏輯,并且在Altera Cyclone II系列FPGA中編程實現了該異常診斷邏輯與回旋管控制邏輯,最后對FPGA程序進行了時序仿真,驗證了設計的正確性。