VXD開(kāi)發(fā)技術(shù)在運(yùn)動(dòng)控制卡中的應(yīng)用

作者: 2013年07月22日 來(lái)源: 瀏覽量:
字號(hào):T | T
1.VXD開(kāi)發(fā)技術(shù)簡(jiǎn)介虛擬設(shè)備驅(qū)動(dòng)程序(VirtualDeviceDriver)簡(jiǎn)稱(chēng)VXD,是用來(lái)擴(kuò)展Windows操作系統(tǒng)功能的一類(lèi)程序。VXD主要用來(lái)支持硬件設(shè)備的管理,它以特殊的DLL形式鏈接到Windows操作系統(tǒng)的核心層(ring0),可以解
 1. VXD開(kāi)發(fā)技術(shù)簡(jiǎn)介

虛擬設(shè)備驅(qū)動(dòng)程序(Virtual Device Driver)簡(jiǎn)稱(chēng)VXD,是用來(lái)擴(kuò)展Windows操作系統(tǒng)功能的一類(lèi)程序。VXD主要用來(lái)支持硬件設(shè)備的管理,它以特殊的DLL形式鏈接到Windows操作系統(tǒng)的核心層(ring 0),可以解決許多不能在一般應(yīng)用層(ring 3)編程處理的一系列問(wèn)題,如對(duì)硬件中斷等的處理。

VXD廣泛應(yīng)用于Microsoft公司推出的Windows 9X操作系統(tǒng)各個(gè)版本,許多基于Windows平臺(tái)的硬件設(shè)備驅(qū)動(dòng)程序都采用了VXD編程。

VXD編程由于涉及到Windows的底層結(jié)構(gòu),因此開(kāi)發(fā)工作難度比較大。以前的VXD全部用匯編語(yǔ)言編寫(xiě),并且需要對(duì)Windows底層結(jié)構(gòu)有相當(dāng)?shù)牧私?,開(kāi)發(fā)工作量比較大。許多公司為此推出了不同的VXD開(kāi)發(fā)工具,其中比較著名的是美國(guó)Vireo公司推出的VtoolsD開(kāi)發(fā)工具包,提供了對(duì)VXD編程的豐富的C++類(lèi)庫(kù)的支持,大大提高了開(kāi)發(fā)此類(lèi)程序的效率。

2.運(yùn)動(dòng)控制卡驅(qū)動(dòng)程序的特點(diǎn)

采用計(jì)算機(jī)進(jìn)行運(yùn)動(dòng)控制具有極大的靈活性。通過(guò)編寫(xiě)不同的程序可以適應(yīng)不同的控制系統(tǒng)的需要,同時(shí)借助于計(jì)算機(jī)高速運(yùn)算能力和巨大的存儲(chǔ)能力可以完成許多復(fù)雜的功能,如圓弧插補(bǔ)甚至空間曲面的加工等,并且能夠以圖形方式直觀(guān)地模擬顯示加工過(guò)程。

運(yùn)動(dòng)控制卡作為關(guān)鍵部分,其硬件及驅(qū)動(dòng)程序?qū)φ麄€(gè)控制系統(tǒng)的性能起著極其重要的作用。它負(fù)責(zé)將運(yùn)動(dòng)指令轉(zhuǎn)換成相應(yīng)的脈沖送到執(zhí)行機(jī)構(gòu)產(chǎn)生運(yùn)動(dòng)。

從通用性角度考慮,運(yùn)動(dòng)控制卡驅(qū)動(dòng)程序應(yīng)該提供比較完整的運(yùn)動(dòng)控制函數(shù)庫(kù),該函數(shù)庫(kù)應(yīng)該能夠執(zhí)行從單軸直線(xiàn)運(yùn)動(dòng)到多軸聯(lián)動(dòng),從直線(xiàn)段插補(bǔ)到圓弧插補(bǔ)甚至螺旋線(xiàn)插補(bǔ)等常用的運(yùn)動(dòng)指令。特別是在加工由多條線(xiàn)段和圓弧組成的復(fù)雜形狀工件時(shí),驅(qū)動(dòng)程序應(yīng)能保證加工連續(xù)性。由于計(jì)算機(jī)操作系統(tǒng)早已由DOS轉(zhuǎn)向Windows,而Windows操作系統(tǒng)屬于多任務(wù)操作系統(tǒng),因此在開(kāi)發(fā)Windows平臺(tái)下運(yùn)動(dòng)控制卡驅(qū)動(dòng)程序時(shí)還應(yīng)注意在保證指令連續(xù)的前提下盡量減少對(duì)CPU等系統(tǒng)資源的占用,以保證其它任務(wù)能夠正常執(zhí)行。而過(guò)去采用運(yùn)動(dòng)狀態(tài)查詢(xún)方式判斷上一條運(yùn)動(dòng)指令控制的軸是否已經(jīng)進(jìn)給完畢則很難滿(mǎn)足這種要求。因此有必要采用其它方式解決這個(gè)問(wèn)題。中斷處理配合指令緩沖區(qū)可以很好地解決這個(gè)問(wèn)題。

對(duì)于中斷的處理,在DOS平臺(tái)下比較容易實(shí)現(xiàn)。因?yàn)镈OS操作系統(tǒng)中斷編程是開(kāi)放的,程序員可以任意修改中斷向量來(lái)處理自己的中斷服務(wù)程序。但在Windows平臺(tái)下,為了系統(tǒng)的穩(wěn)定,操作系統(tǒng)對(duì)一般的應(yīng)用程序(ring 3層)并未完全開(kāi)放中斷編程。然而由于設(shè)備驅(qū)動(dòng)程序運(yùn)行在操作系統(tǒng)底層(ring 0層),因此,我們可以借助于VXD編程來(lái)實(shí)現(xiàn)中斷方式下工作的運(yùn)動(dòng)控制卡驅(qū)動(dòng)程序。

3.采用VXD技術(shù)開(kāi)發(fā)運(yùn)動(dòng)控制卡驅(qū)動(dòng)程序

VXD運(yùn)行在Windows操作系統(tǒng)的底層,借助于VtoolsD等開(kāi)發(fā)工具,我們可以比較容易地在中斷方式下實(shí)現(xiàn)運(yùn)動(dòng)控制。

為了使用方便,運(yùn)動(dòng)函數(shù)庫(kù)中各運(yùn)動(dòng)指令對(duì)應(yīng)的接口函數(shù)以Windows標(biāo)準(zhǔn)的動(dòng)態(tài)鏈接庫(kù)(DLL)形式封裝,標(biāo)準(zhǔn)的DLL工作在ring 3層,而VXD工作在ring 0層,因此需要在DLL中加載VXD,對(duì)運(yùn)動(dòng)指令也需要分層進(jìn)行處理。

為了保證運(yùn)動(dòng)指令的連續(xù)性,有必要采用指令緩沖區(qū)來(lái)配合運(yùn)動(dòng)中斷。

通過(guò)DLL接口函數(shù)接收的運(yùn)動(dòng)指令被壓入DLL中的指令緩沖區(qū),相應(yīng)的指令處理線(xiàn)程被激活,對(duì)一級(jí)運(yùn)動(dòng)指令進(jìn)行處理,處理結(jié)果通過(guò)DLL與VXD之間的接口壓入位于VXD中的底層緩沖區(qū)。

通過(guò)運(yùn)動(dòng)控制卡的硬件設(shè)計(jì),可以實(shí)現(xiàn)在運(yùn)動(dòng)指令執(zhí)行完畢后產(chǎn)生中斷,在中斷服務(wù)程序中,所要完成的任務(wù)就是從底層指令緩沖區(qū)取出下一條指令包含的各寄存器值,按地址將其送到卡上相應(yīng)的寄存器中。

對(duì)于需要對(duì)反饋信號(hào)進(jìn)行采樣處理的特殊功能,則可以利用卡上的外部定時(shí)中斷,在其中斷服務(wù)程序中進(jìn)行相應(yīng)的處理。

4.相對(duì)其它方式的優(yōu)點(diǎn)

采用VXD技術(shù)開(kāi)發(fā)運(yùn)動(dòng)控制卡驅(qū)動(dòng)程序及函數(shù)庫(kù)相對(duì)于傳統(tǒng)的查詢(xún)方式下工作的程序來(lái)說(shuō),具有如下一些優(yōu)點(diǎn):

(1)系統(tǒng)運(yùn)行效率更高,對(duì)CPU等系統(tǒng)資源占用更少??梢院苋菀椎亻_(kāi)發(fā)出帶圖形實(shí)時(shí)顯示的運(yùn)動(dòng)控制系統(tǒng)。

(2)多指令連續(xù)運(yùn)動(dòng)及微線(xiàn)段插補(bǔ)時(shí)運(yùn)動(dòng)連續(xù)性更好,在Windows多任務(wù)環(huán)境下不容易受其它任務(wù)影響而出現(xiàn)運(yùn)動(dòng)的間斷。

(3)可以實(shí)現(xiàn)更精確的采樣處理功能,進(jìn)而在此基礎(chǔ)上實(shí)現(xiàn)全閉環(huán)控制。
全球化工設(shè)備網(wǎng)(http://bhmbl.cn )友情提醒,轉(zhuǎn)載請(qǐng)務(wù)必注明來(lái)源:全球化工設(shè)備網(wǎng)!違者必究.

標(biāo)簽:

分享到:
免責(zé)聲明:1、本文系本網(wǎng)編輯轉(zhuǎn)載或者作者自行發(fā)布,本網(wǎng)發(fā)布文章的目的在于傳遞更多信息給訪(fǎng)問(wèn)者,并不代表本網(wǎng)贊同其觀(guān)點(diǎn),同時(shí)本網(wǎng)亦不對(duì)文章內(nèi)容的真實(shí)性負(fù)責(zé)。
2、如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間作出適當(dāng)處理!有關(guān)作品版權(quán)事宜請(qǐng)聯(lián)系:+86-571-88970062