氣體壓力閉環(huán)控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:由于高壓氣體注入密閉容器時(shí)的速度要求精確控制,需要一種響應(yīng)迅速,且較為容易實(shí)現(xiàn)計(jì)算機(jī)精確控制的充氣系統(tǒng)。該氣體壓力閑環(huán)控制系統(tǒng)由PC104 VDX6354微電腦和步進(jìn)電機(jī)實(shí)現(xiàn)控制功能,基于VC++和Matlab混合編程,由PC機(jī)根據(jù)精密數(shù)字壓力表實(shí)時(shí)傳輸來(lái)的數(shù)據(jù)建立氣壓預(yù)測(cè)模型,閉環(huán)控制步進(jìn)電機(jī),調(diào)節(jié)精密閥門(mén)的開(kāi)度,從而確保工作氣體的高精度恒壓注入。在步進(jìn)電機(jī)控制模塊引入坐標(biāo)系,成功解決電機(jī)的碰撞問(wèn)題。
關(guān)鍵詞:PC104;步進(jìn)電機(jī);閉環(huán)控制;混合編程
0 引言
氣體壓力的自動(dòng)化測(cè)試和控制是一個(gè)古老而又不斷更新的課題,隨著自動(dòng)控制和計(jì)算機(jī)技術(shù)迅猛發(fā)展,給氣體壓力控制技術(shù)帶來(lái)了深刻的影響。精密氣壓的產(chǎn)生與控制技術(shù)應(yīng)用越來(lái)越廣泛,特別是應(yīng)用于液壓和氣動(dòng)設(shè)備的檢驗(yàn),對(duì)氣壓的控制精度和控制穩(wěn)定性提出了越來(lái)越高的要求。目前,現(xiàn)代工業(yè)生產(chǎn)日益復(fù)雜化,為滿(mǎn)足生產(chǎn)條件和產(chǎn)品精密的要求,必須不斷改進(jìn)信號(hào)采集和控制的方式方法,向更加快捷、高效、準(zhǔn)確、實(shí)時(shí)以及遠(yuǎn)程控制的方向發(fā)展。氣體控制是利用各種控制元件(各種閥、缸等)和控制器,組成控制回路,以進(jìn)行自動(dòng)控制。
在某型裝備測(cè)試操作中,需要往高壓氣瓶中注入高壓工作氣體,高壓氣體在注入的過(guò)程中出于安全起見(jiàn)需要精確控制充氣速度。因此,本文采用閉環(huán)控制系統(tǒng)通過(guò)計(jì)算機(jī)對(duì)氣體管路進(jìn)行實(shí)時(shí)控制,在裝置運(yùn)行過(guò)程中根據(jù)壓力表反饋的數(shù)據(jù),動(dòng)態(tài)調(diào)節(jié)閥門(mén)的開(kāi)啟度,控制充氣速度在合適的范圍。
1 整體方案設(shè)計(jì)
對(duì)氣閥的流速做出控制,最簡(jiǎn)單易行的方法就是改變進(jìn)氣時(shí)氣流流通的橫截面積,可以通過(guò)在進(jìn)氣道中設(shè)置一錐形活塞,通過(guò)精確控制錐形活塞的行程來(lái)改變進(jìn)氣道流通面積,而精確控制錐形活塞的行程可以通過(guò)步進(jìn)電機(jī)帶動(dòng)絲桿傳動(dòng)系統(tǒng),做出精確位移來(lái)實(shí)現(xiàn)。
整個(gè)閉環(huán)控制系統(tǒng)由PC系統(tǒng)、氣體管路系統(tǒng)和步進(jìn)電機(jī)系統(tǒng)構(gòu)成。在VC++2005環(huán)境下,由PC系統(tǒng)控制壓力表實(shí)時(shí)采集管路的壓力值,實(shí)時(shí)數(shù)據(jù)經(jīng)過(guò)Matlab的多項(xiàng)回歸處理,得出壓力的實(shí)時(shí)變化快慢來(lái)閉環(huán)控制步進(jìn)電機(jī)調(diào)節(jié)精密閥門(mén)開(kāi)度,實(shí)現(xiàn)氣閥充氣速度的自動(dòng)控制。
1.1 硬件設(shè)計(jì)
系統(tǒng)以ICOP最近推出的一款功能齊全完美的PC104單板電腦VDX-6354為核心,主板采用標(biāo)準(zhǔn)PC104結(jié)構(gòu),小尺寸并擁有完整性的功能,運(yùn)算時(shí)的穩(wěn)定度高,執(zhí)行速度快,功耗低,-40~+85℃的軍工級(jí)工作溫度。
步進(jìn)電機(jī)控制系統(tǒng)選用RORZE系列,通過(guò)RS 232總線(xiàn)和電腦通信,包括RD-023MS驅(qū)動(dòng)器、RC-002電平變換器和RC-233定位主控器、RM2414 S步進(jìn)電機(jī)。該系列步進(jìn)電機(jī)系統(tǒng),以程序取代人的操作,配備功能強(qiáng)大的編碼器,利用RD-023MS驅(qū)動(dòng)器,不需要外接脈沖信號(hào)和驅(qū)動(dòng)電路,通過(guò)程序指令控制電機(jī)實(shí)現(xiàn)正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、查詢(xún)、定位等功能。RC 233定位主控器可以有80,320,1,64,50,400幾種細(xì)分,滿(mǎn)足不同速度的需求。
壓力表選用ACD-2精密數(shù)字壓力表,它是一款高精度智能測(cè)量?jī)x表,由壓力傳感器和信號(hào)處理電路組成。壓力傳感器采用進(jìn)口傳感器,性能優(yōu)越,具有精度高、抗腐蝕、抗沖擊、抗震動(dòng)、高穩(wěn)定性等優(yōu)點(diǎn),可靠性高。壓力表通過(guò)RS 485接口與電腦通信連接,驅(qū)動(dòng)和控制程序簡(jiǎn)單,氣壓表12 V直流電壓供電。由于RS 485串行接口屬于一種差分標(biāo)準(zhǔn),允許1對(duì)雙絞線(xiàn)上1個(gè)發(fā)送器驅(qū)動(dòng)多個(gè)負(fù)載設(shè)備,RS 485通信多用在主從式多機(jī)通信中,但其作為一種半雙工的通信方式,在1條通信電纜上掛許多設(shè)備時(shí),一定要保證在總線(xiàn)上只有1臺(tái)設(shè)備處于發(fā)送狀態(tài),其他設(shè)備一定要處于接收狀態(tài);而一旦同時(shí)2臺(tái)設(shè)備都處于發(fā)送狀態(tài),必然會(huì)出現(xiàn)總線(xiàn)沖突的現(xiàn)象。針對(duì)上述問(wèn)題,解決的關(guān)鍵是一定要控制好各臺(tái)設(shè)備的接收與發(fā)送狀態(tài)即RS 485接口器的收發(fā)狀態(tài),本系統(tǒng)中兩個(gè)壓力表工作時(shí)間不同步,可以避免這種收發(fā)沖突。
氣體管路組件選用寧波星箭航天機(jī)械廠(chǎng)的過(guò)濾器、截止閥、閥門(mén)和導(dǎo)管,硬件系統(tǒng)示意圖如圖1所示。
1.2 軟件設(shè)計(jì)
軟件部分通過(guò)網(wǎng)絡(luò)接口實(shí)現(xiàn)遠(yuǎn)程編程,在其他電腦上Windows XP環(huán)境下用VC++2005和Matlab混合編程,最后將可執(zhí)行文件以靜態(tài)庫(kù)的形式移植到單板電腦上運(yùn)行,分為主程序模塊、硬件驅(qū)動(dòng)模塊、數(shù)據(jù)處理模塊三個(gè)部分,后兩個(gè)部分均以類(lèi)的形式封裝。VisualC++是Windows平臺(tái)下強(qiáng)有力的高級(jí)編程語(yǔ)言,能夠方便快速地開(kāi)發(fā)出界面友好,執(zhí)行速度快,易于維護(hù)升級(jí)的系統(tǒng)軟件。然而Visual C++只提供了一些基本的數(shù)學(xué)函數(shù)庫(kù),當(dāng)遇到復(fù)雜的數(shù)值運(yùn)算時(shí),重新編寫(xiě)程序代碼延長(zhǎng)軟件開(kāi)發(fā)周期,增加軟件開(kāi)發(fā)成本。Matlab擁有獨(dú)立的數(shù)學(xué)函數(shù)庫(kù),包含有大量?jī)?yōu)化了的數(shù)學(xué)函數(shù),同時(shí)提供了對(duì)C++語(yǔ)言的函數(shù)接口,用戶(hù)可以方便地在VC++的集成開(kāi)發(fā)環(huán)境中調(diào)用。但Matlab的應(yīng)用程序接口并不是很強(qiáng)大,它不能傳輸除了數(shù)值之外的其他數(shù)據(jù),而VC++卻具有強(qiáng)大的程序接口,能傳輸任何數(shù)據(jù),但其進(jìn)行復(fù)雜計(jì)算的能力不是很強(qiáng)。因此,若將兩者結(jié)合起來(lái),協(xié)同工作,必將提高軟件開(kāi)發(fā)效率。程序流程圖如圖2所示,初始狀態(tài)把閥門(mén)定在完全關(guān)閉的狀態(tài),規(guī)定電機(jī)逆時(shí)針為正。
1.2.1 主程序模塊
主要是聲明成員變量,調(diào)用硬件驅(qū)動(dòng)模塊和數(shù)據(jù)處理模塊的已經(jīng)定義好的類(lèi)函數(shù)。主程序根據(jù)氣壓表模塊輸出的壓力值,然后用數(shù)據(jù)處理模塊進(jìn)行數(shù)據(jù)分析,根據(jù)壓力值的變化來(lái)閉環(huán)控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的方向,壓力變化過(guò)快,則需要減小精密閥門(mén)開(kāi)度,電機(jī)反轉(zhuǎn),壓力變化過(guò)慢則電機(jī)正轉(zhuǎn),使壓力上升速度在一個(gè)安全高效的范圍內(nèi)。
1.2.2 硬件驅(qū)動(dòng)模塊
硬件驅(qū)動(dòng)模塊用于對(duì)硬件設(shè)計(jì)部分主要儀表的控制和驅(qū)動(dòng),主要包括氣壓表模塊、步進(jìn)電機(jī)模塊和串口模塊,各分模塊也是均以類(lèi)的形式進(jìn)行封裝。
氣壓表模塊,表1和表2在氣壓表內(nèi)部可以進(jìn)行初始設(shè)定編號(hào)01,02,表1負(fù)責(zé)放氣時(shí)的氣壓讀數(shù),表2負(fù)責(zé)充氣。氣壓表實(shí)時(shí)監(jiān)測(cè)高壓管路的壓力值,實(shí)際上一秒最多可采集數(shù)據(jù)20次,PC機(jī)通過(guò)串口模塊實(shí)時(shí)向氣壓表發(fā)送命令“@01!”、“@02!”,通過(guò)MFC對(duì)話(huà)框的形式實(shí)時(shí)接收氣壓表返回的壓力值,經(jīng)過(guò)數(shù)據(jù)處理,得出壓力值變化的速度來(lái)閉環(huán)控制步進(jìn)電機(jī),使充放氣速度在一個(gè)安全高效的范圍。
步進(jìn)電機(jī)模塊,直接發(fā)送程序指令來(lái)控制電機(jī)實(shí)現(xiàn)各個(gè)動(dòng)作。電機(jī)步距角為1.8°/步,細(xì)分50時(shí),轉(zhuǎn)動(dòng)一圈需要10 000個(gè)脈沖,在導(dǎo)軌上從原點(diǎn)至終點(diǎn)共需6.5圈65 000個(gè)脈沖。這里將平面直角坐標(biāo)系引入模塊中,將步進(jìn)電機(jī)的行程65 000個(gè)脈沖均分為100份,坐標(biāo)原點(diǎn)設(shè)為閥門(mén)完全關(guān)閉點(diǎn),坐標(biāo)100處閥門(mén)完全打開(kāi)。在步進(jìn)電機(jī)控制中引入坐標(biāo)系,可以通過(guò)對(duì)坐標(biāo)點(diǎn)的標(biāo)定來(lái)定位電機(jī),有以下幾大好處:
(1)利于閉環(huán)控制程序的編寫(xiě)。閉環(huán)控制可用一個(gè)循環(huán)程序來(lái)實(shí)現(xiàn),有了坐標(biāo)系,就可以方便定義一個(gè)位置變量,以壓力變化快慢作為循環(huán)條件,位置變量作相應(yīng)的增減,即可控制電機(jī)的正反轉(zhuǎn),改變精密閥門(mén)的行程,調(diào)節(jié)閥門(mén)開(kāi)度實(shí)現(xiàn)氣壓控制;
(2)限制步進(jìn)電機(jī)的行程。步進(jìn)電機(jī)的活動(dòng)范圍限制為坐標(biāo)0~100之間,在不可見(jiàn)系統(tǒng)中解決步進(jìn)電機(jī)失步碰撞問(wèn)題,可以替代接近開(kāi)關(guān)的作用;
(3)實(shí)時(shí)查詢(xún)步進(jìn)電機(jī)的位置。查詢(xún)錐形活塞所處點(diǎn)的坐標(biāo),根據(jù)坐標(biāo)和閥門(mén)旋轉(zhuǎn)螺旋間距,就可以得出電機(jī)的位移,相當(dāng)于一個(gè)位移傳感器。
串口模塊,在VC++2005對(duì)話(huà)框編輯框中添加ActiveX控件Microsoft Communication Control,給該控件命名并在對(duì)話(huà)框?qū)傩钥蚶镌O(shè)置相應(yīng)的參數(shù),即可以直接調(diào)用串口。
1.2.3 數(shù)據(jù)處理模塊
數(shù)據(jù)處理部分采用的是VC++和Matlab混合編程的方法,VC作為客戶(hù)端,利用其能夠簡(jiǎn)單地同底層硬件資源進(jìn)行通信的優(yōu)點(diǎn),將數(shù)據(jù)讀入到內(nèi)存中,再將數(shù)據(jù)送到Matlab中進(jìn)行數(shù)據(jù)處理,通過(guò)調(diào)用Matlab下數(shù)字信號(hào)處理工具箱中的函數(shù)以及自己所寫(xiě)的函數(shù)進(jìn)行分析。選用Matl-ab的C/C++編譯器mcc,這種混合編程方式將.m源文件轉(zhuǎn)化為C/C++等各種不同類(lèi)型的源代碼,并在此基礎(chǔ)上根據(jù)應(yīng)用需要生成MEX文件、獨(dú)立可執(zhí)行應(yīng)用程序等文件類(lèi)型,大大提高程序的運(yùn)行速度,以及代碼的執(zhí)行效率。由于氣壓表每秒采集數(shù)據(jù)20次,為了精確地實(shí)現(xiàn)閉環(huán)控制,把20組數(shù)據(jù)進(jìn)行多項(xiàng)式最小二乘法曲線(xiàn)擬合,建立第1s內(nèi)氣壓隨時(shí)間變化的函數(shù)模型:
在Matlab中調(diào)用回歸命令:A=polyfit(T,P,n),其中:T=O:O.05:1;P=[p0,p1,…,pn。]可以通過(guò)氣壓表的讀數(shù)得到;A=[an,…,a1,a0],是多項(xiàng)式(1)的系數(shù);n為多項(xiàng)式的次數(shù)。
預(yù)測(cè)氣壓的變化速度:
多項(xiàng)式擬合數(shù)據(jù)的模型隨著階次n的選擇不同而不同。雖然n+1個(gè)數(shù)據(jù)點(diǎn)可以確定惟一的n階多項(xiàng)式,但實(shí)踐證明并不是階次越高擬合越好,有時(shí)會(huì)發(fā)生階次越高越不精確的情況。曲線(xiàn)擬合時(shí)應(yīng)該根據(jù)實(shí)際情況憑借經(jīng)驗(yàn)及觀察選擇擬合次數(shù),注意檢驗(yàn)結(jié)果,比如觀察曲線(xiàn)是否平滑、擬合誤差是否足夠小等,力求準(zhǔn)確全面地描述輸入數(shù)據(jù)之間的關(guān)系。由每秒的模型得出連續(xù)的氣壓模型函數(shù)和氣壓變化速度函數(shù),根據(jù)氣壓變化速度函數(shù)在各個(gè)時(shí)間點(diǎn)上的值來(lái)判斷步進(jìn)電機(jī)正轉(zhuǎn)還是反轉(zhuǎn)。數(shù)據(jù)處理模塊也是以類(lèi)的形式封裝起來(lái),供主函數(shù)調(diào)用。
2 實(shí)驗(yàn)與分析
氣體壓力閉環(huán)控制裝置已經(jīng)應(yīng)用于某型裝備故障檢測(cè)中,對(duì)高壓充氣速度進(jìn)行控制,在試驗(yàn)時(shí),裝置連接在管路中,通過(guò)對(duì)電機(jī)的控制實(shí)現(xiàn)對(duì)充氣速度的調(diào)節(jié),從而完成所需試驗(yàn)數(shù)據(jù)的采集。通過(guò)多次試驗(yàn),驗(yàn)證了系統(tǒng)的穩(wěn)定可靠性和高精度的控制充氣速度。
3 結(jié)論
氣體壓力閉環(huán)控制系統(tǒng)的設(shè)計(jì)在某型裝備故障檢測(cè)中已得到較好的實(shí)現(xiàn)。設(shè)計(jì)中無(wú)論是硬件還是軟件系統(tǒng)中都采用模塊化的設(shè)計(jì)方法,這使得系統(tǒng)擴(kuò)展起來(lái)比較方便,系統(tǒng)可移植性高,增加了系統(tǒng)的靈活性和可靠性,具有廣泛的適應(yīng)性。坐標(biāo)系引進(jìn)步進(jìn)電機(jī)行程的方法,可以成功解決步進(jìn)電機(jī)失步碰撞問(wèn)題,能夠確保系統(tǒng)正常運(yùn)行。