[摘要]:將步進電機用于纖維測量系統(tǒng)的定位控制,提出一種基于Pc機和數(shù)據(jù)采集/控制卡的步進電動機控制方案,并將windows多線程和高精度定時技術應用到軟件設計中,以產(chǎn)生高穩(wěn)定度的脈沖信號,提高步進電動機的定位精度。文章介紹了軟件設計過程,并給出了相應的控制軟件界面。
[關鍵詞]:纖維測量 控制軟件 數(shù)據(jù)采集/控制卡 步進電動機
中圖分類號:TM383.6 文獻標識碼:A 文章編號:1004—7018(2010)05—0060—03
0引言
步進電機是一種將數(shù)字脈沖信號直接轉(zhuǎn)換成角位移或線位移的控制驅(qū)動元件,具有精確步進、平滑調(diào)速以及快速起停和換相等特點,廣泛用于速度控制和位置控制系統(tǒng)。本文將步進電動機用于纖維測量微操作系統(tǒng),該系統(tǒng)主要通過控制步進電動機運動拉伸纖維,達到測量纖維張力的目的,要求有較高定位精度,并臣能通過軟件界面控制拉伸運動過程。系統(tǒng)設計的關鍵是實現(xiàn)步進電動機的運動控制,常見方案有”。:(1)工控機結合運動控制卡方式;(2)Pc機結合單片機最小系統(tǒng)方式;(3)工控機結合PLC方式。這些方案中,有的成本較高,有的實現(xiàn)較復雜。本文采用Pc機結合數(shù)據(jù)采集/控制卡的控制方案,控制軟件的沒計充分利用Windows多線程和高精度定時技術,生成的進給脈沖信號穩(wěn)定性好,步進電動機定位精度高。該方案不僅可以方便地通過軟件界面控制步進電動機的運動過程,而且可以依托Pc機和數(shù)據(jù)采集/控制卡的優(yōu)勢條件,實現(xiàn)數(shù)據(jù)采集、處理等其他功能。
1系統(tǒng)構成及功能
步進電動機控制系統(tǒng)構成框圖如圖1所示。圖中的計算機是一臺普通PC機,配有鍵盤和打印機,數(shù)據(jù)采集/控制卡插在PC機的PCI插槽中,步進電動機是兩相混合式步進電動機,其驅(qū)動電路由廠商提供。系統(tǒng)工作時,由Pc機上的控制軟件操作數(shù)據(jù)采集/控制卡向驅(qū)動電路發(fā)出控制信號和脈沖信號,驅(qū)動電路將輸入信號轉(zhuǎn)換成d十、A一、B+、B四路輸出信號,驅(qū)動步進電動機。
系統(tǒng)控制軟件主要功能包括:(1)控制數(shù)據(jù)采集/控制卡開關量通道Doutl電平實現(xiàn)步進電機的起??刂疲?2)Dour2電平實現(xiàn)步進電動機正反轉(zhuǎn)控制;(3)Dout0電平生成步進電動機的進給脈沖信號;(4)通過改變脈沖頻率,實現(xiàn)調(diào)速;(5)控制數(shù)據(jù)采集/控制卡模擬量通道及A/D轉(zhuǎn)換,實現(xiàn)模擬量面向纖維測量微操作的步進電動機控制軟件設計信號采集。
2關鍵技術介紹
2.1數(shù)據(jù)采集/控制卡
系統(tǒng)采用一種國產(chǎn)的PcI總線數(shù)據(jù)采集/控制卡,該卡具有16路開關量輸入/輸出通道、16路模擬量輸入通道、1個12位的AD轉(zhuǎn)換器。使用時,將數(shù)據(jù)采集/控制卡插在計算機主板上的任一PcI插槽巾,并安裝沒備驅(qū)動程序。應用程序通過動態(tài)鏈接庫提供的庫函數(shù)訪問數(shù)據(jù)采集/控制卡。常用的庫函數(shù)及功能如下:
(1)]KP8l LocateOpen,打開數(shù)據(jù)采集/控制卡;
(2)KP811 c10se,關閉數(shù)據(jù)采集/控制專;
(3)KP8ll—FIFOcls,屆I新FIFO;
(4)KP811一ReadnF0,讀HFO數(shù)據(jù);
(5)KP811_Input,開關量輸入;
(6)KP811一Output,開關量輸出。
設計中最常用的庫函數(shù)是KP811 Output,該函數(shù)可直接控制某路開關量輸出的電平,原形如下:
V0ld KP811一Output(IO HLE hIO.shor channel,b001 states,bool initop,1ong val)
輸入?yún)?shù)的含義:h10為打開的數(shù)據(jù)采集/控制卡句柄;In劬p為輸出方式選擇,邏輯值“1”時,按字節(jié)方式輸出,邏輯值“0”時,按通道方式輸出;chan—nel為通道輸出方式下的通道號;stms為通道輸出方式下通道狀態(tài),“l”時輸出高電平,“0”時輸出低電平;vd用于字節(jié)方式輸出。
數(shù)據(jù)采集/控制卡編程時要注意兩點:
1)首先要調(diào)用LoadⅡbrary函數(shù)鏈接數(shù)據(jù)采集/控制卡的動態(tài)庫;
2)在訪問數(shù)據(jù)采集/控制卡前必須先打開板卡,訪問結束后應關閉板卡。
2.2高精度定時
windows系統(tǒng)中,實現(xiàn)高精度定時有兩種方法[4-5]:一種是采用硬件中斷,該方法需要訪問系統(tǒng)硬件,由于windows已經(jīng)封裝了對計算機底層硬件訪問,實現(xiàn)起來工作量較大,且容易產(chǎn)生不穩(wěn)定因素;另一種方法是利用cPu高性能計數(shù)器實現(xiàn)高精度定時,這種方法要求計算機從硬件上支持高精度計時器,其定時精度和計算機的cPu有關,能夠?qū)崿F(xiàn)微秒級定時。編程實現(xiàn)時需要用到兩個函數(shù):
(1)QueryPerforanceFrequency,讀計數(shù)器頻率;
(2)QlleryPerformanceer,讀計數(shù)器的計數(shù)值。
通過調(diào)用上述兩個函數(shù)結合while循環(huán)及可實現(xiàn)高精度定時,定時程序流程如圖2所示。
2.3多線程
在32位windows編程環(huán)境中,可利用多線程技術可實現(xiàn)多項任務的并行運行。多線程程序運行時,操作系統(tǒng)根據(jù)線程的優(yōu)先級向每個線程分配時間片,通過時間片的輪換,實現(xiàn)多個線程同時工作。MFc區(qū)分兩類線程:用戶界面線程和輔助線程。用戶界面線程有消息循環(huán),能夠創(chuàng)建窗口并處理發(fā)給這個窗口的消息;輔助線程沒有消息循環(huán),適合于執(zhí)行后臺任務。
windows應用程序以單個用戶界面線程(主線程)作為生命周期的開始,主線程可以起動輔助線程。輔助線程用一個全局線程函數(shù)表示,當線程起動后,執(zhí)行線程函數(shù),線程運行。線程函數(shù)代碼執(zhí)行結束后,線程會自行終止,輔助線程運行時,可以掛起或強行終止。常用的編程函數(shù)有[6]:
(1)AfxB。gin_rhread,創(chuàng)建并起動線程;
(2)A&EndThread,強行終止線程并釋放線程資源;
(3)suspendThread,掛起線程;
(4)Resumelrhread,繼續(xù)運行掛起的線程。
在多線程應用程序中,線程運行是相互獨立的,必須采用線程同步技術使多個線程正常同步工作。windows提供了臨界區(qū)、互斥量、信號燈等多種線程同步技術。其中臨界區(qū)是避免多個線程同時訪問共享數(shù)據(jù)區(qū)而引起沖突的有效方法。MFc中通過創(chuàng)建臨界區(qū)類ccTit·calsection的實例來創(chuàng)建一個臨界區(qū)對象,線程通過臨界區(qū)對象調(diào)用函數(shù)L0ck和un—L0ck獲取和釋放對共享數(shù)據(jù)區(qū)的控制權。
3控制軟件設計
3.1設計思路
Visual c++6。0是當今比較流行的一種可視化編程環(huán)境,編寫的代碼運行速度快、效率高。本系統(tǒng)控制軟件采用Vc++6 0編程環(huán)境設計,實現(xiàn)步進電動機的正反轉(zhuǎn)控制、起停(使能)控制、速度控制豎以及產(chǎn)生進給脈沖信號等功能。
根據(jù)系統(tǒng)調(diào)速要求,進給脈沖頻率有時會超過1 kH:,且脈沖信號的穩(wěn)定性對步進電動機的定位精度也有直接影響。因此,系統(tǒng)采用高度定時技術產(chǎn)生脈沖信號。
如上所述,利用CPU高性能計數(shù)器可實現(xiàn)高精度定時,這種方法一般由While循環(huán)結構程序?qū)崿F(xiàn),若軟件采用單線程設計,則循環(huán)程序運行時系統(tǒng)將無法響應其他操作,即脈沖產(chǎn)生和其他操作不能并行進行,因此,軟件設計必須采用多線程技術,即除了主線程外,再創(chuàng)建一個輔助線程。步進電動機的起??刂?、正反轉(zhuǎn)控制等功能由主線程完成,脈沖信號的產(chǎn)生作為后臺任務放在輔助線程中完成。這樣既能產(chǎn)生穩(wěn)定的脈沖信號,又不影響其他功能的執(zhí)行。
3.2具體功能實現(xiàn)
3 2 1起??刂?/font>
步進電動機的起停由數(shù)據(jù)采集/控制卡的開關量通道Doutl的電平?jīng)Q定,程序調(diào)用KPSll一Output函數(shù)向Doutl通道輸出“0”,起動電機,輸出“1”,停止電機。
3.2.2正反轉(zhuǎn)控制
步進電動機的正反轉(zhuǎn)由數(shù)據(jù)采集/控制卡的開關量通道Dout2的電平?jīng)Q定,程序調(diào)用KP811一Out—put函數(shù)向Dout2通道輸出“0”,電機正傳,輸出“1”,電機反轉(zhuǎn)。
3 2 3脈沖信號生成與控制
程序控制數(shù)據(jù)采集/控制卡的開關量通道Dour0,使其周期性地輸出高低電平,即可產(chǎn)生周期性的脈沖信號。脈沖信號的產(chǎn)生主要由輔助線程實現(xiàn)。輔助線程由一段While循環(huán)程序構成,循環(huán)條件由是否要產(chǎn)生脈沖信號決定,在循環(huán)體內(nèi)部,先調(diào)用高精度定時程序,定時程序結束后,再調(diào)用KP81一Output函數(shù)將數(shù)據(jù)采集/控制卡的開關量輸出通道Dout0取反。其程序流程如圖3所示。
脈沖起動和終止由主線程控制。當脈沖起動時,主線程先將循環(huán)條件設置為“真”,再起動輔助線程,這時,輔助線程及While循環(huán)將一直運行,數(shù)據(jù)采集/控制卡的Dour0通道將以預定的時間間隔(半個脈沖周期)交替出現(xiàn)高電平和低電平,從而輸出周期性脈沖信號。當終止脈沖信號時,主線程將循環(huán)條件設置為“假”,While循環(huán)結束,輔助線程自然終止,脈沖停止。脈沖信號產(chǎn)生及控制代碼如下:
(1)產(chǎn)生脈沖的輔助線程函數(shù)