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