- 相關推薦
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月
【Windows下工業CT機掃描控制的研究】相關文章:
工業工程成本管理與控制研究08-14
Windows環境下對象的鏈接與嵌入05-08
鼻咽癌頸部淋巴結放射敏感性與CT灌注掃描相關性研究07-31
Windows CE下串行通信的實現07-29
在 DOS 下使用Windows *.WAV 文件09-27
關于CT 設備維修管理的研究10-04
淺析工業鍋爐控制系統的研究與節能應用10-27
網絡環境下企業內部控制研究06-14
Windows 95下智能數據采集系統08-29