,, , ,
(中國科學(xué)院合肥物質(zhì)科學(xué)研究院 等離子體物理研究所,合肥 230031)
超導(dǎo)托卡馬克核聚變實驗裝置(experimental advanced super-conducting tokamak,EAST)是國家“九五”重大科學(xué)工程。極向場電源系統(tǒng)是托卡馬克裝置的核心子系統(tǒng)之一,由12組獨(dú)立可調(diào)的晶閘管相控變壓器向14組相互耦合的極向場超導(dǎo)線圈供電[1],對于裝置運(yùn)行的性能與安全,物理實驗的成敗與效率,有著至關(guān)重要的作用。
隨著極向場電源控制系統(tǒng)硬件的升級,各部分軟件也進(jìn)行了全面重新設(shè)計。如圖1所示為升級后的極向場電源控制系統(tǒng)結(jié)構(gòu),包括核心控制、數(shù)據(jù)采集、設(shè)備監(jiān)控、同步控制4層。核心控制實現(xiàn)變流器實時控制及實時保護(hù),數(shù)據(jù)采集包括分布式采集與數(shù)據(jù)庫,設(shè)備監(jiān)控包括主控制器、監(jiān)控系統(tǒng)、本地控制等,同步控制實現(xiàn)各控制器對時。
本地控制器程序運(yùn)行于QNX系統(tǒng),原有的一臺本地控制程序控制一套電源[2-3],升級后控制兩套電源。升級后的本地控制器軟件采用主從架構(gòu),更換模擬采集板卡、數(shù)字輸入輸出板卡等,同時重新設(shè)計其驅(qū)動與應(yīng)用程序,對整流器移相控制由模擬量輸出控制改為數(shù)字移相輸出控制,改變與現(xiàn)場總線的通信方式及數(shù)據(jù)處理方式,對現(xiàn)場總線通信性能進(jìn)行測試并優(yōu)化。設(shè)計有序的故障檢測邏輯,增加狀態(tài)機(jī)實現(xiàn)系統(tǒng)狀態(tài)的有序轉(zhuǎn)換。
圖1 EAST極向場電源控制系統(tǒng)
如圖2所示為一臺本地控制器程序框圖,包括主程序與從程序,主程序為一個管理程序,從程序為兩個控制程序。管理程序根據(jù)接收到的來自主控制器的配置信息,啟動或者停止控制程序,二者通過共享內(nèi)存進(jìn)行數(shù)據(jù)交互。管理程序包括多個進(jìn)程,進(jìn)程間通過共享內(nèi)存實現(xiàn)數(shù)據(jù)讀寫操作,脈沖式消息傳遞觸發(fā)進(jìn)程的執(zhí)行。管理程序通過現(xiàn)場總線實現(xiàn)對設(shè)備狀態(tài)的搜集與開關(guān)控制,通過數(shù)字輸入輸出板卡cPCI-7432實現(xiàn)對晶閘管開關(guān)與旁通的控制,通過模擬信號采集板卡PXI-6220采集電流信號,通過反射內(nèi)存網(wǎng)絡(luò)與主控制器進(jìn)行數(shù)據(jù)交互,同時管理程序?qū)崿F(xiàn)系統(tǒng)邏輯處理、故障檢測與狀態(tài)轉(zhuǎn)換??刂瞥绦蛲ㄟ^alpha板卡實現(xiàn)對整流器的相位控制,根據(jù)當(dāng)前運(yùn)行模式下采集的電流判斷整流器是否正常運(yùn)行,將狀態(tài)上報給管理程序。
圖2 電源控制器程序框圖
QNX系統(tǒng)進(jìn)程間數(shù)據(jù)主要交互形式包括消息傳遞、信號、消息隊列、共享內(nèi)存、管道等。共享內(nèi)存是被多個進(jìn)程共享的一部分物理內(nèi)存,是進(jìn)程間共享數(shù)據(jù)高性能、最快速的方法,一個進(jìn)程向共享內(nèi)存區(qū)域?qū)懭霐?shù)據(jù),共享該內(nèi)存區(qū)的其他所有進(jìn)程都可以立即看到其中的內(nèi)容,即對共享內(nèi)存的讀寫是非同步的。本地控制器需要實現(xiàn)實時控制,要求各個進(jìn)程間能夠進(jìn)行快速的數(shù)據(jù)交互,各個進(jìn)程只是對部分變量進(jìn)行操作,所以本文選擇共享內(nèi)存作為進(jìn)程間數(shù)據(jù)交互的方式。管理程序中各個進(jìn)程之間的共享內(nèi)存操作如圖3(a)所示,管理程序?qū)蚕韮?nèi)存訪問的頻率和占用互斥的時間較少,故管理程序內(nèi)部共享內(nèi)存為一塊,同時具備讀寫的權(quán)限。管理程序與控制程序之間的共享內(nèi)存操作如圖3(b)所示,二者之間的訪問頻率較高,為了避免互斥等待時間過長,設(shè)置雙通道單工的共享內(nèi)存區(qū),即一片共享內(nèi)存區(qū)僅具備單向的寫能力和另一方僅具備單向的讀能力,以降低互斥的幾率提高共享內(nèi)存數(shù)據(jù)的周轉(zhuǎn)速度。
圖3 共享內(nèi)存操作
管理程序包括多個進(jìn)程,進(jìn)程執(zhí)行邏輯是個關(guān)鍵問題,本文在定時器進(jìn)程中定義定時器,定時到后向其它進(jìn)程發(fā)送脈沖觸發(fā)信號,其它進(jìn)程阻塞式等待接收脈沖。消息傳遞(Message passing)是進(jìn)程間通信的一種方式,以客戶/服務(wù)器模式實現(xiàn)。如圖4所示為定時器進(jìn)程(客戶端)與模擬采集進(jìn)程(服務(wù)端)之間的脈沖消息傳遞過程。定時器自身定時250 us,模擬采集進(jìn)程觸發(fā)周期1 ms。脈沖式消息傳遞過程如下:
1)客戶端與服務(wù)端建立消息傳遞通道;
2)客戶端向服務(wù)端發(fā)送脈沖信號,不等待服務(wù)端回復(fù),即客戶端不阻塞;
3)服務(wù)端阻塞式等待接收脈沖信號,接收到脈沖后解除阻塞。
圖4 進(jìn)程觸發(fā)邏輯
對于接收脈沖的服務(wù)端,使用動態(tài)內(nèi)存池對象將脈沖信號進(jìn)行排隊。如果脈沖產(chǎn)生速度大于服務(wù)端處理速度,那么內(nèi)存占用過多導(dǎo)致沒有空間留給后續(xù)脈沖,內(nèi)核不再響應(yīng)脈沖請求,從而導(dǎo)致錯誤。所以服務(wù)端執(zhí)行周期的選擇至關(guān)重要。根據(jù)極向場電源運(yùn)行特性,整流器運(yùn)行周期為1 ms,所以進(jìn)程執(zhí)行周期盡量不大于1 ms?,F(xiàn)場總線進(jìn)程1 ms讀寫周期時丟包嚴(yán)重且讀寫的是慢信號,根據(jù)測試選擇4 ms周期。如圖5所示為各進(jìn)程執(zhí)行時序圖?,F(xiàn)場總線在4 ms周期內(nèi)可以正確的讀寫數(shù)據(jù),其他進(jìn)程在1 ms周期內(nèi)都可以正確且長期穩(wěn)定的執(zhí)行,滿足系統(tǒng)要求。
圖5 管理程序各進(jìn)程執(zhí)行時序
本地控制器與主控制器通過反射內(nèi)存網(wǎng)絡(luò)實現(xiàn)控制、狀態(tài)與數(shù)據(jù)交互。接收主控制器的控制參數(shù),實現(xiàn)對開關(guān)與整流器的控制,同時將信號狀態(tài)、故障代碼等上傳給主控制器,根據(jù)主控制發(fā)送的狀態(tài)請求,控制設(shè)備進(jìn)入不同的運(yùn)行階段,從而實現(xiàn)系統(tǒng)狀態(tài)轉(zhuǎn)換。反射內(nèi)存(RFM)網(wǎng)絡(luò)是一種基于光纖的超高速共享內(nèi)存實時網(wǎng)絡(luò),由反射內(nèi)存板卡通過光纖或同軸電纜等傳輸介質(zhì)連接而成,主要有環(huán)形連接和星型連接兩種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。本文采用環(huán)型網(wǎng)絡(luò)連接,通過光纖將各控制器連接到光纖交換機(jī)。使用反射內(nèi)存卡PMC-5565,其使用方式是簡單的讀寫內(nèi)存,讀寫雙方設(shè)置同一塊內(nèi)存區(qū)域,一方可隨時寫入數(shù)據(jù),另一方可隨時讀取數(shù)據(jù)。所以反射內(nèi)存程序設(shè)計中關(guān)鍵是物理內(nèi)存地址的映射,讀寫雙方保持地址一致。如下圖所示為內(nèi)存區(qū)域設(shè)置。
圖6 本地控制器反射內(nèi)存起始地址設(shè)置
反射內(nèi)存卡不需要網(wǎng)絡(luò)協(xié)議,直接硬件操作,與以太網(wǎng)等傳統(tǒng)的網(wǎng)絡(luò)相比具有更低的網(wǎng)絡(luò)傳輸延時、更快的傳輸速度[4]。如圖7所示為讀寫數(shù)據(jù)延時測試。CH2為主控制器端,CH3為本地控制器端。圖7(a)主控制器向本地控制器寫入128字節(jié)的數(shù)據(jù),平均延時時間為137 us,圖7(b)本地控制器向主控制器寫入88字節(jié)的數(shù)據(jù),平均延時時間為69.6 us。
圖7 反射內(nèi)存讀寫數(shù)據(jù)延時測試
控制程序?qū)崿F(xiàn)對整流器的運(yùn)行控制與狀態(tài)檢測。整流器運(yùn)行模式包括單橋運(yùn)行、正橋并聯(lián)運(yùn)行、反橋并聯(lián)運(yùn)行、環(huán)流運(yùn)行與四象限運(yùn)行。如圖8所示為整流橋運(yùn)行控制與狀態(tài)檢測基本框圖。根據(jù)預(yù)設(shè)電壓、運(yùn)行模式以及讀取的整流器電流,打開對應(yīng)橋的脈沖封鎖,計算其移相角度,輸出到alpha板卡,從而實現(xiàn)對整流器的相位控制。通過模擬采集板卡PX-6220讀取的電流還用于整流器運(yùn)行狀態(tài)判斷,包括過流、環(huán)流、差值狀態(tài)等,控制程序?qū)⒄髌鳡顟B(tài)通過共享內(nèi)存?zhèn)鬏斀o管理程序,管理程序?qū)⑵渖蠄蠼o主控制器。以四象限運(yùn)行模式為例,該運(yùn)行模式根據(jù)采集的總電流idc來判斷整流器當(dāng)前應(yīng)該處于哪個運(yùn)行模式,可能經(jīng)歷環(huán)流階段、正向單橋階段、正橋并聯(lián)階段、反向單橋階段、反橋并聯(lián)階段。整流器電流處于不同的范圍,對來自主控制器的預(yù)設(shè)電壓經(jīng)過不同的分析計算、邏輯比較等處理,獲得移相角,該移相角通過數(shù)字alpha板卡輸出實現(xiàn)對整流器的相位控制。
圖8 整流器運(yùn)行控制與狀態(tài)檢測
圖9 現(xiàn)場總線對設(shè)備的控制與狀態(tài)獲取
本文現(xiàn)場總線使用Wago模塊[5],現(xiàn)場總線控制器通過電口交換機(jī)與本地控制器網(wǎng)絡(luò)連接,采用Modbus UDP通信協(xié)議,單播通信方式。現(xiàn)場總線進(jìn)程負(fù)責(zé)采集現(xiàn)場設(shè)備數(shù)字信號與模擬信號、失超保護(hù)時打開快速開關(guān)以及控制晶閘管電容充放電開關(guān)。如圖9所示為現(xiàn)場總線進(jìn)程實現(xiàn)框圖?,F(xiàn)場總線進(jìn)程包括主線程與接收線程。主線程創(chuàng)建與定時器進(jìn)程的消息傳遞通道,定時器進(jìn)程每4 ms向現(xiàn)場總線進(jìn)程發(fā)送定時到脈沖。主線程接收到定時脈沖后向現(xiàn)場總線控制器發(fā)送數(shù)據(jù)請求信號,并發(fā)送開關(guān)控制信號。接收線程阻塞式等待接收數(shù)據(jù),接收到數(shù)據(jù)后,對數(shù)據(jù)包進(jìn)行解析,根據(jù)解析出的對方IP判斷數(shù)據(jù)來自哪個設(shè)備,從而將信號賦值給對應(yīng)設(shè)備的變量?,F(xiàn)場總線通信信息幀包括信息頭與信息內(nèi)容,信息頭中最重要的是功能代碼,信息內(nèi)容包括數(shù)據(jù)個數(shù)(字節(jié)數(shù)或者位數(shù))與實際數(shù)據(jù)。
圖10 現(xiàn)場總線讀取數(shù)字信號信息楨設(shè)置及返回數(shù)據(jù)包
圖12 本地控制器故障檢測
如圖10(a)所示為讀數(shù)字信號時的Modbus請求信息幀,圖10(b)為現(xiàn)場總線控制器返回的數(shù)字信號信息幀。讀數(shù)字信號功能代碼為0x01,同時需要在數(shù)據(jù)區(qū)填寫需要讀取的數(shù)字信號個數(shù)(Bit count)?,F(xiàn)場總線返回的頭信息包含了功能代碼,以供判斷返回的是模擬信號還是數(shù)字信號,返回的字節(jié)個數(shù)為0x01,數(shù)據(jù)為0x75,本地控制器管理程序取出一個字節(jié)的數(shù)據(jù)buffer[9],并逐位賦給對應(yīng)變量即可。若返回數(shù)據(jù)不止一個字節(jié),則依次向后遞推,即buffer[10]、buffer[11]等。
如圖11所示為現(xiàn)場總線收發(fā)延時測試,即向現(xiàn)場總線寫入數(shù)據(jù),然后阻塞式等待接收數(shù)據(jù),收到回復(fù)數(shù)據(jù)與發(fā)送數(shù)據(jù)請求的時間差值記為延時。本次測試收發(fā)延時平均值為471 us,最大延時超過1 ms。丟包測試,采用4 ms周期向現(xiàn)場總線控制器發(fā)送讀數(shù)字信號請求,接收線程阻塞式等待接收數(shù)據(jù),測試程序在4 ms內(nèi)檢測是否收到數(shù)據(jù)包,沒有收到則為丟包。多次測試的最大丟包率為3/19756987(0.15*10-6)。
圖11 現(xiàn)場總線收發(fā)延時測試
實現(xiàn)對設(shè)備的實時監(jiān)控與保護(hù),有效的故障檢測必不可少。本地控制器故障檢測原理如圖12所示。故障檢測分為4個級別,信號級、設(shè)備級、程序級與系統(tǒng)級。信號級是信號相關(guān)的故障,通過現(xiàn)場總線讀取的信號,每個信號都可能導(dǎo)致對應(yīng)故障位置位或者清零。設(shè)備級是設(shè)備相關(guān)的故障,每個設(shè)備都會有n個不同的信號,任意一個信號狀態(tài)的異常都會導(dǎo)致設(shè)備故障。程序級包括管理程序與控制程序故障檢測,管理程序管理的設(shè)備包括整流器、晶閘管、隔離開關(guān)、失超保護(hù)系統(tǒng)、旁通、電抗器等,任何一個設(shè)備的故障都會導(dǎo)致管理程序故障,控制程序管理整流器運(yùn)行,整流器運(yùn)行相關(guān)的任何故障都會導(dǎo)致控制程序故障。系統(tǒng)級是指本地控制器故障,管理程序或控制程序故障會導(dǎo)致其故障。任何故障將會使系統(tǒng)進(jìn)入故障態(tài),阻止系統(tǒng)狀態(tài)轉(zhuǎn)換,從而實現(xiàn)對設(shè)備的保護(hù)。
該程序已在EAST多輪實驗中進(jìn)行測試,如圖13所示,為電源PS8運(yùn)行時的典型電壓電流波形,運(yùn)行模式為四象限運(yùn)行,關(guān)斷模式。圖中的4個波形分別為參考電壓REFV8、橋電流PS8IDCCU1C1、關(guān)斷電阻電壓PS8VDCSNU以及總電流PS8IDC1。
圖13 典型電壓電流波形
升級后的EAST極向場電源本地控制器程序采用主從軟件架構(gòu),只有在實驗過程中控制程序才會啟動,有效的實現(xiàn)了對整流器的控制與保護(hù),同時實現(xiàn)了對現(xiàn)場設(shè)備的實時狀態(tài)檢測、設(shè)備保護(hù)、開關(guān)遠(yuǎn)程控制等,性能穩(wěn)定,配合完成了EAST 2015~2017年所有的放電實驗,最長放電長度102 s。
[1]Gao G,Huang L,Tang L,et al. Upgrade of converter unit of EAST poloidal field power supply[A].Fusion Engineering and Design (SOFE),2011 IEEE/NPSS 24th Symposium on IEEE[C].2011:1-5.
[2]陳海春,傅 鵬,吳 勇. 基于QNX的實時電源控制系統(tǒng)的設(shè)計[J]. 計算機(jī)測量與控制,2004,12(5):431-434.
[3]何詩英,傅 鵬,楊亞龍. 基于QNX的EAST極向場電源現(xiàn)場層實時控制的設(shè)計與實現(xiàn)[J]. 化工自動化及儀表,2011:44-47.
[4]鄭 銳,傅 鵬,何詩英. 反射內(nèi)存網(wǎng)在EAST極向場電源控制系統(tǒng)中的實現(xiàn)[J]. 化工自動化及儀表,2009,36(3):64-66.
[5]郭 威,孟憲偉,王曉輝. WAGO750模塊與PC機(jī)之間的通訊[J]. 儀器儀表學(xué)報,2005,26(8):511-515.