摘 要:由于高壓氣體注入密閉容器時的速度要求精確控制,需要一種響應(yīng)迅速,且較為容易實現(xiàn)計算機精確控制的充氣系統(tǒng)。該氣體壓力閉環(huán)控制系統(tǒng)由PC104 VDX6354微電腦和步進電機實現(xiàn)控制功能,基于VC++和Matlab混合編程,由PC機根據(jù)精密數(shù)字壓力表實時傳輸來的數(shù)據(jù)建立氣壓預(yù)測模型,閉環(huán)控制步進電機,調(diào)節(jié)精密閥門的開度,從而確保工作氣體的高精度恒壓注入。在步進電機控制模塊引入坐標(biāo)系,成功解決電機的碰撞問題。
關(guān)鍵詞:PC104; 步進電機; 閉環(huán)控制; 混合編程
中圖分類號:TN919-34文獻標(biāo)識碼:A
文章編號:1004-373X(2010)21-0135-03
Design of Gas Pressure Closed-Loop Control System
SHI Cheng-ying, HAN Hua-feng, SHI Guang-hong
(The Second Artillery Engineering College,Xi’an 710025 China)
Abstract: As the speed of high pressure gas flowed into the airtight container requires precise control, it is necessary to adopt a gas flow inlet system which is controlled by microcomputer accurately and promptly. This system adoptsthe PC104 VDX6354 microcomputer and stepping motor for system control functions.To turn up the opening of the valve, the stepping motor is closed-loop controlled by computer based on mixed programming of VC++ and Matlab, according to the gas pressure forecasting model established from the real-time dates of the precise digital gas manometer. Accordingly,the working gas is charged isobarically in high precision. Coordinates are introduced in the motor control system, so the problem of the motor collision in invisible system is solved successfully.
Keywords: PC104; stepping motor; closed-loop control; mixed programming
0 引 言
氣體壓力的自動化測試和控制是一個古老而又不斷更新的課題,隨著自動控制和計算機技術(shù)迅猛發(fā)展,給氣體壓力控制技術(shù)帶來了深刻的影響。精密氣壓的產(chǎn)生與控制技術(shù)應(yīng)用越來越廣泛,特別是應(yīng)用于液壓和氣動設(shè)備的檢驗,對氣壓的控制精度和控制穩(wěn)定性提出了越來越高的要求。目前,現(xiàn)代工業(yè)生產(chǎn)日益復(fù)雜化,為滿足生產(chǎn)條件和產(chǎn)品精密的要求,必須不斷改進信號采集和控制的方式方法,向更加快捷、高效、準(zhǔn)確、實時以及遠程控制的方向發(fā)展。氣體控制是利用各種控制元件(各種閥、缸等)和控制器,組成控制回路,以進行自動控制[1]。
在某型裝備測試操作中,需要往高壓氣瓶中注入高壓工作氣體,高壓氣體在注入的過程中出于安全起見需要精確控制充氣速度。因此,本文采用閉環(huán)控制系統(tǒng)通過計算機對氣體管路進行實時控制,在裝置運行過程中根據(jù)壓力表反饋的數(shù)據(jù),動態(tài)調(diào)節(jié)閥門的開啟度,控制充氣速度在合適的范圍。
1 整體方案設(shè)計
對氣閥的流速做出控制,最簡單易行的方法就是改變進氣時氣流流通的橫截面積,可以通過在進氣道中設(shè)置一錐形活塞,通過精確控制錐形活塞的行程來改變進氣道流通面積,而精確控制錐形活塞的行程可以通過步進電機帶動絲桿傳動系統(tǒng),做出精確位移來實現(xiàn)[2]。
整個閉環(huán)控制系統(tǒng)由PC系統(tǒng)、氣體管路系統(tǒng)和步進電機系統(tǒng)構(gòu)成。在VC++2005環(huán)境下,由PC系統(tǒng)控制壓力表實時采集管路的壓力值,實時數(shù)據(jù)經(jīng)過Matlab的多項回歸處理,得出壓力的實時變化快慢來閉環(huán)控制步進電機調(diào)節(jié)精密閥門開度,實現(xiàn)氣閥充氣速度的自動控制。
1.1 硬件設(shè)計
系統(tǒng)以ICOP最近推出的一款功能齊全完美的PC104單板電腦VDX-6354為核心,主板采用標(biāo)準(zhǔn)PC104結(jié)構(gòu),小尺寸并擁有完整性的功能,運算時的穩(wěn)定度高,執(zhí)行速度快,功耗低,-40~+85 ℃的軍工級工作溫度[3]。
步進電機控制系統(tǒng)選用RORZE系列,通過RS 232總線和電腦通信,包括RD-023MS驅(qū)動器、RC-002電平變換器和RC-233定位主控器、RM2414S步進電機。該系列步進電機系統(tǒng),以程序取代人的操作,配備功能強大的編碼器,利用RD-023MS驅(qū)動器,不需要外接脈沖信號和驅(qū)動電路,通過程序指令控制電機實現(xiàn)正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、查詢、定位等功能[4]。RC 233定位主控器可以有80,320,1,64,50,400幾種細分,滿足不同速度的需求。
壓力表選用ACD-2精密數(shù)字壓力表,它是一款高精度智能測量儀表,由壓力傳感器和信號處理電路組成。壓力傳感器采用進口傳感器,性能優(yōu)越,具有精度高、抗腐蝕、抗沖擊、抗震動、高穩(wěn)定性等優(yōu)點,可靠性高。壓力表通過RS 485接口與電腦通信連接,驅(qū)動和控制程序簡單,氣壓表12 V直流電壓供電。由于RS 485串行接口屬于一種差分標(biāo)準(zhǔn),允許1對雙絞線上1個發(fā)送器驅(qū)動多個負載設(shè)備,RS 485通信多用在主從式多機通信中,但其作為一種半雙工的通信方式,在1條通信電纜上掛許多設(shè)備時,一定要保證在總線上只有1臺設(shè)備處于發(fā)送狀態(tài),其他設(shè)備一定要處于接收狀態(tài);而一旦同時2臺設(shè)備都處于發(fā)送狀態(tài),必然會出現(xiàn)總線沖突的現(xiàn)象[5]。針對上述問題,解決的關(guān)鍵是一定要控制好各臺設(shè)備的接收與發(fā)送狀態(tài)即RS 485接口器的收發(fā)狀態(tài),本系統(tǒng)中兩個壓力表工作時間不同步,可以避免這種收發(fā)沖突。
氣體管路組件選用寧波星箭航天機械廠的過濾器、截止閥、閥門和導(dǎo)管,硬件系統(tǒng)示意圖如圖1所示。
圖1 硬件系統(tǒng)示意圖
1.2軟件設(shè)計
軟件部分通過網(wǎng)絡(luò)接口實現(xiàn)遠程編程,在其他電腦上Windows XP環(huán)境下用VC++2005和Matlab混合編程,最后將可執(zhí)行文件以靜態(tài)庫的形式移植到單板電腦上運行,分為主程序模塊、硬件驅(qū)動模塊、數(shù)據(jù)處理模塊三個部分,后兩個部分均以類的形式封裝。Visual C++是Windows平臺下強有力的高級編程語言,能夠方便快速地開發(fā)出界面友好,執(zhí)行速度快,易于維護升級的系統(tǒng)軟件。然而Visual C++只提供了一些基本的數(shù)學(xué)函數(shù)庫,當(dāng)遇到復(fù)雜的數(shù)值運算時,重新編寫程序代碼延長軟件開發(fā)周期,增加軟件開發(fā)成本。Matlab擁有獨立的數(shù)學(xué)函數(shù)庫,包含有大量優(yōu)化了的數(shù)學(xué)函數(shù),同時提供了對C++語言的函數(shù)接口,用戶可以方便地在VC++的集成開發(fā)環(huán)境中調(diào)用。但Matlab的應(yīng)用程序接口并不是很強大,它不能傳輸除了數(shù)值之外的其他數(shù)據(jù),而VC++卻具有強大的程序接口,能傳輸任何數(shù)據(jù),但其進行復(fù)雜計算的能力不是很強。因此,若將兩者結(jié)合起來,協(xié)同工作,必將提高軟件開發(fā)效率[6]。程序流程圖如圖2所示,初始狀態(tài)把閥門定在完全關(guān)閉的狀態(tài),規(guī)定電機逆時針為正。
圖2 程序流程圖
1.2.1 主程序模塊
主要是聲明成員變量,調(diào)用硬件驅(qū)動模塊和數(shù)據(jù)處理模塊的已經(jīng)定義好的類函數(shù)。主程序根據(jù)氣壓表模塊輸出的壓力值,然后用數(shù)據(jù)處理模塊進行數(shù)據(jù)分析,根據(jù)壓力值的變化來閉環(huán)控制步進電機轉(zhuǎn)動的方向,壓力變化過快,則需要減小精密閥門開度,電機反轉(zhuǎn),壓力變化過慢則電機正轉(zhuǎn),使壓力上升速度在一個安全高效的范圍內(nèi)。
1.2.2 硬件驅(qū)動模塊
硬件驅(qū)動模塊用于對硬件設(shè)計部分主要儀表的控制和驅(qū)動,主要包括氣壓表模塊、步進電機模塊和串口模塊,各分模塊也是均以類的形式進行封裝。
氣壓表模塊,表1和表2在氣壓表內(nèi)部可以進行初始設(shè)定編號01,02[7],表1負責(zé)放氣時的氣壓讀數(shù),表2負責(zé)充氣。氣壓表實時監(jiān)測高壓管路的壓力值,實際上一秒最多可采集數(shù)據(jù)20次,PC機通過串口模塊實時向氣壓表發(fā)送命令“@01!”、“@02!”,通過MFC對話框的形式實時接收氣壓表返回的壓力值,經(jīng)過數(shù)據(jù)處理,得出壓力值變化的速度來閉環(huán)控制步進電機,使充放氣速度在一個安全高效的范圍。
步進電機模塊,直接發(fā)送程序指令來控制電機實現(xiàn)各個動作。電機步距角為1.8°/步,細分50時,轉(zhuǎn)動一圈需要10 000個脈沖,在導(dǎo)軌上從原點至終點共需65圈65 000個脈沖。這里將平面直角坐標(biāo)系引入模塊中,將步進電機的行程65 000個脈沖均分為100份,坐標(biāo)原點設(shè)為閥門完全關(guān)閉點,坐標(biāo)100處閥門完全打開。在步進電機控制中引入坐標(biāo)系,可以通過對坐標(biāo)點的標(biāo)定來定位電機,有以下幾大好處:
(1)利于閉環(huán)控制程序的編寫。閉環(huán)控制可用一個循環(huán)程序來實現(xiàn),有了坐標(biāo)系,就可以方便定義一個位置變量,以壓力變化快慢作為循環(huán)條件,位置變量作相應(yīng)的增減,即可控制電機的正反轉(zhuǎn),改變精密閥門的行程,調(diào)節(jié)閥門開度實現(xiàn)氣壓控制;
(2)限制步進電機的行程。步進電機的活動范圍限制為坐標(biāo)0~100之間,在不可見系統(tǒng)中解決步進電機失步碰撞問題,可以替代接近開關(guān)的作用;
(3)實時查詢步進電機的位置。查詢錐形活塞所處點的坐標(biāo),根據(jù)坐標(biāo)和閥門旋轉(zhuǎn)螺旋間距,就可以得出電機的位移,相當(dāng)于一個位移傳感器。
串口模塊,在VC++2005對話框編輯框中添加ActiveX控件Microsoft Communication Control,給該控件命名并在對話框?qū)傩钥蚶镌O(shè)置相應(yīng)的參數(shù),即可以直接調(diào)用串口。
1.2.3 數(shù)據(jù)處理模塊
數(shù)據(jù)處理部分采用的是VC++和Matlab混合編程的方法,VC作為客戶端,利用其能夠簡單地同底層硬件資源進行通信的優(yōu)點,將數(shù)據(jù)讀入到內(nèi)存中,再將數(shù)據(jù)送到Matlab中進行數(shù)據(jù)處理,通過調(diào)用Matlab下數(shù)字信號處理工具箱中的函數(shù)以及自己所寫的函數(shù)進行分析[8]。選用Matlab的C/C++編譯器mcc,這種混合編程方式將.m源文件轉(zhuǎn)化為C/C++等各種不同類型的源代碼,并在此基礎(chǔ)上根據(jù)應(yīng)用需要生成MEX文件、獨立可執(zhí)行應(yīng)用程序等文件類型,大大提高程序的運行速度,以及代碼的執(zhí)行效率。由于氣壓表每秒采集數(shù)據(jù)20次,為了精確地實現(xiàn)閉環(huán)控制,把20組數(shù)據(jù)進行多項式最小二乘法曲線擬合,建立第1 s內(nèi)氣壓隨時間變化的函數(shù)模型:
p=a0+a1t+…+antn=∑ni=0aiti
(1)
在Matlab中調(diào)用回歸命令:A=polyfit(T,P,n)[9],其中:T=0∶0.05∶1;P=[p0,p1,…,pn]可以通過氣壓表的讀數(shù)得到;A=[an,…,a1,a0],是多項式(1)的系數(shù);n為多項式的次數(shù)。
預(yù)測氣壓的變化速度:
P′(t)=∑ni=1iaiti-1
(2)
多項式擬合數(shù)據(jù)的模型隨著階次n的選擇不同而不同。雖然n+1個數(shù)據(jù)點可以確定惟一的n階多項式,但實踐證明并不是階次越高擬合越好,有時會發(fā)生階次越高越不精確的情況。曲線擬合時應(yīng)該根據(jù)實際情況憑借經(jīng)驗及觀察選擇擬合次數(shù),注意檢驗結(jié)果,比如觀察曲線是否平滑、擬合誤差是否足夠小等,力求準(zhǔn)確全面地描述輸入數(shù)據(jù)之間的關(guān)系[10]。由每秒的模型得出連續(xù)的氣壓模型函數(shù)和氣壓變化速度函數(shù),根據(jù)氣壓變化速度函數(shù)在各個時間點上的值來判斷步進電機正轉(zhuǎn)還是反轉(zhuǎn)。數(shù)據(jù)處理模塊也是以類的形式封裝起來,供主函數(shù)調(diào)用。
2 實驗與分析
氣體壓力閉環(huán)控制裝置已經(jīng)應(yīng)用于某型裝備故障檢測中,對高壓充氣速度進行控制,在試驗時,裝置連接在管路中,通過對電機的控制實現(xiàn)對充氣速度的調(diào)節(jié),從而完成所需試驗數(shù)據(jù)的采集。通過多次試驗,驗證了系統(tǒng)的穩(wěn)定可靠性和高精度的控制充氣速度。
3 結(jié) 論
氣體壓力閉環(huán)控制系統(tǒng)的設(shè)計在某型裝備故障檢測中已得到較好的實現(xiàn)。設(shè)計中無論是硬件還是軟件系統(tǒng)中都采用模塊化的設(shè)計方法,這使得系統(tǒng)擴展起來比較方便,系統(tǒng)可移植性高,增加了系統(tǒng)的靈活性和可靠性,具有廣泛的適應(yīng)性。坐標(biāo)系引進步進電機行程的方法,可以成功解決步進電機失步碰撞問題,能夠確保系統(tǒng)正常運行。
參考文獻
[1]李燕,郭建增,薛飛.一種步進電機控制的氣體壓力閉環(huán)控制系統(tǒng)的設(shè)計與實現(xiàn)[J].艦船防化,2009(3):40-46.
[2]毛建國,王志超,沈峘,等.進氣道流量調(diào)節(jié)閥控制裝置設(shè)計[J].傳感器與微系統(tǒng),2009(3):77-79.
[3]ICOP Technology Inc.. VDX-6354/VDX-6354-PLUS user′s manual [M]. Shenzhen: ICOP, 2008.
[4]偉恒升集團.RC 233使用說明書[M].上海:偉恒升集團,2003.
[5]周為,李玉忍,謝利理.RS 485通信中應(yīng)注意的兩個問題[J].電氣傳動自動化,2003(3):52-53.
[6]王正林,劉明.精通Matlab7.0[M].北京:電子工業(yè)出版社,2006.
[7]西安安森智能儀器有限公司.ACD-2系列數(shù)字壓力表通訊協(xié)議和相關(guān)設(shè)置[M].西安:西安安森智能儀器有限公司,2009.
[8]戢小亮.基于Matlab和VC混合編程的數(shù)字信號處理的實現(xiàn)[J].現(xiàn)代電子技術(shù),2007,30(17):107-108.
[9]趙靜,但琦,嚴(yán)尚安,等.數(shù)學(xué)建模與數(shù)學(xué)實驗[M].北京:高等教育出版社,2007.
[10]曾德惠.基于Matlab實現(xiàn)函數(shù)逼近[J].現(xiàn)代電子技術(shù),2009,32(18):141-143.