纖維纏繞張力控制系統新技術研究
1 前言
纖維纏繞是當前樹脂基復合材料成型的主要工藝手段之一,而纏繞張力是纖維纏繞工藝中重要的控制參數,直接影響到纏繞制品的質量[1~4]。因此張力控制系統是數控纏繞機的必備的輔助設備。文獻[5]指出,張力控制系統的性能很大程度上取決于應用軟件的應用與開發。為了實時、準確地獲得張力數據,了解紗線張力變化,并根據張力控制效果組織纏繞工藝,保證纏繞制品質量,迫切需要研制出適合自身的纖維纏繞張力控制系統。
在大多數張力控制系統軟件中,通常使用Win-dows定時器來完成張力數據的采集與處理工作。但是Windows定時器是通過向CPU發送WM_TIM-ER消息來實現一定精度的定時,且其優先級別非常低,使得定時消息得不到及時響應,嚴重影響了張力控制系統的實時性和可靠性。因此,在精密張力控制系統中,提高實時性、可靠性是系統軟件的迫切要求,但是Windows并不是實時操作系統,它是基于消息驅動機制,不能提供足夠的實時處理功能,因而在Windows環境下開發張力控制系統需要采用一些技術,如多媒體定時器、多線程等。
本文在VC++開發環境下,研究建立PMAC與上位機之間通訊的方法,并結合多線程技術和多媒體定時器技術,設計出實時張力采集與數據存儲、處理系統,有效地解決了在高速、長時間張力采集控制過程中系統的實時性和可靠性問題。
2 張力控制系統硬件構成
本系統采用PMAC(Programmable Multi-Axis Controller)作為下位機,工控機作為上位機的并行雙CPU結構。系統由開卷部分、控制部分(包括控制器和執行元件)、檢測部分(或張力采集部分)及其它輔助裝置組成,其結構如圖1所示。其中,采用擺桿式張力傳感器實時檢測纖維張力,直流力矩電機作為執行元件[6~8]。實時纖維張力值由PMAC進行采集并以ISA總線通訊方式傳遞給上位機,在上位機中完成與張力設定值的比較,并進行相關的控制運算后,運算結果再次以通訊方式返回PMAC,由PMAC調整其控制端輸出電壓,PMAC輸出電壓經過力矩電機驅動器功率放大后去修正力矩電機的輸出力矩,實現對纖維張力的實時控制。

3 張力控制系統軟件主要功能的實現 [-page-]
為了使張力控制系統軟件易于維護、具有可重構性和可擴充性,采用VC++編制,按照模塊化設計思想設計,實現系統多任務的要求,軟件主要結構如圖2所示。它主要由初始化模塊、數據采集與處理模塊、系統調試模塊、文件操作模塊組成,其中數據采集與處理模塊是本系統軟件的關鍵部分。在該模塊的設計過程中,利用多媒體定時器、多線程技術以提高系統的實時性和可靠性;利用雙緩沖區存儲技術提高存儲數據的效率;利用“雙重緩沖”技術解決實時數據動態顯示時的屏幕閃爍現象。

3.1 上下位機通訊的建立以及采集方式的選擇
在張力控制系統中,上位機與PMAC之間建立起通訊是在上位機中實現對張力實時監控的要條件。為了便于PMAC與上層Windows應用程序之間進行通信,Delta Tau公司提供了PComm32通信驅動程序作為上層應用程序與PMAC之間通信的橋梁[9]。建立通訊主要用到OpenPmacDevice和ClosePmacDevice這兩個PComm32函數,前一個函數為應用程序同PMAC交換數據開辟通道,用于應用程序的開始,后一個函數用來關閉同PMAC通信時開辟的通道,釋放系統的資源,用于應用程序的結束處。
PMAC數據采集方式主要有兩種[10,11]:①從緩沖區中獲得采集數據;②從I/O及運動寄存器中直接采集數據。前一種方式比較復雜,而后一種方式,用戶不需額外指定采集源,不必關心數據是如何存入、如何譯碼的,不僅提高了系統軟件的穩定性,而且大大簡化了數據采集程序開發的難度。因此本文采用了第二種數據采集方式。
3.2 多媒體定時器的引入
在張力控制過程中,需要采集實時張力來完成張力控制運算、分析控制效果的好壞以及系統運行是否正常,因此采集時間的精確度是整個控制系統得以正常運行的關鍵。而Windows是基于消息機制的系統,任何事件的執行都是通過發送和接收消息來完成的。多個消息按隊列執行,這樣就帶來了一些問題,如一旦計算機的CPU被某個進程占用或系統資源緊張時,發送到消息隊列中的消息就被暫時掛起,得不到實時處理[12]。在VC++中,雖然基于WM_TIMER消息的普通定時器定時方法非常簡單,但它在多任務操作系統中的優先級很低,致使其定時精度有限,只能進行簡單的時間控制,不能滿足本系統對定時器定時精度的要求。測試結果如表1所示(定時精度為60ms)。

對于控制精度要求較高的張力控制系統,必須考慮用更高精度的定時器來取代。Windows的多媒體定時器小時間分辨率理論上可以達到1ms,完全可以滿足張力控制系統的實時性要求。采集時間的精確度對本系統軟件至關重要,因此必須對多媒體定時器的定時精度進行驗證測試,確保數據采集能在給定的時間內完成。驗證測試時利用了Win-dowsAPI函數timeGetTime(),其返回值為計算機啟動后經歷的時間,單位為ms(毫秒)。在開始采集和結束采集消息響應函數中調用該函數,兩次時間數據的差值就是采集時間,并在程序中定義一個全局變量用來記錄采集的次數,這樣采集時間除以采集次數就得到平均每次采集時間,測試結果如表2所示(定時精度為10ms)。結果表明,多媒體定時器對實現較高精度定時是比較理想的工具,其精度也十分可靠,平均誤差小于0.1%,完全能夠滿足張力控制系統對定時精度的要求。 [-page-]

3.3 利用多線程實現數據采集與處理
張力控制系統軟件作為實時控制軟件,其實時性和可靠性是衡量控制軟件性能的重要技術指標。在VC++開發平臺下,采用Windows操作系統下的多線程技術,以保證控制系統軟件的實時性和可靠性。
對于Windows應用程序來說,線程可分為用戶界面線程和工作線程兩種,用戶界面線程用于處理用戶輸入,而工作線程則被用于完成各種不需要用戶干涉的后臺操作,如文件讀寫等操作[13]。本系統設計了數據采集與控制線程、數據監控線程、數據存儲線程、人機交互線程這幾個線程,其中數據采集線程與控制線程和數據存儲線程屬于工作線程,無窗口操作,如此便保障數據采集實時性,避免數據流的堵塞,數據監控線程用于在監控屏幕上實現張力數值實時顯示功能。
數據采集與控制線程配合多媒體定時器等時間間隔采集數據完成后,數據存儲線程和數據監控線程才能讀取采集回來的數據進行相應的操作,同樣只有當數據讀取完成后數據采集線程才能重新進行寫數據操作,因此數據采集與控制線程和數據監控線程以及數據存儲線程間有著數據共享和同步問題。在本系統中,共享數據的同步是通過事件對象來實現的。數據存儲線程和數據監控線程初不做任何工作,調用Win32 API函數WaitForSingleObject進入等待狀態,此時它不消耗CPU任何資源,即可保證數據采集與控制線程有充分的運行機會。在數據采集與控制線程取得指定長度的數據送到用戶定義的存儲空間后,調用Win32 API函數SetEvent將指定事件消息發送給數據存儲線程和數據監控線程,數據存儲線程和監控線程立即恢復運行狀態,迅速對這批數據進行相關處理,如窗口繪制波形、存盤等操作。張力控制系統多線程工作示意圖如圖3所示。

3.4 實時數據存儲
若在張力控制過程中每采集一點數據就存儲到磁盤上,將頻繁進行磁盤操作,既占用CPU資源,又影響磁盤壽命。而如果等數據采集全部結束后再存儲,則需要占用大量內存,必將會影響系統其它程序的運行,因此本系統采用一種稱為雙緩沖區動態存儲技術來解決數據存儲中所遇到的問題。
雙緩沖區技術是在上位機內存中創建一個公有緩沖區,它由兩個大小相同、且連續的子緩沖區組成,用于暫存采集到的數據。當采集完一次后就將采集的數據放入緩沖區,并將緩沖區指針加1,當一個子緩沖區全部填滿后,將緩沖區指針指向另一個緩沖區的開始,如此循環,后讀入的數據覆蓋掉以前的數據。
3.5 實時數據的動態曲線顯示
為便于觀察張力控制過程,了解張力控制的效果,需要將采集數據以曲線形式在屏幕上動態地顯示出來。在繪圖過程中,當窗口由于任何原因需要重繪時,由于繪圖背景與繪圖內容反差過大,使得顯示窗口出現明顯的閃爍[14]。通常解決這個問題采用“兩次繪圖法”[15],先利用R2_XORPEN繪圖模式繪圖以擦掉以前的圖形,然后再重新設置當前繪圖模式為R2_COPYPEN,繪制新的圖形。但是該方式需要兩次全面繪圖,耗費時間不短,其消除閃爍效果有限。
為解決上述問題,本系統軟件采用“雙重緩沖”技術,先把要顯示的圖形在內存中繪制好,形成一幅位圖,然后再一次性地將內存中的圖形逐點覆蓋到屏幕上去。因為顯示圖形是在看不見的內存中繪制的,而且這是個非常快、規整的內存拷貝過程,所以無論用多么反差大的背景色對以前圖形進行擦除,屏幕都不會出現閃爍現象。當貼到屏幕上時,因為內存中終的圖形與屏幕顯示圖形差別很小,從而基本消除了閃爍現象。實驗證明,這樣繪制出來的圖形流暢,視覺效果很好。實時張力動態曲線顯示如圖4所示。

4 結語
本文研究了張力控制系統中下位機PMAC與上位機IPC之間通訊建立的方法以及如何實時長時間連續地進行張力數據采集與處理的相關技術。在張力控制系統中,實時性和精確性是影響系統功能的關鍵技術,利用多媒體定時器和多線程技術可提高數據采集的實時性和精確性;提出一種解決實時張力動態曲線顯示過程中出現“閃爍”現象的方法。該張力控制系統經現場運行結果表明,所編寫的數據采集程序高速準確、性能可靠,對相關的數據采集系統也有一定的參考價值,而且本軟件具有操作簡便、功能齊全、人機界面友好等特點,為實現精密張力控制創造了良好的條件。
參考文獻
[1] 尹秀云,楊德旭.纖維纏繞成型工藝中張力控制系統的研究[J].纖維復合材料,2005,3:47-48.
[2] 白俠,李輔安,李崇俊,王增加.纖維單向纏繞成型錐形殼體的研究[J].玻璃鋼/復合材料,2007,(5):39-42.
[3] 朱松青.數控纖維纏繞機精密張力控制系統[D].東南大學,2003.
[4] 杜巍,肖軍,文立偉.新型纖維纏繞張力控制系統研究[J].玻璃鋼/復合材料,2006,(4):35-37.
[5] 王春香,賈延林,王永章,趙萬生.精密張力控制系統數據采集技術[J].電子測量技術,1999,2:35-36.
[6] 賈曉寧,劉士華.CCFW的一種新型張力控制方法研究[J].纖維復合材料,2002,(2):28-29.
[7] 李軍英,王桂英.8098單片機控制纖維張力器的研制[J].纖維復合材料,1997,(2):26-28.
[8] 王俊霞,史耀耀,周云端,張曉輝.數控布帶纏繞機的新型張力控制系統[J].機床與液壓,2006,(11):186-188.
[9] DELTA TAU Data System Inc. PMAC USER’S MANUAL[M].USA:DELTA TAU Data System Inc,1999.
[10] 蘭光明,韓秋實,孫志永.VC環境下的PMAC數據實時采集與顯示[J].北京機械工業學院學報,2004,19(1):61-65.
[11] 彭寶營,韓秋實,孫志永.基于PMAC的數控機床數據實時采集的研究[J].微計算機信息,2007,23:237-239.
[12] 何斌,耿春萍.多媒體時鐘解決實時控制系統的定時[J].飛行器測控學報,2006,25(3):86-89.
[13] 姚領田.精通MFC程序設計[M].北京:郵電出版社,2006.
[14] 鄧在雄,趙惠清.數據實時采集與處理系統軟件開發中若干問題的研究[J].北京化工大學學報,2004,31(6):101-103.
[15] 張衛鋼,陳文斌.利用VC++實現接收數據到曲線的轉換及其動態顯示[J].工業控制計算機,2003,16(10):52-53.










































