随着电子技术和计算机技术的迅速发展,几种商业化的探地雷达" title="探地雷达">探地雷达系统开始得到了初步应用,其中具有代表性的有加拿大探头及软件公司(SSI)的PulseEKKO系列、瑞典地质公司(SGAB)的RAMAC钻孔地质雷达系统、美国地球物理探测设备公司(GSSI)的SIR系统及日本应用地质株式会社(OYO)的Georadar系列等。但是,这些国外产品造价昂贵,且测量的局限性较大,严重地影响了它的普及。鉴于探地雷达具有广泛的用途对其进行了开发研制,目前已研制成功。由于篇幅限制,文中在此重点介绍数据采集" title="数据采集">数据采集部分和显示软件。
1 数据采集
在探地雷达数据采集试验中,所使用的是HY-6070 C通用数据采集控制板,此板的功能主要是A/D与D/A数据转换。其接口是ISA总线型的,可以直接插入具有ISA总线扩展槽的计算机中,在计算机的控制下构成信号采集、监视输入系统和模拟量电压信号、数字电压信号输入系统。HY-6070 C板上安装有12 bit分辨率的A/D转换器,其通过率为40 kHz。为用户提供了两种模拟信号输入方式:16路单端输入和8路双端输入。通过硬件设置,模拟电压信号输入范围可以是0~5 V,土2.5 V,±5 V。此板还提供了1路12 bit D/A转换模拟电压输出通道。在HY-6070 C板上还装有可编程定时/计数器82C54,其中82C54的定时/计数器1和定时/计数器2级连,用以生成定时启动A/D转换的信号。定时/计数器O单独引出,供用户使用。HY-6070 C板支持软件触发、定时触发和外触发3种A/D电路启动转换工作方式。支持软件查询和中断申请数据传送工作方式。HY-6070 c板还为用户提供了16路数字输入/输出通道信号,接口电平符合TTL电平标准。
文中利用软件编程启动HY-6070 C板的A/D转换功能。在软件触发方式下,每次启动A/D转换前由软件切换通道,然后发送A/D转换启动命令来触发A/D转换。当A/D转换完成后,可通过软件查询A/D完成位,当程序测到A/D完成位为“1”时,即可读取A/D转换的12 bit数据。
A/D采样程序步骤如下:
(1)设置板上的模拟信号输入通道(共16个通道,编号为0~15);
(2)设置A/D触发方式,这里设置为软件触发;
(3)开始触发A/D转换;
(4)等待并查询A/D转换完成标志;
(5)对接收到的数据进行存储。
在HY-6070 c数据采集卡内预先分配了各种地址,程序通过访问这些地址并对其进行相应的读写操作来控制A/D采样的实现。在实际应用中,可以直接利用由C语言编制的应用程序来控制采集卡进行A/D转换,只需调用头文件为dos.h中的outport(address,data)(address为地址值,data为要向该地址输出的数据)与inportb(ADaddress)(ADadress是A/D转换数据所存储的地址)两个函数即可,但是应用程序的使用环境必须是DOS操作系统。这给应用程序的使用者带来了诸多不便。因此为了让用户方便使用,作者制作了基于Windows操作系统的显示软件。由于 Windows操作系统不能像DOS那样直接读取采集卡的板内地址,因此要想面向数据采集卡编程,首先需要安装数据采集卡的驱动程序,既让Windows 操作系统能够识别到此硬件。在接下来的编程中还必须使用到数据采集卡自带的两个文件,HKIoMFC.H和HKIoMFC.lib,在这两个文件中定义了对采集卡进行控制的变量与函数体,编程时即可直接调用。
2 显示软件
利用Visual C++6.0在Windows操作系统下开发应用程序主要是使用MFC(Microsoft Fbundation Class)类库。MFC是微软为Windows程序员提供的一个面向对象的Windows编程接口,它简化了Windows编程工作。使用MFC类库的优点:首先,MFC提供了一个标准化的结构,这样开发人员不必从头设计创建和管理一个标准Windows 应用程序所需的程序,而是从一个比较高的起点编程,可节省大量的时间;其次,它提供了大量的代码,指导用户编程时实现某些技术和功能。MFC库充分利用了 Microsoft开发人员多年开发Windows程序的经验,并可以将这些经验融入到自己开发的应用程序中去。
Visual C++6.0集成环境对MFC提供了多种界面友好的辅助工具,用AppWizard可以生成新的类,可以对类成员进行维护。MFC提供了一种机制,把 Windows的消息与类的某个成员直接联系起来,减少程序员中间的处理过程。比如在菜单中加了一个命令项,指定其命令ID,然后用 ClassWizard可以指定此菜单ID与类的成员函数相联系,所需要的编程就是实现该成员函数的代码,其他代码均由MFC和Class-Wizard 负责处理。这种机制提高了程序开发效率,而且Visual C++提供了MFC的所有源代码,这些源代码不仅可供参考,还为应用程序的调试提供了方便,源代码的开放性也是MFC获得成功的一个主要原因。
作者所设计的显示软件是基于单文档(SDI)框架结构的应用程序,其外观如图1所示。
由图可见,单文档的外观与常见的Windows应用程序相似,因此操作方便,只需要选择各个菜单执行相应的功能即可。
探测波形实时显示功能的实现需要软件与前面提到的HY-6070 C数据采集卡配合实现。在厂家提供的驱动函数库内定义了一个CHKIoCtrl类,在编程时只需声明一个此类的对象mHKDevice即可,然后就可调用驱动函数进行相应的操作。图2是波形的动态显示效果。
当得知地下有物体存在后,人们希望了解这个物体到底是什么,而利用上述波形的动态显示方法就难以给出结论。因此还需要通过这些回波产生一幅可视性强的图像,这通常建立在数字图像处理的基础上。通常称图2所示的波形为一维图像,如果能将其转化为二维图像,可视性会大为改善。这里用“波形堆积”一词来形容将一维图形转化为二维图形的过程。图3所示240个波形直接堆积的结果,这里采用灰度图像。
由图3可见,图像出现了灰度不均匀显示的效果,与图2单纯的波形相比,其可视性得到增强。这些不均匀的变化特征反映出目标的某些特性。
3 结束语
通过应用通用HY-6070 C完成了对探地雷达信号的数据采集,并且应用文中所编制的显示软件,对实时波形和堆积图形进行了正确显示,与所研制的探地雷达主机联调也得以成功,完全能够正确使用。