1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

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

        時間:2024-09-15 10:06:20 計算機應用畢業論文 我要投稿
        • 相關推薦

        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

        研究多層螺旋CT掃描技術在胰腺癌診斷中的應用價值07-05

        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

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>