Windows下工業CT機掃描控制的研究

才智咖 人氣:2.9W
Windows下工業CT機掃描控制的研究
摘 要:介紹了一種CT掃描控制的,並給出了其在Windows平臺下的實現方法。實驗表明:該方法具有良好可靠性。

關鍵詞:工業CT 掃描 Windows裝置驅動

一、引言

工業機斷層掃描成像技術(Industrial Computerized Tomography),簡稱工業CT或ICT,是計算機技術與放射學相結合的一門新的成像技術。工業CT在無損檢測(NDT)與無損評價(NDE)領域得到了廣泛的。

CT掃描檢測模式已經經歷了三代掃描模式。第三代掃描方式的此掃描檢測模式的示意如圖1

M個分度旋



輻射源

探測器陣列


圖1 第三代掃描示意圖

相對旋轉一週,完成一個斷層掃描檢測,獲得由N×N個數據組成的資料集。本文將Windows下第三代CT掃描檢測模式控制系統的開發。

二、系統總體結構

本文以重慶大學ICT研究中心研製的某臥式工業CT機為例闡述工業CT機掃描運動控制。臥式工業CT機主要要求對下列三個運動軸的位置進行控制:

1.分度運動(工件轉動)M1

分度運動的定位精度到等效探測器空間分佈均勻性,直接影響圖象質量。可作正、反方向連續轉動。

2.插值運動M2

通過該方向的運動調整探測器的位移,以獲取更多的探測資料,提高解析度。

3.工件分層運動M3

分層運動用於選擇CT掃描斷層位置。

選用研華公司的PCL_839三軸運動控制卡控制這三個運動。PCL_839卡自身含有3個脈衝發生器,能夠執行同步及獨立控制三個軸的`運動任務。選用研華公司的三通道正交計數卡PCL_833獲取這三個運動位置反饋訊號。控制原理框圖如圖2。



圖2 CT掃描運動控制框圖

三、Window下CT掃描控制軟體的開發

1.應用程式與驅動程式的互動

Windows中提供了以下5個API函式,通過它們可以像訪問一個檔案那樣訪問裝置。

(1)CreateFile()開啟一個WDM裝置

(2)CloseHandle()關閉一個WDM裝置

(3)ReadFile()從裝置讀資料

(4)WriteFile()向裝置寫資料

(5)DeviceIoControl()裝置控制命令,讀、寫操作可一起完成。

應用程式首先必須通過CreateFile()開啟和建立到一個WDM裝置連線,才能對它進行各種I/O 操作。下面將給出研華PCL_839卡驅動程式的DriverEntry例程,設定了驅動程式的入口點和主要回調例程,以後核心會在合適的環境下呼叫這些例程處理。

DriverEntry(IN PDRIVER_OBJECT DriverObject,

IN PUNICODE_STRING RegistryPath)

{NTSTATUS status = STATUS_SUCCESS;

DriverObject->DriverExtension->AddDevice= PCL_839 AddDevice;

………….

Return status;

}


2.CT掃描過程控制

(1)CT掃描控制策略

為提高CT掃描效率及減少機器的損耗,採用CT掃描運動勻速方式,CT掃描速度的快慢根據採集的時間要求確定,在運動過程中到達一個採集點時,就給資料採集系統傳送一個採集訊號,通知採集系統準備讀取當前點的採集資料。CT掃描控制流程圖如下所示:



(2)CT掃描軟體的編寫

首先,使用者程式發出初始化電機的命令BYTE InitPCL_839 [] =   //初始化命令碼

{…

PCL_839IO_WRITE, PARPORT_XX, 0xXX,   //命令碼,操作地址,運算元



};

BYTE ChaZhiPCL_839 [] =   //插值運動命令碼

{…

PCL_839IO_WRITE, PARPORT_XX, 0xXX,   //命令碼,操作地址,運算元



};

初始化包括電機的操作模式,速度控制,及中斷使能等。

上面給出初始化、插值運動命令碼及在使用者態呼叫初始化命令碼的程式,在使用者態呼叫插值運動命令碼只需對DeviceIoControl修改即可,如下所示:

DeviceIoControl(hWdmIo, IOCTL_ PCL_839IO_RUN_CMDS,

ChaZhiPCL_839, ChaZhiPCL_839,    // Input

rv, sizeof(rv),                       // Output

&BytesReturned, NULL)

其它操作如分度運動、分層運動與此類似,鑑於篇幅所限這裡不再敘述。

CT掃描任務的強實時性要求程式與驅動程式能進行實時通訊。為保證CT掃描系統的實時性,採用Win32事件對應用程式進行通訊。當發生中斷時,設定事件的觸發狀態。驅動程式建立命名的核心態事件,具體步驟如下。

①宣告核心態事件

KEVENT myEventToSingnal; //在PCL_839裝置擴充套件dx中宣告

②當核心事件發生時,設定事件為觸發態,實現WDM對應用程式的通訊

state=KeReadStateEvent(dx->myEventToSingnal);

設定事件為非觸發態

KeClearEvent(dx->myEventToSingnal);

③最後釋放事件控制代碼

ExFreePool((dx->myEventToSingnal);

由於在該軟體設計中,事件是由中斷髮出的。在進行上述處理之前,必須有一些中斷初始步驟設定。應用程式在等待一個事件發生後,就對相應的事件做出快速反映,以保證CT掃描控制的實時性。

四、結論

在Windows 2000平臺上對CT掃描控制系統進行開發,不僅能更好的實現CT機的掃描控制,縮短開發週期,而且可以提高整個控制系統的可靠性、穩定性。





[1] (美)Chris Cant 著.Windows WDM裝置驅動程式開發指南.機械工業出版社.

[2] 劉麗,劉紅霞.工業CT掃描臺高加速運動控制.鄭州航空工業管院學報(版).第23卷第3期2004年6月.

[3] 劉鴻,王平,俞偉.WDM驅動程式開發疑難.機應用.第23卷第6期2003年6月.

[4] 馬官營.楊明.吳曉琳Windows2000通用裝置驅動程式設計.計算機應用.第23卷2003年6月
TAGS:Windows CT