久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于CPLD多通道編碼器數據采集系統設計

基于CPLD多通道編碼器數據采集系統設計

作者: 時間:2012-11-26 來源:網絡 收藏

3系統的控制軟件設計

3.1虛擬設備驅動程序

應用系統要使用該采集卡,必須要有相應的軟件支持,這各支持可以是直接將復雜的控制方式告訴用戶,讓用戶直接對該卡操作,這樣大大增加了程序的復雜性,也可以采用動態連接庫的方式,這里該系統提供了虛擬設備驅動程序的接口方式。

對于不同的工作平臺,可以有不同的設備驅動程序模型,對于Windows9x可以為VxD,對于Windows2000為WDM,對于Windows98既可以是VxD,也可以是WDM。而編寫的方式和借助的工具也各不相同。對于編寫VxD可以借助于VtoolsD,對于編寫WDM可以借助于DriverWorks,或者直接用Microsoft DDK(Windows9x和Windows2000均可)。現以編寫VxD為例,簡述本系統的虛擬設備驅動程序的編寫。

VxD是Vixtual x Device的簡寫,此處x表示Something。但VxD的功能遠非僅僅虛擬某個硬件設備。有些VxD確實用來虛擬設備,而有些雖然用作驅動程序,卻并不虛擬任何設備。而另外有些VxD只是給其他應用程序或VxD提供服務。不管如何,它的作用在于對Windows操作系統的功能進行擴展。開發VxD常用的方法是用匯編語言,或者用匯編語言和C語言混合編程,而本設計借助于Compuware推出的VtoolsD,從編寫、編譯VxD到應用程序調用VxD都不涉及匯編語言,直接用C++語言來實現。思路如下:

(1)運用VtoolsD的QuickVxd,快速生成VxD基本框架。在“Device Parameters”欄填上VxD的名稱(要遵循C語言規則),本研究中設為SJCJ。為了能將該軟件動態加載,注意選中Dynamically Loadable。對VxD有動態加載和靜態加載方法。動態加載是由應用程序或別的VxD來加載,而靜態加載是在Windows初始化時加載,直至Windows結束運行時才卸載。如果VxD(如本例)是為某些特定應用程序服務,則最好不要靜態加載,因為當應用程序不調用它時,它所占的那部分內存就浪費了。為了能向Win32應用程序提供服務,控制消息W32-DEVICEIOCONTROL應選中。在“Output Files”欄選擇輸出地址目錄,輸出SJCJ.h文件、SJCJ.cpp文件和SJCJ.mak文件。

(2)根據需要在SJCJ.h和SJCJ.cpp添加相應的類和函數(SJCJ.mak用來指導編譯程序對源程序進行編譯,不要變更),其添加規則與C++的規則完全一樣。本程序所要實現的是要對某個指定的I/O端口進行完全監視,并且采集相關數據,所以另外添加了一些與相關的類和函數。

3.2應用程序對VxD的調用

按照傳統方法,調用VxD一般要用匯編語言,但通過W32-DEVICEIOCONTROL控制消息,可以實現Win32API對VxD的直接調用。剛才在Quick Vxd中已將該消息選中,系統就會自動加載Virtual DWord OnW32DeviceIoControl函數,該函數用來處理Win32API的調用問題。換言之,當Win32應用程序加載VxD、調用W32 DeviceIocontrol API以及卸載VxD時,將觸發函數OnW32DeviceIoControl,從而實現數據的交換。Win32應用程序通過調用函數CreateFile可以調用SJCJ.VxD;通過調用函數CloseHandle可以卸載SJCJ.VxD。

4調試結果

旋轉系統完成后,先后在不同的系統中進行了應用測試,取得了較好的實際效果。下面該系統應用于“具有交叉支撐的三大件轉向架的平面形位偏差”測試為例作簡要說明。

鐵路車輛應用具有交叉支撐的三大件轉向架后,左右側架被彈性固定。由于各種因素,不可能使左右側架完全正位。從而使實際導框的中心與名義中心不一致。雖然輪對的承載鞍與導框間有間隙,但由于摩擦力巨大,輪對不能輕易活動,導框的實際中心的偏差會造成輪對的平均(統計概率)定位中心的偏差。研究表明這種偏差會不同程序地影響車輛的線路上的運行狀態,引起轉向架的不對稱磨耗,實際情況下我們用軸距偏差、對角線偏差等來控制轉向架的正位狀態。

為此采用機械結構結合多個旋轉來測量軸距偏差、對角線偏差等來控制轉向架的正位狀態。

為此采用機械結構結合多個旋轉來測量軸距偏差、對角線偏差,從而保證將這些偏差控制在一定范圍內,減少轉向架的不對稱磨耗。該系統選用10個日本光洋公司出產的旋轉編碼器TRD-N-RZ2000,旋轉一周能產生2000個方波,而且最大的響應頻率達到100kHz。該系統用兩塊旋轉編碼器卡,同時采集10個計數值。使用表明,可以很好的實現系統的要求,采集數據誤差為±1,即測量精度為360°/8000。

5結論

采用技術來實現編碼器系統是切實可行的,由于采用了ISP和JTAG技術,修改和編程都很方便,所以通過對程序的修改,可以使該數據采集系統適合于多種編程方式的編碼器,從而使該系統的應用場合更加廣泛。

參考文獻

1朱明程.XILINX數字系統現場集成技術.南京:東南大學出版社

2徐志軍等./FPGA的開發與應用.北京:電子工業出版社

3楊全勝等.現代微機原理與接口技術.北京:電子工業出版社

4KAREN HAZZAH.Writing Windows VxDs and Device Driver,孫喜明譯.北京:中國電力出版社

5楊強,李堂秋.Win9x虛擬設備驅動程序編程指南.北京:清華大學出版社


上一頁 1 2 3 4 下一頁

評論


相關推薦

技術專區

關閉