劉小軍,常建軍,安 石,顧可偉
(中國科學(xué)院 近代物理研究所,甘肅 蘭州 730000)
在蘭州重離子研究裝置(HIRFL)中,為了實現(xiàn)分離扇回旋加速器(SSC)的直線注入,以提高離子源的注入效率,研發(fā)了直線加速器(Linac),目前射頻四極場(RFQ)已經(jīng)出束,下一步工作正在進(jìn)行中。在SSC-Linac調(diào)束過程中,真空度是束流環(huán)境的重要參考,及時為調(diào)束人員提供可靠的真空度非常必要。
NI公司生產(chǎn)的CompactRIO 不僅體積較小,且堅固耐用,有很好的抗干擾能力,特別適合在環(huán)境惡劣的現(xiàn)場使用,其搭載的Vxworks系統(tǒng)使得編程更加靈活,開發(fā)周期較短。
本工作研究采用CompactRIO 9022 控制器、NI 9114 機(jī) 箱 及NI 9870RS232 串 口 模 塊來讀取SSC-Linac離子源及束運線真空度。
SSC-Linac離子源真空計均采用INFICON 公司的TPG300,每臺真空計共有4路壓力測量通道(A1、A2、B1、B2),與上位機(jī)通過RS232串行接口進(jìn)行通信,指令格式列于表1。
表1 真空計指令格式Table 1 Format of vacuum gauge instruction
表1中:xx表示壓力測量通道,發(fā)送該指令后將測量該通道的壓力,并返回“0000”作為確認(rèn)指令,再次發(fā)送詢問指令“〈ENQ〉”時,則返回測量通道的狀態(tài)信息與壓力;“,”之前的x表示測量通道的6種狀態(tài),當(dāng)x 為0時表示測量數(shù)據(jù)正常,為1時表示測量值在變化,為2時表示測量值超出傳感器測量范圍,為3時表示測量回路錯誤,為4時表示測量回路關(guān)閉,為5時表示沒有發(fā)現(xiàn)硬件;“,”之后是用科學(xué)計數(shù)法表示的壓力[1]。以測量B1 通道的壓力為例,首先發(fā)送PB1,并以回車符結(jié)尾,在收到確認(rèn)信息后再發(fā)送ASCII字符“〈ENQ〉”或十六進(jìn)制數(shù)“05”,返回“1,1.6E-3”,說明此時的壓力是在變化中,當(dāng)前壓力為1.6×10-3,單位可在真空計前面板手動預(yù)先設(shè)置完成。
硬件系統(tǒng)采用NI公司生產(chǎn)的CompactRIO,它是一種小巧而堅固的工業(yè)化控制和采集系統(tǒng),采用可重新配置I/O(RIO)FPGA 技術(shù)實現(xiàn)超高性能和可自定義功能。CompactRIO 包含一個實時控制器與可重新配置的FPGA 芯片,適用于可靠的獨立嵌入式或分布式應(yīng)用系統(tǒng)。CompactRIO 還包含熱插拔工業(yè)I/O 模塊,內(nèi)置可直接與傳感器/調(diào)節(jié)器連接的信號調(diào)理。因CompactRIO 具有低成本開放性架構(gòu),用戶可輕松訪問到底層的硬件設(shè)備,且Compact-RIO嵌入式系統(tǒng)可使用高效的Labview 圖形化編程工具進(jìn)行快速開發(fā)[2]。
本文采用的控制器為CompactRIO 9022,在此嵌入式控制器中運行Labview Real-Time,以實現(xiàn)確定性控制、數(shù)據(jù)記錄和分析,此控制器具有533 MHz處理器,2GB 非易失性存儲介質(zhì),256MB DDR2內(nèi)存,雙以太網(wǎng)端口,并具有嵌入式Web和文件服務(wù)器,可實現(xiàn)遠(yuǎn)程用戶連接,工作溫度范圍為0~55 ℃。機(jī)箱采用NI 9114 8插槽可重配置嵌入式機(jī)箱,在滿足現(xiàn)需功能的前提下為以后的升級或?qū)崿F(xiàn)其他I/O功能留有空間。串口模塊采用NI 9870,它帶有4個全功能的獨立RS232DTE端口,它們與系統(tǒng)中的其他模塊相隔離。每個端口均與ANSI/EIA/TIA-232標(biāo)準(zhǔn)完全兼容。配置完成的硬件系統(tǒng)如圖1所示。
圖1 CompactRIO 硬件系統(tǒng)Fig.1 Hardware system of CompactRIO
圖1中的機(jī)箱不僅插有串口模塊,還有3塊DI模塊及1塊DO 模塊,用來實現(xiàn)對其他數(shù)字I/O 設(shè)備的控制與狀態(tài)讀取,留有的3個空插槽作為后期備用。
本文所有程序均采用Labview 編寫,機(jī)箱與控制器通過FPGA 模式通信,因此需編寫FPGA 接口程序。Labview-FPGA 編程簡單易懂,無需使用VHDL語言。
現(xiàn)場需連接多臺真空計,因此串口模塊的每個端口均被使用,為此必須采用中斷模式實現(xiàn)4個串口的同時通信。以端口1通信為例:系統(tǒng)檢測到中斷1發(fā)生,在第1次循環(huán)時先發(fā)送指令PA1,表示將測量A1通道的壓力,此時真空計返回確認(rèn)信息,只要保證收到返回信息即可,無需將信息顯示,再發(fā)送十六進(jìn)制數(shù)“05”,此時返回的數(shù)據(jù)通過Index Vacuum.vi將通道A1 的壓力解析出來并發(fā)送到顯示面板,第2次循環(huán)時將測量通道A2 的壓力。同理,可實現(xiàn)剩余3路端口與對應(yīng)真空計的通信。1個串口模塊共可連接4 臺真空計,可同時測量16個通道的真空壓力,程序流程圖如圖2所示。
圖2 程序流程圖Fig.2 Flow chart of program
由圖2可見,首先需將CompactRIO 與串口模塊建立連接并完成初始化,根據(jù)TPG300真空計的協(xié)議格式發(fā)送指令,如果接收到返回的數(shù)據(jù),則將其轉(zhuǎn)換為真空度并發(fā)送到用戶界面,否則返回重新初始化。
在編寫串口模塊FPGA 接口程序時,主要用到FPGA 的兩個方法節(jié)點,即寫字節(jié)和讀字節(jié),并在每個端口設(shè)置不同的中斷。所用VI如圖3所示。
圖3 FPGA 接口程序所用VIFig.3 VIs for FPGA interface program
SSC-Linac控制系統(tǒng)的統(tǒng)一架構(gòu)為EPICS,CompactRIO 作為真空控制系統(tǒng)的IOC,需生成過程變量(PV),目前NI已經(jīng)開發(fā)出EPICS模塊,使得軟件編寫過程更加簡單。IOC程序示意圖如圖4所示。
當(dāng)建立起通道訪問服務(wù)時,WRITE PV.vi將把解析出的真空度寫入統(tǒng)一命名的PV 中,操作界面只需知道PV 名稱即可讀取真空壓力。
圖4 IOC程序示意圖Fig.4 Sketch of IOC program
本文采取的真空度讀取方法硬件結(jié)構(gòu)簡單,且穩(wěn)定可靠,具有很強(qiáng)的抗干擾能力,機(jī)箱插槽較多,可與氣動閥等其他真空設(shè)備硬件連鎖,后期升級改造成本較低,Labview 程序與NI硬件完全兼容,且兼容EPICS架構(gòu),不用單獨設(shè)計IOC,系統(tǒng)整體實時性、魯棒性較好。
[1] DONDORF W.TPG300 operating instructions[M].Germany:[s.n.],2003.
[2] NI公 司.產(chǎn) 品 手 冊[R/OL].(2011-01)[2014-10].http:∥www.ni.com/compactrio/whatis/zhs/#h11.