基于CPLD多通道編碼器數據采集系統設計
3系統的控制軟件設計
3.1虛擬設備驅動(dòng)程序
應用系統要使用該采集卡,必須要有相應的軟件支持,這各支持可以是直接將復雜的控制方式告訴用戶(hù),讓用戶(hù)直接對該卡操作,這樣大大增加了程序的復雜性,也可以采用動(dòng)態(tài)連接庫的方式,這里該系統提供了虛擬設備驅動(dòng)程序的接口方式。
對于不同的工作平臺,可以有不同的設備驅動(dòng)程序模型,對于Windows9x可以為VxD,對于Windows2000為WDM,對于Windows98既可以是VxD,也可以是WDM。而編寫(xiě)的方式和借助的工具也各不相同。對于編寫(xiě)VxD可以借助于VtoolsD,對于編寫(xiě)WDM可以借助于DriverWorks,或者直接用Microsoft DDK(Windows9x和Windows2000均可)?,F以編寫(xiě)VxD為例,簡(jiǎn)述本系統的虛擬設備驅動(dòng)程序的編寫(xiě)。
VxD是Vixtual x Device的簡(jiǎn)寫(xiě),此處x表示Something。但VxD的功能遠非僅僅虛擬某個(gè)硬件設備。有些VxD確實(shí)用來(lái)虛擬設備,而有些雖然用作驅動(dòng)程序,卻并不虛擬任何設備。而另外有些VxD只是給其他應用程序或VxD提供服務(wù)。不管如何,它的作用在于對Windows操作系統的功能進(jìn)行擴展。開(kāi)發(fā)VxD常用的方法是用匯編語(yǔ)言,或者用匯編語(yǔ)言和C語(yǔ)言混合編程,而本設計借助于Compuware推出的VtoolsD,從編寫(xiě)、編譯VxD到應用程序調用VxD都不涉及匯編語(yǔ)言,直接用C++語(yǔ)言來(lái)實(shí)現。思路如下:
(1)運用VtoolsD的QuickVxd,快速生成VxD基本框架。在“Device Parameters”欄填上VxD的名稱(chēng)(要遵循C語(yǔ)言規則),本研究中設為SJCJ。為了能將該軟件動(dòng)態(tài)加載,注意選中Dynamically Loadable。對VxD有動(dòng)態(tài)加載和靜態(tài)加載方法。動(dòng)態(tài)加載是由應用程序或別的VxD來(lái)加載,而靜態(tài)加載是在Windows初始化時(shí)加載,直至Windows結束運行時(shí)才卸載。如果VxD(如本例)是為某些特定應用程序服務(wù),則最好不要靜態(tài)加載,因為當應用程序不調用它時(shí),它所占的那部分內存就浪費了。為了能向Win32應用程序提供服務(wù),控制消息W32-DEVICEIOCONTROL應選中。在“Output Files”欄選擇輸出地址目錄,輸出SJCJ.h文件、SJCJ.cpp文件和SJCJ.mak文件。
(2)根據需要在SJCJ.h和SJCJ.cpp添加相應的類(lèi)和函數(SJCJ.mak用來(lái)指導編譯程序對源程序進(jìn)行編譯,不要變更),其添加規則與C++的規則完全一樣。本程序所要實(shí)現的是要對某個(gè)指定的I/O端口進(jìn)行完全監視,并且采集相關(guān)數據,所以另外添加了一些與相關(guān)的類(lèi)和函數。
3.2應用程序對VxD的調用
按照傳統方法,調用VxD一般要用匯編語(yǔ)言,但通過(guò)W32-DEVICEIOCONTROL控制消息,可以實(shí)現Win32API對VxD的直接調用。剛才在Quick Vxd中已將該消息選中,系統就會(huì )自動(dòng)加載Virtual DWord OnW32DeviceIoControl函數,該函數用來(lái)處理Win32API的調用問(wèn)題。換言之,當Win32應用程序加載VxD、調用W32 DeviceIocontrol API以及卸載VxD時(shí),將觸發(fā)函數OnW32DeviceIoControl,從而實(shí)現數據的交換。Win32應用程序通過(guò)調用函數CreateFile可以調用SJCJ.VxD;通過(guò)調用函數CloseHandle可以卸載SJCJ.VxD。
4調試結果
多通道旋轉編碼器數據采集系統完成后,先后在不同的系統中進(jìn)行了應用測試,取得了較好的實(shí)際效果。下面該系統應用于“具有交叉支撐的三大件轉向架的平面形位偏差”測試為例作簡(jiǎn)要說(shuō)明。
鐵路車(chē)輛應用具有交叉支撐的三大件轉向架后,左右側架被彈性固定。由于各種因素,不可能使左右側架完全正位。從而使實(shí)際導框的中心與名義中心不一致。雖然輪對的承載鞍與導框間有間隙,但由于摩擦力巨大,輪對不能輕易活動(dòng),導框的實(shí)際中心的偏差會(huì )造成輪對的平均(統計概率)定位中心的偏差。研究表明這種偏差會(huì )不同程序地影響車(chē)輛的線(xiàn)路上的運行狀態(tài),引起轉向架的不對稱(chēng)磨耗,實(shí)際情況下我們用軸距偏差、對角線(xiàn)偏差等來(lái)控制轉向架的正位狀態(tài)。
為此采用機械結構結合多個(gè)旋轉編碼器來(lái)測量軸距偏差、對角線(xiàn)偏差等來(lái)控制轉向架的正位狀態(tài)。
為此采用機械結構結合多個(gè)旋轉編碼器來(lái)測量軸距偏差、對角線(xiàn)偏差,從而保證將這些偏差控制在一定范圍內,減少轉向架的不對稱(chēng)磨耗。該系統選用10個(gè)日本光洋公司出產(chǎn)的旋轉編碼器TRD-N-RZ2000,旋轉一周能產(chǎn)生2000個(gè)方波,而且最大的響應頻率達到100kHz。該系統用兩塊多通道旋轉編碼器數據采集卡,同時(shí)采集10個(gè)計數值。使用表明,可以很好的實(shí)現系統的要求,采集數據誤差為±1,即測量精度為360°/8000。
5結論
采用CPLD技術(shù)來(lái)實(shí)現多通道編碼器數據采集系統是切實(shí)可行的,由于采用了ISP和JTAG技術(shù),修改和編程都很方便,所以通過(guò)對程序的修改,可以使該數據采集系統適合于多種編程方式的編碼器,從而使該系統的應用場(chǎng)合更加廣泛。
參考文獻
1朱明程.XILINX數字系統現場(chǎng)集成技術(shù).南京:東南大學(xué)出版社
2徐志軍等.CPLD/FPGA的開(kāi)發(fā)與應用.北京:電子工業(yè)出版社
3楊全勝等.現代微機原理與接口技術(shù).北京:電子工業(yè)出版社
4KAREN HAZZAH.Writing Windows VxDs and Device Driver,孫喜明譯.北京:中國電力出版社
5楊強,李堂秋.Win9x虛擬設備驅動(dòng)程序編程指南.北京:清華大學(xué)出版社
評論