Windows下工业CT机扫描控制的研究
时间:2015-12-21 01:53:49 所属分类:计算机技术 浏览量:
摘 要:介绍了一种工业CT扫描控制的方法,并给出了其在Windows平台下的实现方法。实验表明:该方法具有良好可靠性。 关键词:工业CT 扫描 Windows设备驱动 一、引言 工业计算机断层扫描成像技术(Industrial Computerized Tomography),简称工业CT或ICT,是
摘 要:介绍了一种工业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月
转载请注明来自:http://www.zazhifabiao.com/lunwen/gcjs/jsjjs/36656.html