何 輝,邢敬宏,龔成瑩
(蘭州工業(yè)學(xué)院 信息中心,甘肅 蘭州 730050)
?
ADAMI/O模塊在電推進(jìn)試驗(yàn)系統(tǒng)中的應(yīng)用
何輝,邢敬宏,龔成瑩
(蘭州工業(yè)學(xué)院 信息中心,甘肅 蘭州 730050)
摘要針對(duì)電推進(jìn)地面試驗(yàn)對(duì)供氣系統(tǒng)的要求,利用研華以太網(wǎng)I/O模塊對(duì)壓縮氣體進(jìn)行有效測(cè)控?;?NET框架,用后臺(tái)異步任務(wù)BackgroundWorker對(duì)象實(shí)現(xiàn)對(duì)多工位I/O的多線程測(cè)控,采用一種時(shí)間片輪轉(zhuǎn)的方法提高對(duì)I/O模塊的控制效率和軟件的操控友好性。給出了設(shè)計(jì)思路和實(shí)現(xiàn)方法。測(cè)試結(jié)果表明,系統(tǒng)能夠?qū)庀到y(tǒng)進(jìn)行準(zhǔn)確控制,提高了試驗(yàn)數(shù)據(jù)的可靠性。
關(guān)鍵詞ADAM;異步任務(wù);多線程;供氣系統(tǒng)
ApplicationofADAMI/OModuleinElectric
PropulsionTestSystem
HEHui,XINGJing-hong,GONGCheng-ying
(Information Center,Lanzhou Institute of Technology,Lanzhou Gansu 730050,China)
AbstractInviewoftherequirementsofelectricpropulsiontestsystemforgassupplysystem,aneffectivemeasurementandcontrolisperformedforcompressedgasbyusingAdvantechEthernetI/Omodules.Basedon.NETframework,themulti-threadmeasurementforthemulti-stationADAMI/OisimplementedbyBackgroundWorkerobject,atimecyclemethodisusedtoimprovethecontrolefficiencyanduser-friendlyinterfacesofsoftware.Thedesignideaandimplementationmethodaregiven.Thepracticalapplicationshowsthatthissystemcancarryontheaccuratecontrolforgassupplysystem,improvethereliabilityoftestdata.
KeywordsADAM;asynchronoustask;multi-thread;gassupplysystem
0引言
在電推進(jìn)設(shè)備的地面試驗(yàn)系統(tǒng)中,利用直流放電產(chǎn)生電子轟擊工質(zhì),使工質(zhì)受到電離生成離子,離子在靜電場(chǎng)作用下加速噴出,進(jìn)而產(chǎn)生反作用推力。試驗(yàn)環(huán)境下,推力器使用易電離的物質(zhì)作為工質(zhì),由于惰性氣體氙具有化學(xué)性質(zhì)穩(wěn)定、原子量較大、電離電壓低和便于壓縮貯存的特點(diǎn),因此多采用氙氣作為推力器的工質(zhì)[1-3],但是,氙屬于稀有氣體,資源較少,在試驗(yàn)系統(tǒng)中就需要精確控制使用量。根據(jù)試驗(yàn)需求,采用研華ADAM以太網(wǎng)I/O模塊對(duì)氣路狀態(tài)進(jìn)行采集和控制,基于TCP/IP通訊方式,在.NET平臺(tái)下,利用多線程機(jī)制對(duì)氣路進(jìn)行準(zhǔn)確測(cè)控。使用計(jì)算機(jī)控制后的試驗(yàn)系統(tǒng),對(duì)傳統(tǒng)的手工試驗(yàn)控制和實(shí)驗(yàn)數(shù)據(jù)記錄方式進(jìn)行改進(jìn),氣路測(cè)控?cái)?shù)據(jù)準(zhǔn)確,降低了試驗(yàn)人員的工作強(qiáng)度。
1系統(tǒng)設(shè)計(jì)
系統(tǒng)框圖如圖1所示,由氣瓶引出2路氙氣供給放電室,要求對(duì)氣瓶的各種壓力參數(shù)進(jìn)行采集,對(duì)2路氣體的流率值進(jìn)行測(cè)量和設(shè)定,利用電磁閥控制2路氣體輸出的通斷。圖1中的氣瓶壓力信號(hào)只需采集不用控制,2路氣體需要進(jìn)行實(shí)時(shí)采集和控制,電磁閥用來(lái)控制氣路的通斷,要使用開(kāi)關(guān)量控制,所有指令都由運(yùn)行在工控機(jī)上的測(cè)控軟件控制執(zhí)行[4]。
圖1 系統(tǒng)框圖
利用研華ADAM-6000系列以太網(wǎng)I/O模塊進(jìn)行信號(hào)的采集與控制,如圖1所示,ADAM模塊都通過(guò)RJ45網(wǎng)口連接到交換機(jī)上接受控制系統(tǒng)的管理。
1.1ADAM-6000以太網(wǎng)I/O模塊
ADAM-6000以太網(wǎng)I/O模塊是基于以太網(wǎng)的遠(yuǎn)程數(shù)據(jù)采集模塊[5],提供模擬量輸入及輸出、數(shù)字量輸入及輸出、繼電器輸出及計(jì)數(shù)器接口,其特點(diǎn)如下:
① 具有工業(yè)以太網(wǎng)通訊基準(zhǔn),ADAM-6000模塊支持TCP/IP及UDP協(xié)議,支持Modbus協(xié)議;
② 具備智能型邏輯運(yùn)算功能,提供內(nèi)建的控制運(yùn)算邏輯與數(shù)學(xué)程序,以便立即執(zhí)行線程控制策略,簡(jiǎn)化了中央監(jiān)控主機(jī)的運(yùn)算負(fù)荷;
③ 采用最佳化I/O群組設(shè)計(jì),根據(jù)應(yīng)用向?qū)У母拍钤O(shè)計(jì)I/O群組,I/O模塊與監(jiān)控設(shè)備一對(duì)一搭配使用,使I/O系統(tǒng)的應(yīng)用達(dá)到最佳化,同時(shí)減少工程和維護(hù)成本;
④ 提供HMI瀏覽器接口,不僅提供標(biāo)準(zhǔn)網(wǎng)頁(yè)監(jiān)控HMI接口,也具備可訂制的網(wǎng)頁(yè)編輯接口,便于用戶通過(guò)瀏覽器遠(yuǎn)程測(cè)控。
1.2I/O模塊選型
根據(jù)系統(tǒng)設(shè)計(jì),圖1中的氣瓶壓力信號(hào)是線性模擬量,由專門(mén)的氣體壓力測(cè)量裝置進(jìn)行信號(hào)采集,其輸出結(jié)果是4~20mA的電流信號(hào);通往放電室的2路氣體的流率也由專用測(cè)控裝置控制,其輸出亦是4~20mA的電流信號(hào);電磁閥使用開(kāi)關(guān)量控制[6]。
1.2.1氣瓶壓力采集
共有5個(gè)壓力信號(hào),分別是氣瓶壓力、一級(jí)壓力、二級(jí)壓力、入口壓力和出口壓力,均為模擬量信號(hào)。因此,選擇16位A/D、具有8通道模擬量輸入的ADAM-6017以太網(wǎng)I/O模塊進(jìn)行信號(hào)采集。
1.2.2放電室氣路測(cè)控
要求對(duì)2路氣體的流率進(jìn)行采集和控制,因此選擇具有6通道模擬量輸入和2通道模擬量輸出的ADAM-6024以太網(wǎng)I/O模塊,其輸入通道的分辨率能夠達(dá)到16位,支持+/-10V電壓、0~20mA電流、4~40mA電流輸入輸出。
1.2.3氣瓶壓力采集
使用繼電器對(duì)電磁閥進(jìn)行通斷控制,因此選擇帶6通道數(shù)字量輸出與6路繼電器ADAM-6066以太網(wǎng)I/O模塊。
1.3ADAM模塊程序控制
借助于工具AdvantechAdam/Apax.NETUtility,可以對(duì)ADAM模塊進(jìn)行初始化配置和常規(guī)的I/O控制,同時(shí),ADAM模塊提供了豐富的程序設(shè)計(jì)接口,.NET環(huán)境下,調(diào)用Advantech.Adam類庫(kù)對(duì)模塊進(jìn)行控制,便于開(kāi)發(fā)人員靈活使用。ADAM的程序控制基本流程如圖2所示[7,8]。
圖2 ADAM模塊基本控制流程
2模塊應(yīng)用
在微軟.NET平臺(tái)下應(yīng)用ADAM以太網(wǎng)I/O模塊到電推進(jìn)系統(tǒng)的氣路控制中,利用多線程機(jī)制,對(duì)氣瓶和氣體流量進(jìn)行精確測(cè)控。
2.1基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
根據(jù)試驗(yàn)系統(tǒng)對(duì)氣路控制的要求,為ADAM模塊的I/O參數(shù)定義公共類型的數(shù)據(jù)結(jié)構(gòu),作為測(cè)控?cái)?shù)據(jù)的收發(fā)緩沖區(qū)。
′Adam緩沖區(qū)結(jié)構(gòu)體
PublicStructureadamValue
′模擬量輸入寄存器
PublicAi(,)AsSingle
PublicAiValue()AsSingle′濾波后值
PublicAiFilterCNT()AsInteger′濾波數(shù)組
′模擬量輸出寄存器
PublicAo()AsSingle
′數(shù)字量輸入寄存器
PublicDi()AsBoolean
′數(shù)字量(繼電器)輸出寄存器
PublicDoo()AsBoolean
′模擬量輸出值A(chǔ)O
PublicAoOutput()AsValueEnable
′數(shù)字量輸出值DO
PublicDoOutput()AsValueEnable
EndStructure
其中ValueEnable為結(jié)構(gòu)體類型,其成員如表1所示,程序控制時(shí),可由enable成員決定是否輸出成員value。
表1 結(jié)構(gòu)體成員
2.2基于后臺(tái)任務(wù)的測(cè)控
ADAM-6000系列使用以太網(wǎng)方式進(jìn)行I/O控制,因此對(duì)其進(jìn)行TCP/IP操作時(shí)需要一定的響應(yīng)時(shí)間,另一方面ADAM模塊在進(jìn)行I/O處理時(shí)也需要一定的時(shí)間,這樣就增加了整個(gè)系統(tǒng)的處理延遲;同時(shí),系統(tǒng)在同一時(shí)間要處理對(duì)多個(gè)ADAM的操作,所有延時(shí)累加在一起就是一筆不小的時(shí)間花銷,若使用傳統(tǒng)的單線程方式進(jìn)行程控,就會(huì)帶來(lái)用戶操作界面停滯,程序出現(xiàn)“假死”的現(xiàn)象[9]。
為解決上述問(wèn)題,采用多線程方式在系統(tǒng)后臺(tái)對(duì)ADAM模塊進(jìn)行操作。在.NET平臺(tái)下可以使用Thread類實(shí)現(xiàn)多線程,多個(gè)ADAM控制線程可以放在線程池中完成,但是這種方式控制起來(lái)較為麻煩,需要程序更多地考慮線程鎖定、線程同步、多線程管理以及死鎖等問(wèn)題,并且只能使用委托方式與用戶界面進(jìn)行交互,這就給開(kāi)發(fā)人員帶來(lái)一定的困惑,從而不能將主要精力放在控制系統(tǒng)的實(shí)現(xiàn)上。.NET還提供一種基于后臺(tái)線程的BackgroundWorker類(以后簡(jiǎn)稱為后臺(tái)任務(wù))來(lái)實(shí)現(xiàn)多線程[10]。
后臺(tái)任務(wù)用來(lái)執(zhí)行諸如I/O訪問(wèn)、數(shù)據(jù)庫(kù)事務(wù)和文件下載等耗時(shí)的異步操作,作為Visual Studio的標(biāo)準(zhǔn)控件,使用十分方便,如圖3所示。
圖3 后臺(tái)任務(wù)執(zhí)行流程
使用后臺(tái)任務(wù)時(shí),首先調(diào)用BackgroundWorker的RunWorkerAsync方法,通過(guò)觸發(fā)DoWork事件,開(kāi)始執(zhí)行后臺(tái)操作,DoWork事件將在另一個(gè)線程中執(zhí)行的;為了顯示后臺(tái)任務(wù)的執(zhí)行進(jìn)度,可以調(diào)用BackgroundWorker的ReportProgress方法,通過(guò)它傳遞后臺(tái)任務(wù)的進(jìn)度值,此外,該方法會(huì)觸發(fā)ProgressChanged事件,在此事件中,通過(guò)ProgressChanged-EventArgs的實(shí)例,接收主線程傳遞來(lái)的參數(shù);BackgroundWorker也可以取消正在執(zhí)行的后臺(tái)任務(wù),將屬性WorkerSupportsCancellation 設(shè)置為 true,調(diào)用CancelAsync()方法,利用CancellationPending屬性來(lái)判斷后臺(tái)任務(wù)是否被取消;當(dāng)后臺(tái)任務(wù)完成以后, RunWorkerCompleted 事件被觸發(fā),通過(guò)此方法可以將后臺(tái)任務(wù)的執(zhí)行結(jié)果反饋給前臺(tái)進(jìn)程[11]。
系統(tǒng)為每個(gè)ADAM模塊的訪問(wèn)操作建立一個(gè)BackgroundWorker對(duì)象,再通過(guò)后臺(tái)任務(wù)不斷對(duì)I/O進(jìn)行采集和控制,定時(shí)判斷BackgroundWorker的IsBusy屬性,以確保后臺(tái)線程的運(yùn)行。為了避免ADAM在同一時(shí)刻的讀寫(xiě)沖突,增加系統(tǒng)的穩(wěn)定性,采用一種基于標(biāo)志量的時(shí)間片輪轉(zhuǎn)的方式在后臺(tái)任務(wù)(DoWork事件)中執(zhí)行讀寫(xiě)操作,執(zhí)行過(guò)程如圖4所示,線程在運(yùn)行時(shí),根據(jù)讀寫(xiě)操作的標(biāo)志量確定是否執(zhí)行該操作。
圖4 數(shù)據(jù)采集與控制流程
3測(cè)試結(jié)果分析
系統(tǒng)運(yùn)行界面如圖5所示,將ADAM模塊應(yīng)用到電推進(jìn)試驗(yàn)系統(tǒng)的供氣單元中,通過(guò)以太網(wǎng)TCP/IP方式對(duì)ADAM模塊進(jìn)行I/O操作,使用BackgroundWorker后臺(tái)任務(wù)后,同時(shí)對(duì)多個(gè)試驗(yàn)工位進(jìn)行操作,軟件操控流暢。
圖5 運(yùn)行界面
經(jīng)測(cè)試,發(fā)現(xiàn)通過(guò)ADAM采集的壓力與氣體流量值與實(shí)際流量計(jì)顯示略有出入,因此為數(shù)據(jù)增加軟件濾波功能[12],當(dāng)前采集值與前9個(gè)采集值相加后再平均,最終數(shù)值與流量計(jì)在精度范圍內(nèi)相吻合,符合試驗(yàn)要求。
4結(jié)束語(yǔ)
通過(guò)對(duì)電推進(jìn)試驗(yàn)供氣系統(tǒng)的研究,選擇研華ADAM-6000系列以太網(wǎng)I/O模塊進(jìn)行系統(tǒng)控制,利用后臺(tái)異步任務(wù)實(shí)現(xiàn)對(duì)ADAM以太網(wǎng)I/O模塊的多線程測(cè)控,針對(duì)被測(cè)設(shè)備多工位并行運(yùn)行的工況,在測(cè)控過(guò)程中,摸索出一種基于時(shí)間片輪轉(zhuǎn)的分時(shí)控制方法。應(yīng)用該方案到電推進(jìn)地面試驗(yàn)的供氣系統(tǒng)運(yùn)行過(guò)程中,實(shí)現(xiàn)對(duì)壓縮氣體儲(chǔ)氣罐壓力信號(hào)和放電室供氣管道氣體流率的準(zhǔn)確控制,確保放電室中放電氣體滿足試驗(yàn)要求。系統(tǒng)測(cè)試結(jié)果表明,本文提出的方案穩(wěn)定可靠,試驗(yàn)記錄準(zhǔn)確,并對(duì)相關(guān)測(cè)控系統(tǒng)的開(kāi)發(fā)有一定的參考價(jià)值。
參考文獻(xiàn)
[1]薛偉華.電推力器地面試驗(yàn)系統(tǒng)測(cè)試技術(shù)研究[D].大連:大連理工大學(xué),2013.
[2]張?zhí)炱?袁子,田華兵.電推進(jìn)系統(tǒng)空心陰極研制試驗(yàn)技術(shù)[J].真空電子技術(shù),2007(2):9-14.
[3]杭觀榮,康小錄.電推進(jìn)在深空探測(cè)主推進(jìn)中的應(yīng)用及發(fā)展趨勢(shì)[J].火箭推進(jìn),2012,38(4):1-8.
[4]李鵬,戴亞文,李小強(qiáng).升降機(jī)試驗(yàn)臺(tái)無(wú)線測(cè)控系統(tǒng)的實(shí)現(xiàn)[J].無(wú)線電工程,2011,41(5):11-13.
[5]郭福田,劉心紅,曾麗麗,等.自主儀器中ADAM ASCⅡ協(xié)議通信接口的設(shè)計(jì)與實(shí)現(xiàn)[J].大慶師范學(xué)院學(xué)報(bào),2013,33(6):31-34.
[6]張?zhí)炱?劉樂(lè)柱,賈艷輝.電推進(jìn)系統(tǒng)空心陰極產(chǎn)品試驗(yàn)技術(shù)[J].火箭推進(jìn),2010,36(1):58-62.
[7]祝寧,于海生,吳賀榮.基于組態(tài)王和研華ADAM模塊的小功率加熱體溫度控制系統(tǒng)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2013,26(2):15-17.
[8]熊磊.基于ADAM5510E的液位控制系統(tǒng)的設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2011,24(4):3-4.
[9]鄭宇生.C#多線程編程技術(shù)在數(shù)控測(cè)井軟件中的應(yīng)用[J].石油儀器,2012,26(4):79-81.
[10]劉學(xué)輝,王國(guó)良.軟件進(jìn)程監(jiān)控系統(tǒng)及其實(shí)現(xiàn)[J].無(wú)線電工程,2011,41(9):62-64.
[11]李明明.VS.net中用后臺(tái)線程向Excel中導(dǎo)入數(shù)據(jù)的研究[J].測(cè)控技術(shù),2011,30(8):83-86.
[12]孫旭清.機(jī)艙監(jiān)視報(bào)警系統(tǒng)中的軟件濾波方法研究[J].船海工程,2009,38(2):113-115.
何輝男,(1978—),碩士,副教授。主要研究方向:計(jì)算機(jī)測(cè)控。
邢敬宏男,(1971—),碩士,副教授。主要研究方向:計(jì)算機(jī)應(yīng)用。
作者簡(jiǎn)介
基金項(xiàng)目:甘肅省科技支撐計(jì)劃資助項(xiàng)目(1204GKCA043);甘肅省高等學(xué)校科研基金資助項(xiàng)目(2014A-124)。
收稿日期:2015-09-02
中圖分類號(hào)TP277
文獻(xiàn)標(biāo)識(shí)碼A
文章編號(hào)1003-3106(2015)12-0010-03
doi:10.3969/j.issn.1003-3106.2015.12.03
引用格式:何輝,邢敬宏,龔成瑩.ADAMI/O模塊在電推進(jìn)試驗(yàn)系統(tǒng)中的應(yīng)用[J].無(wú)線電工程,2015,45(12):10-12,20.