首页
杂志网
当前位置:首页>>计算机技术>Windows下工业CT机扫描控制的研究>正文

Windows下工业CT机扫描控制的研究

来源:杂志发表网时间:2015-12-21 所属栏目:计算机技术

   摘 要:介绍了一种工业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月
点此咨询学术顾问 快人一步得到答案

SCI期刊问答

回到顶部