2024年6月11日发(作者:)

基于VC++的超声无损检测上位机软件设计与实现

董庆庆;高丹华;杨恋;耿瑞华;何爱军

【摘 要】研发一款用于超声无损检测的上位机软件,支持远程和短距离的实时探测,

实现离线文件分析和数据存储;在Visual Studio2008环境中实现软件页面设计,通

过以太网和USB两种通信方式建立与下位机的连接,实现远近距离的数据传输;基于

NI Measure-ment Studio显示控件,实现回波数据的实时监测与显示;依托

MySQL创建数据库,管理各种文件和单帧回波数据;测试表明,该系统软件页面设计

良好,上下位机支持两种通信方式,数据传输稳定,可实时显示、分析、存储和管理数

据;此外,针对不同尺寸的探测工件,在100 Hz~1 kHz范围内,选择相应脉冲重复频

率,进行抽样处理后,显示频率可稳定达到50 Hz,满足了无损检测的要求.

【期刊名称】《计算机测量与控制》

【年(卷),期】2014(022)004

【总页数】4页(P1307-1309,1313)

【关键词】超声无损检测;上位机;VC++;MySQL

【作 者】董庆庆;高丹华;杨恋;耿瑞华;何爱军

【作者单位】南京大学电子科学与工程学院,南京 210046;南京大学电子科学与工

程学院,南京 210046;南京大学电子科学与工程学院,南京 210046;南京大学电子科

学与工程学院,南京 210046;南京大学电子科学与工程学院,南京 210046

【正文语种】中 文

【中图分类】TP399

0 引言

超声无损检测技术,是利用超声的特性,在不损害或不影响被检对象的前提下,检

测被检对象中是否存在缺陷,并确定缺陷的大小、位置和数量等信息,进而判定被

检对象的合格与否、剩余寿命等状态[1]。

本文研发了一款基于超声无损检测技术的上位机软件,用于控制下位机,实现远程

的实时探测,克服了现场探测的局限性,并可对离线文件上传和分析,对单帧回波

数据及其他文件导出相应的Excel报表。该软件在Visual Studio2008环境下开发

设计,基于NI Measurement Studio显示控件,对回波数据实时显示,依托

MySQL创建数据库,方便对回波数据存储、查看和删除,并以以太网和USB两

种通信方式建立与下位机的连接。

本文简要介绍上下位机系统的总体设计,详细说明上位机软件页面设计、联机、实

时探测、上传回放及数据管理等5个主要模块的设计与实现。

1 系统总体设计

本系统主要由上位机(PC端软件)、下位机(ARM核心板和FPGA采集系统)、

探头等3部分组成,系统框架如图1所示。上位机软件基于Visual Stutdio 2008

+NI Measurement Studio 8.6+ MySQL 5.5架构开发设计,开发语言采用VC

++。ARM核心板选用S5PV210处理器,FPGA采集系统使用XC3S250E-4

芯片,内部程序编写使用Verilog HDL语言[2]。

图1 系统框架图

2 上位机软件设计

上位机软件主要包括5个模块:页面设计、联机、实时探测、上传回放及数据管

理等。(1)页面设计模块介绍主体框架的设计与实现;(2)联机模块实现PC连

接下位机,设置基本参数;(3)实时探测模块实现回波数据的实时显示,保存回

波缺陷数据的连续帧;(4)上传回放模块实现下位机文件的上传,打开本地文件

后的解析、显示、回放及保存单帧回波缺陷数据,并可导出Excel报表;(5)数

据管理模块实现对回波缺陷数据的按时间显示和按关键字查找,并可查看和删除查

找到的不同文件及单帧数据。上位机主体功能框架如图2所示。

图2 上位机主体功能框架图

2.1 页面设计

页面选用多文档界面,结合CDockablePane和CForm-View,为实时探测、上

传回放及数据管理3个模块分别创建独立的Pane和View,左侧选中某个Pane,

右侧则显示对应模块的View,增强了模块间的独立性[3-5]。显示回波数据、

波门、DAC等曲线,采用第三方显示控件NI Measurement Studio,画线时使

用该控件自带函数PlotY(const CNiVector&y,double xFirst,double xInc),

回波数据点占坐标像素大小由xInc决定。绘制波门、DAC曲线、AVG曲线等曲

线时,需要额外添加Plot,选择某一Plot时,用显示控件内置函数Get-Plots

().Item(" 曲线名称")实现[6]。

2.2 联机模块

联机是建立上下位机之间的连接,连接成功后,用户方可进行实时探测和上传文件

操作,实时探测过程中,用户也可实时的更改基本参数。上下位机连接方式包括两

种:USB和以太网。USB通信选用USB2.0高速,支持热插拔、即插即用,准确

率高、稳定性强,适用于近距离探测和文件传输[7];以太网通信选用

100Mbit/s以太网,支持在不用插拔的情况下连接不同下位机,稳定性稍弱,适

用于远程探测和文件传输。本文引入远程探测,弥补了短距离探测的限制,操作人

员不必亲临现场,就可远程操控下位机,实时观察和分析工件性能。鉴于短距离与

远程的两种不同探测需求,我们实现了这两种通信方式,并满足较高脉冲触发重复

频率下的实时通信。联机流程如图3所示。

(1)USB

下位机采用S5PV210内置的USB2.0OTG通信接口,上位机建立连接时,调用

windows API函数CreateFile(),若连接成功,则返回一个有效句柄hDevice。

上位机程序使用hDevice,通过DeviceIoControl()函数实现其与驱动程序间

的数据交换[7]。基于USB通信4种不同的传输类型的各自特点,发送基本命

令选用控制传输方式,设置基本参数选用BULK OUT方式,读取回波数据和文件

内容选用BULK IN方式,不同传输类型对应的控制码不同。BULK OUT和BULK

IN的区别在于管道号不同,本系统中,BULK OUT的管道号为0,BULK IN的管

道号为1。

图3 联机流程图

(2)以太网

下位机采用DM9000A以太网收发器,上下位机的以太网通信,是基于异步非阻

塞Socket封装类CAsyncSocket中的函数实现的[8]。两者通信过程中,上位

机以客户端的身份向服务端(下位机)发送数据请求,当返回数据时,上位机则以

服务端的身份来读取下位机返回的数据,具体流程如图4所示。

图4 上位机Socket通信流程图

2.3 实时探测模块

实时探测模块主要实现回波数据采集,通信线程将采集后的数据放入环形缓冲区内,

显示线程从缓冲区内取出数据后实时显示,支持有效回波数据的连续帧以文件的形

式实时存储,并将其文件路径存储到数据库中。

(1)采集

FPGA采样频率为100MHz,声程决定抽样范围,脉冲触发频率决定抽帧数量,

显示频率固定为50Hz。脉冲触发频率从100Hz~1kHz大小可调,脉冲触发频率

为1kHz时,20帧抽取1帧显示。回波数据按帧显示,每帧数据包含回波数据、

波门信息、回波缺陷参数等。本文为采集和显示创建了子线程,子线程的线程工作

函数向主窗口MainForm发送消息,主窗口收到消息后由ShowAccquistion函

数响应后显示。

(2)环形缓冲区

为解决采集与显示的速度匹配问题,我们引入了环形缓冲区。USB方式采集时,

一次最多传输512Byte,570*2Byte的帧数据需要写入3次,才能读取1次。为

解决访问缓冲区时,读指针pRead和写指针pWrite的互斥问题,我们使用了临

界区类CCriticalSection中的Lock()和UnLock()。读写缓冲区之前,用

pRead==pWrite判断缓冲区是否为空,用(pRead+

CountOnceShow)%BufferSize==pWrite判断缓冲区是否为满。

2.4 上传回放模块

上传回放模块主要实现上传和显示下位机数据文件,打开和显示本地文件,对不同

类型文件的解析,对单帧数据的存储,并可导出相应的Excel报表。

(1)文件命名

文件命名格式为日期+序号+自定义名字,例2013年6月6日保存的第一个文

件名称为:2_测试.FAT。使用FindFirstFile()和FindNextFile

(),读取指定路径文件夹中的所有文件名字,放入vector中。使用map记录

vector中所有日期的最大序号,当前日期的最大序号为idmax,要保存文件的序

号即为idmax+1。

(2)不同类型文件的解析

根据保存文件的内容不同,可将文件分为单帧文件(.FAT)、连续存储文件

(.FBT)、频谱文件(.FCT)、峰值记忆文件(.FDT)、回波暴露文件(.FET)、

DAC文件(.FFT)、AVG文件(.FGT)等类型。由CFileDialog成员函数

GetFileName()获取当前选择文件名字,结合CString中的Right()提取出

文件类型,调用不同文件的处理方法进行解析和显示文件内容。

(3)存储单帧数据

存储单帧数据,须将该帧回波数据存储到数据库中,回波数据由于字段比较长(1

140Byte),选用大数据字段类型。大数据字段包括TEXT和BLOB类型:TEXT

类型用于保存文字;BLOB类型用于保存图片等,以二进制比特流的形式保存到数

据库中。由于回波数据字段回波数据是short,保存时需转换成char类型,而若

为TEXT字段,数据库不识别转换后的字符,导致插入失败,故采用BLOB类型

[9]。

(4)导出Excel报表

基于VC++提供的ActiveX技术,通过调用VBA(Visual Basic for

Application),将报表内容输出到Excel中。用Visual C++6.0将office安装

目录下的""生成Excel.h和,使用其内部_Application等类

中的方法可制作报表[10]。绘制回波数据图线,另需_Chart类,使用Set-

SourceData()设置图线数据源,先将回波数据写入sheet2中,再根据该数据

在sheet1中绘制。Excel报表绘制的chart如图6所示。

图6 Excel报表中绘制的chart

2.5 数据管理模块

由于探测数据和文件的种类繁多,数据量大,本文引入mysql数据库管理系统,

来实现数据管理模块。数据管理模块主要实现对保存在数据库中的各种文件的导入、

查看和删除,在文件列表中按文件的年月日时间顺序显示,查看某一日期下的所有

文件,并可根据关键字查询文件,对查找的文件显示其内容。

(1)文件导入

文件导入分为保存回波数据和文件路径两种:保存回波数据是实时探测过程中的某

帧回波数据,及单帧回波数据文件,可以将其基本参数、回波缺陷及回波数据等信

息直接保存在数据库中;保存文件路径是将连续帧文件、频谱文件、DAC曲线文

件等文件所在路径保存到数据库中。导入文件之前,执行select max(id)from

table*,获取当前日期下所有文件的最大id,令新导入的文件id=max(id)+

1。

(2)文件列表

文件列表用 MFC内置控件CTreeCtrl实现[4],文件从数据库中读取时,按年

降序,月、日升序排列:select*from file order by year desc,month asc,

day asc。对于获取到的年、月、日节点,使用 HasString(s,map)判断文件

名称中的年、月、日是否在当前的文件树中。若存在,则直接插入叶子节点即可;

若不存在,就在文件树中创建相应的时间节点后插入。插入节点用CTreelCtrl类

成员函数InsertItem()结合map实现,map用于记录从根节点到叶子节点等

所有节点的句柄。

(3)访问数据库

数据库ndt中包含3个表,即基本参数表、回波数据表、文件表。基本参数表存

放探头类型、基本增益等参数,回波数据表存放某一帧的回波数据,文件表存放各

类文件的文件路径。访问数据库的基本操作流程[9,11]如图7所示。

图7 访问数据库基本操作流程图

3 结果与讨论

本文设计实现的一款超声无损检测上位机软件,增加远程探测功能,弥补了市面上

已有超声波探伤仪上位机短距离探测的不足,增加mysql数据库,对探测数据和

各种离线文件有效存储,方便查看和管理各种历史数据文件。 针对不同尺寸的探

测工件,在100Hz~1kHz内,选择相应脉冲重复频率,进行抽样处理后,显示频

率可稳定达到50Hz。实现的100Mbit/s以太网和USB2.0高速两种通信方式,数

据传输稳定,实时探测持续时间长,可以保证在较高脉冲重复频率下的实时通信。

经过测试,该系统工作稳定,操作简便,满足了超声无损检测远近距离的两种要求,

实现回波数据的有效存储和管理,具有良好的实用价值。

【相关文献】

[1]郭 伟.超声检测[M].北京:机械工业出版社,2009.

[2]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2008.

[3]辛长安,王颜国.Visual C++权威剖析-MFC的原理、机制与开发实例[M].北京:清华

大学出版社,2008:303-357.

[4]孙 鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

[5]刘锐宁,梁 水,宋 坤.Visual C++ 开发技术大全[M].北京:人民邮电出版社,2009.

[6]纪龙蛰,单庆晓,任立坤.基于C++Builder的导航卫星接收机显示控制系统的设计与实现

[J].计算机测量与控制,2013,21(3):626-628.

[7]National ement Studio User Mannua[Z].USA:National

Instruments,2008:3-1-3-27.

[8]王成儒,李英伟.USB 2.0原理与工程开发[M].北京:国防工业出版社,2004:410-425.

[9]阳任科.李东江.基于Socket的跨平台以太网通信实现[J].中国电力教育,2006,(S1):

255-257.

[10]Russell 核心技术手册(第二版)[M].北京:机械工业出版社,2009.

[11]王裕林,侯 力,等.基于VC超声波探伤系统设计[J].煤矿机械,2010,32(1):134-

136.

[12]衣 颖,祁建城,李艳菊.基于和MySQL的多点温湿度检测软件的开发[J].研究

论著,2008,29(9):25-26.