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