對(duì)于在客戶軟件層的插補(bǔ)運(yùn)算,,必須將電機(jī)的運(yùn)動(dòng)使能,、方向、速度和運(yùn)動(dòng)步數(shù)信息發(fā)往數(shù)控木工雕刻機(jī)底層的單片機(jī),,實(shí)現(xiàn)發(fā)送的通訊方式是通過USB傳輸,,USB傳輸速度快,,可以滿足插補(bǔ)運(yùn)算過程中的大量插補(bǔ)數(shù)據(jù)傳輸?shù)男枨蟆?/p>
(1)電路連接圖
系統(tǒng)采用AT89S52控制PDIUSBD12傳輸數(shù)據(jù),并將控制信號(hào)實(shí)時(shí)輸出,。其電路連接示意圖如下圖所示,。USB支持4種傳輸類型:中斷,控制,,塊和同步,。雕刻機(jī)系統(tǒng)可靠性是關(guān)鍵,,在滿足數(shù)據(jù)傳輸速度要求的前提下,系統(tǒng)采用了控制傳輸和中斷傳輸兩種傳輸方式,。
PDIUSBD12的固件設(shè)計(jì)成完全的中斷驅(qū)動(dòng),,采用KeilC51進(jìn)行編寫。USB的傳輸可在后臺(tái)進(jìn)行,,它的基本思想是:后臺(tái)ISR(中斷服務(wù)程序)和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(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í)候重新打開低級(jí)的中斷服務(wù)。
(3)USB設(shè)備驅(qū)動(dòng)程序開發(fā)
開發(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)行過程中,,內(nèi)核會(huì)調(diào)用不同的回調(diào)例程來完成不同的IRP。DriverUnload則是在設(shè)備卸載時(shí)的清除例程,。
(4)USB應(yīng)用程序開發(fā)
完成了USB固件程序開發(fā)和USB設(shè)備驅(qū)動(dòng)程序開發(fā)后,,就可以編寫上層的USB主機(jī)客戶程序,真正發(fā)揮USB設(shè)備的作用,。應(yīng)用程序通過訪問API通信函數(shù),,使位于上層的應(yīng)用程序與位于下層的設(shè)備驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)交換。