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.
发布评论