《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 面向纖維測(cè)量微操作的步進(jìn)電機(jī)控制軟件設(shè)計(jì)
面向纖維測(cè)量微操作的步進(jìn)電機(jī)控制軟件設(shè)計(jì)
www.zgbjdj.com
王曉芳,邱書(shū)波
摘要: 將步進(jìn)電機(jī)用于纖維測(cè)量系統(tǒng)的定位控制,提出一種基于Pc機(jī)和數(shù)據(jù)采集/控制卡的步進(jìn)電動(dòng)機(jī)控制方案,,并將windows多線程和高精度定時(shí)技術(shù)應(yīng)用到軟件設(shè)計(jì)中,以產(chǎn)生高穩(wěn)定度的脈沖信號(hào),,提高步進(jìn)電動(dòng)機(jī)的定位
Abstract:
Key words :

[摘要]:將步進(jìn)電機(jī)用于纖維測(cè)量系統(tǒng)的定位控制,提出一種基于Pc機(jī)和數(shù)據(jù)采集控制卡的步進(jìn)電動(dòng)機(jī)控制方案,,并將windows多線程和高精度定時(shí)技術(shù)應(yīng)用到軟件設(shè)計(jì)中,,以產(chǎn)生高穩(wěn)定度的脈沖信號(hào),提高步進(jìn)電動(dòng)機(jī)的定位精度,。文章介紹了軟件設(shè)計(jì)過(guò)程,,并給出了相應(yīng)的控制軟件界面。

[關(guān)鍵詞]:纖維測(cè)量 控制軟件 數(shù)據(jù)采集/控制卡 步進(jìn)電動(dòng)機(jī)

中圖分類號(hào):TM383.6  文獻(xiàn)標(biāo)識(shí)碼:A  文章編號(hào):1004—7018(2010)05—0060—03

 

 

 

0引言   

 

    步進(jìn)電機(jī)是一種將數(shù)字脈沖信號(hào)直接轉(zhuǎn)換成角位移或線位移的控制驅(qū)動(dòng)元件,,具有精確步進(jìn),、平滑調(diào)速以及快速起停和換相等特點(diǎn),廣泛用于速度控制和位置控制系統(tǒng),。本文將步進(jìn)電動(dòng)機(jī)用于纖維測(cè)量微操作系統(tǒng),,該系統(tǒng)主要通過(guò)控制步進(jìn)電動(dòng)機(jī)運(yùn)動(dòng)拉伸纖維,達(dá)到測(cè)量纖維張力的目的,,要求有較高定位精度,,并臣能通過(guò)軟件界面控制拉伸運(yùn)動(dòng)過(guò)程。系統(tǒng)設(shè)計(jì)的關(guān)鍵是實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)的運(yùn)動(dòng)控制,,常見(jiàn)方案有”,。:(1)工控機(jī)結(jié)合運(yùn)動(dòng)控制卡方式;(2)Pc機(jī)結(jié)合單片機(jī)最小系統(tǒng)方式,;(3)工控機(jī)結(jié)合PLC方式,。這些方案中,有的成本較高,,有的實(shí)現(xiàn)較復(fù)雜,。本文采用Pc機(jī)結(jié)合數(shù)據(jù)采集/控制卡的控制方案,,控制軟件的沒(méi)計(jì)充分利用Windows多線程和高精度定時(shí)技術(shù),,生成的進(jìn)給脈沖信號(hào)穩(wěn)定性好,步進(jìn)電動(dòng)機(jī)定位精度高,。該方案不僅可以方便地通過(guò)軟件界面控制步進(jìn)電動(dòng)機(jī)的運(yùn)動(dòng)過(guò)程,,而且可以依托Pc機(jī)和數(shù)據(jù)采集/控制卡的優(yōu)勢(shì)條件,實(shí)現(xiàn)數(shù)據(jù)采集,、處理等其他功能,。

 

 

1系統(tǒng)構(gòu)成及功能

 

     步進(jìn)電動(dòng)機(jī)控制系統(tǒng)構(gòu)成框圖如圖1所示。圖中的計(jì)算機(jī)是一臺(tái)普通PC機(jī),配有鍵盤(pán)和打印機(jī),,數(shù)據(jù)采集/控制卡插在PC機(jī)的PCI插槽中,,步進(jìn)電動(dòng)機(jī)是兩相混合式步進(jìn)電動(dòng)機(jī),其驅(qū)動(dòng)電路由廠商提供,。系統(tǒng)工作時(shí),,由Pc機(jī)上的控制軟件操作數(shù)據(jù)采集/控制卡向驅(qū)動(dòng)電路發(fā)出控制信號(hào)和脈沖信號(hào),驅(qū)動(dòng)電路將輸入信號(hào)轉(zhuǎn)換成d十,、A一,、B+、B四路輸出信號(hào),,驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī),。

 

 

    系統(tǒng)控制軟件主要功能包括:(1)控制數(shù)據(jù)采集/控制卡開(kāi)關(guān)量通道Doutl電平實(shí)現(xiàn)步進(jìn)電機(jī)的起停控制,;(2)Dour2電平實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)正反轉(zhuǎn)控制,;(3)Dout0電平生成步進(jìn)電動(dòng)機(jī)的進(jìn)給脈沖信號(hào);(4)通過(guò)改變脈沖頻率,,實(shí)現(xiàn)調(diào)速,;(5)控制數(shù)據(jù)采集/控制卡模擬量通道及A/D轉(zhuǎn)換,實(shí)現(xiàn)模擬量面向纖維測(cè)量微操作的步進(jìn)電動(dòng)機(jī)控制軟件設(shè)計(jì)信號(hào)采集,。

 

 

2關(guān)鍵技術(shù)介紹

 

2.1數(shù)據(jù)采集/控制卡

 

    系統(tǒng)采用一種國(guó)產(chǎn)的PcI總線數(shù)據(jù)采集/控制卡,,該卡具有16路開(kāi)關(guān)量輸入/輸出通道、16路模擬量輸入通道,、1個(gè)12位的AD轉(zhuǎn)換器,。使用時(shí),將數(shù)據(jù)采集/控制卡插在計(jì)算機(jī)主板上的任一PcI插槽巾,,并安裝沒(méi)備驅(qū)動(dòng)程序,。應(yīng)用程序通過(guò)動(dòng)態(tài)鏈接庫(kù)提供的庫(kù)函數(shù)訪問(wèn)數(shù)據(jù)采集/控制卡。常用的庫(kù)函數(shù)及功能如下:

 

    (1)]KP8l LocateOpen,,打開(kāi)數(shù)據(jù)采集/控制卡,;

 

    (2)KP811 c10se,關(guān)閉數(shù)據(jù)采集/控制專,;

 

    (3)KP8ll—FIFOcls,,屆I新FIFO;

 

    (4)KP811一ReadnF0,,讀HFO數(shù)據(jù),;

 

    (5)KP811_Input,開(kāi)關(guān)量輸入,;

 

    (6)KP811一Output,,開(kāi)關(guān)量輸出,。

 

    設(shè)計(jì)中最常用的庫(kù)函數(shù)是KP811 Output,該函數(shù)可直接控制某路開(kāi)關(guān)量輸出的電平,,原形如下:

 

    V0ld KP811一Output(IO  HLE hIO.shor channel,,b001 states,bool initop,,1ong val)

 

    輸入?yún)?shù)的含義:h10為打開(kāi)的數(shù)據(jù)采集/控制卡句柄,;In劬p為輸出方式選擇,邏輯值“1”時(shí),,按字節(jié)方式輸出,,邏輯值“0”時(shí),按通道方式輸出,;chan—nel為通道輸出方式下的通道號(hào),;stms為通道輸出方式下通道狀態(tài),“l”時(shí)輸出高電平,,“0”時(shí)輸出低電平,;vd用于字節(jié)方式輸出。

 

    數(shù)據(jù)采集/控制卡編程時(shí)要注意兩點(diǎn):

 

    1)首先要調(diào)用LoadⅡbrary函數(shù)鏈接數(shù)據(jù)采集/控制卡的動(dòng)態(tài)庫(kù),;

 

    2)在訪問(wèn)數(shù)據(jù)采集/控制卡前必須先打開(kāi)板卡,,訪問(wèn)結(jié)束后應(yīng)關(guān)閉板卡。

 

2.2高精度定時(shí)

 

    windows系統(tǒng)中,,實(shí)現(xiàn)高精度定時(shí)有兩種方法[4-5]:一種是采用硬件中斷,,該方法需要訪問(wèn)系統(tǒng)硬件,由于windows已經(jīng)封裝了對(duì)計(jì)算機(jī)底層硬件訪問(wèn),,實(shí)現(xiàn)起來(lái)工作量較大,,且容易產(chǎn)生不穩(wěn)定因素;另一種方法是利用cPu高性能計(jì)數(shù)器實(shí)現(xiàn)高精度定時(shí),,這種方法要求計(jì)算機(jī)從硬件上支持高精度計(jì)時(shí)器,,其定時(shí)精度和計(jì)算機(jī)的cPu有關(guān),能夠?qū)崿F(xiàn)微秒級(jí)定時(shí),。編程實(shí)現(xiàn)時(shí)需要用到兩個(gè)函數(shù):

 

    (1)QueryPerforanceFrequency,,讀計(jì)數(shù)器頻率;

 

    (2)QlleryPerformanceer,,讀計(jì)數(shù)器的計(jì)數(shù)值,。

 

    通過(guò)調(diào)用上述兩個(gè)函數(shù)結(jié)合while循環(huán)及可實(shí)現(xiàn)高精度定時(shí),定時(shí)程序流程如圖2所示,。

 

 

2.3多線程

 

    在32位windows編程環(huán)境中,,可利用多線程技術(shù)可實(shí)現(xiàn)多項(xiàng)任務(wù)的并行運(yùn)行。多線程程序運(yùn)行時(shí),,操作系統(tǒng)根據(jù)線程的優(yōu)先級(jí)向每個(gè)線程分配時(shí)間片,,通過(guò)時(shí)間片的輪換,實(shí)現(xiàn)多個(gè)線程同時(shí)工作,。MFc區(qū)分兩類線程:用戶界面線程和輔助線程,。用戶界面線程有消息循環(huán),能夠創(chuàng)建窗口并處理發(fā)給這個(gè)窗口的消息,;輔助線程沒(méi)有消息循環(huán),,適合于執(zhí)行后臺(tái)任務(wù)。

 

    windows應(yīng)用程序以單個(gè)用戶界面線程(主線程)作為生命周期的開(kāi)始,,主線程可以起動(dòng)輔助線程,。輔助線程用一個(gè)全局線程函數(shù)表示,當(dāng)線程起動(dòng)后,,執(zhí)行線程函數(shù),,線程運(yùn)行。線程函數(shù)代碼執(zhí)行結(jié)束后,,線程會(huì)自行終止,,輔助線程運(yùn)行時(shí),可以掛起或強(qiáng)行終止,。常用的編程函數(shù)有[6]:

 

(1)AfxB,。gin_rhread,創(chuàng)建并起動(dòng)線程,;

 

    (2)A&EndThread,,強(qiáng)行終止線程并釋放線程資源;

 

    (3)suspendThread,,掛起線程,;

 

    (4)Resumelrhread,繼續(xù)運(yùn)行掛起的線程,。

 

    在多線程應(yīng)用程序中,,線程運(yùn)行是相互獨(dú)立的,必須采用線程同步技術(shù)使多個(gè)線程正常同步工作,。windows提供了臨界區(qū),、互斥量、信號(hào)燈等多種線程同步技術(shù),。其中臨界區(qū)是避免多個(gè)線程同時(shí)訪問(wèn)共享數(shù)據(jù)區(qū)而引起沖突的有效方法,。MFc中通過(guò)創(chuàng)建臨界區(qū)類ccTit·calsection的實(shí)例來(lái)創(chuàng)建一個(gè)臨界區(qū)對(duì)象,線程通過(guò)臨界區(qū)對(duì)象調(diào)用函數(shù)L0ck和un—L0ck獲取和釋放對(duì)共享數(shù)據(jù)區(qū)的控制權(quán),。

 

 

3控制軟件設(shè)計(jì)

 

3.1設(shè)計(jì)思路  

 

    Visual c++6,。0是當(dāng)今比較流行的一種可視化編程環(huán)境,編寫(xiě)的代碼運(yùn)行速度快,、效率高,。本系統(tǒng)控制軟件采用Vc++6 0編程環(huán)境設(shè)計(jì),,實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)的正反轉(zhuǎn)控制、起停(使能)控制,、速度控制豎以及產(chǎn)生進(jìn)給脈沖信號(hào)等功能,。  

 

    根據(jù)系統(tǒng)調(diào)速要求,進(jìn)給脈沖頻率有時(shí)會(huì)超過(guò)1 kH:,,且脈沖信號(hào)的穩(wěn)定性對(duì)步進(jìn)電動(dòng)機(jī)的定位精度也有直接影響,。因此,系統(tǒng)采用高度定時(shí)技術(shù)產(chǎn)生脈沖信號(hào),。

 

    如上所述,,利用CPU高性能計(jì)數(shù)器可實(shí)現(xiàn)高精度定時(shí),這種方法一般由While循環(huán)結(jié)構(gòu)程序?qū)崿F(xiàn),,若軟件采用單線程設(shè)計(jì),,則循環(huán)程序運(yùn)行時(shí)系統(tǒng)將無(wú)法響應(yīng)其他操作,即脈沖產(chǎn)生和其他操作不能并行進(jìn)行,,因此,,軟件設(shè)計(jì)必須采用多線程技術(shù),即除了主線程外,,再創(chuàng)建一個(gè)輔助線程,。步進(jìn)電動(dòng)機(jī)的起停控制,、正反轉(zhuǎn)控制等功能由主線程完成,,脈沖信號(hào)的產(chǎn)生作為后臺(tái)任務(wù)放在輔助線程中完成。這樣既能產(chǎn)生穩(wěn)定的脈沖信號(hào),,又不影響其他功能的執(zhí)行,。

 

3.2具體功能實(shí)現(xiàn)

 

3 2 1起停控制

 

    步進(jìn)電動(dòng)機(jī)的起停由數(shù)據(jù)采集/控制卡的開(kāi)關(guān)量通道Doutl的電平?jīng)Q定,,程序調(diào)用KPSll一Output函數(shù)向Doutl通道輸出“0”,,起動(dòng)電機(jī),輸出“1”,,停止電機(jī),。

 

3.2.2正反轉(zhuǎn)控制

 

    步進(jìn)電動(dòng)機(jī)的正反轉(zhuǎn)由數(shù)據(jù)采集/控制卡的開(kāi)關(guān)量通道Dout2的電平?jīng)Q定,程序調(diào)用KP811一Out—put函數(shù)向Dout2通道輸出“0”,,電機(jī)正傳,,輸出“1”,電機(jī)反轉(zhuǎn),。

 

3 2 3脈沖信號(hào)生成與控制

 

    程序控制數(shù)據(jù)采集/控制卡的開(kāi)關(guān)量通道Dour0,,使其周期性地輸出高低電平,即可產(chǎn)生周期性的脈沖信號(hào),。脈沖信號(hào)的產(chǎn)生主要由輔助線程實(shí)現(xiàn),。輔助線程由一段While循環(huán)程序構(gòu)成,,循環(huán)條件由是否要產(chǎn)生脈沖信號(hào)決定,在循環(huán)體內(nèi)部,,先調(diào)用高精度定時(shí)程序,,定時(shí)程序結(jié)束后,,再調(diào)用KP81一Output函數(shù)將數(shù)據(jù)采集/控制卡的開(kāi)關(guān)量輸出通道Dout0取反,。其程序流程如圖3所示。

 

 

   脈沖起動(dòng)和終止由主線程控制,。當(dāng)脈沖起動(dòng)時(shí),,主線程先將循環(huán)條件設(shè)置為“真”,再起動(dòng)輔助線程,,這時(shí),,輔助線程及While循環(huán)將一直運(yùn)行,數(shù)據(jù)采集/控制卡的Dour0通道將以預(yù)定的時(shí)間間隔(半個(gè)脈沖周期)交替出現(xiàn)高電平和低電平,,從而輸出周期性脈沖信號(hào),。當(dāng)終止脈沖信號(hào)時(shí),主線程將循環(huán)條件設(shè)置為“假”,,While循環(huán)結(jié)束,,輔助線程自然終止,脈沖停止,。脈沖信號(hào)產(chǎn)生及控制代碼如下:

 

    (1)產(chǎn)生脈沖的輔助線程函數(shù)

 

 

 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。