
對(duì)于在客戶軟件層的插補(bǔ)運(yùn)算,必須將電機(jī)的運(yùn)動(dòng)使能、方向、速度和運(yùn)動(dòng)步數(shù)信息發(fā)往數(shù)控木工雕刻機(jī)底層的單片機(jī),實(shí)現(xiàn)發(fā)送的通訊方式是通過(guò)USB傳輸,USB傳輸速度快,可以滿足插補(bǔ)運(yùn)算過(guò)程中的大量插補(bǔ)數(shù)據(jù)傳輸?shù)男枨蟆?/p>
(1)電路連接圖
系統(tǒng)采用AT89S52控制PDIUSBD12傳輸數(shù)據(jù),并將控制信號(hào)實(shí)時(shí)輸出。其電路連接示意圖如下圖所示。USB支持4種傳輸類(lèi)型:中斷,控制,塊和同步。雕刻機(jī)系統(tǒng)可靠性是關(guān)鍵,在滿足數(shù)據(jù)傳輸速度要求的前提下,系統(tǒng)采用了控制傳輸和中斷傳輸兩種傳輸方式。

PDIUSBD12的固件設(shè)計(jì)成完全的中斷驅(qū)動(dòng),采用KeilC51進(jìn)行編寫(xiě)。USB的傳輸可在后臺(tái)進(jìn)行,它的基本思想是:后臺(tái)ISR(中斷服務(wù)程序)和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換通過(guò)事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來(lái)實(shí)現(xiàn)。整個(gè)單片機(jī)程序中,對(duì)電機(jī)的控制脈沖的輸出的實(shí)時(shí)性要求最高,所以設(shè)定了定時(shí)器中斷的級(jí)別為高級(jí)別,對(duì)于單片機(jī)內(nèi)部的循環(huán)緩沖區(qū),定時(shí)器中斷程序檢查循環(huán)緩沖區(qū)的填充情況,并在允許的時(shí)候重新打開(kāi)低級(jí)的中斷服務(wù)。
(3)USB設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)
開(kāi)發(fā)USB接口設(shè)備驅(qū)動(dòng)程序必須遵守WDM(Windows驅(qū)動(dòng)程序模型)規(guī)范。WDM驅(qū)動(dòng)程序有兩個(gè)主要的初始化入口點(diǎn))DriverEntry和AddDevice例程。DrvierEntry主要工作是把各種函數(shù)指針填入驅(qū)動(dòng)程序?qū)ο?,以注?cè)其它回調(diào)例程。PnP管理器將為每個(gè)硬件實(shí)例調(diào)用一次AddDevice例程,AddDevice函數(shù)的主要工作是創(chuàng)建一個(gè)設(shè)備對(duì)象并把它連接到設(shè)備堆棧中。驅(qū)動(dòng)程序與應(yīng)用程序和硬件之間通信都是IRP(I/O請(qǐng)求包)完成的。在運(yùn)行過(guò)程中,內(nèi)核會(huì)調(diào)用不同的回調(diào)例程來(lái)完成不同的IRP。DriverUnload則是在設(shè)備卸載時(shí)的清除例程。
(4)USB應(yīng)用程序開(kāi)發(fā)
完成了USB固件程序開(kāi)發(fā)和USB設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)后,就可以編寫(xiě)上層的USB主機(jī)客戶程序,真正發(fā)揮USB設(shè)備的作用。應(yīng)用程序通過(guò)訪問(wèn)API通信函數(shù),使位于上層的應(yīng)用程序與位于下層的設(shè)備驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)交換。