基于APDL的漏磁检测有限元分析系统
2012-10-13宋小春
杨 林,程 涛,宋小春
(1湖北工业大学机械工程学院,湖北 武汉430068;2湖北省现代制造质量工程重点实验室,湖北 武汉430068)
漏磁无损检测方法具有检测灵敏度高、检测速度快以及对铁磁性材料内外表面缺陷均有较好检测能力等优点,在钢管、钢板等铁磁性构件的快速自动化检测方面表现出显著优势[1-3].其中,磁化是漏磁检测的前提,如果构件没有被磁化到合适的程度,缺陷就很难在其表面形成可被检出的漏磁场,或者因形成的漏磁场很弱而被噪声淹没,影响到漏磁检测系统的检测精度和灵敏度.因此,进行漏磁检测系统设计前,一般需根据检测对象的结构尺寸,仿真计算并分析外加励磁场对检测对象磁化饱和程度的影响,以优化励磁装置磁路结构并确定其参数.由于ANSYS软件具有计算精度高、结果显示方式灵活多样等优点,因此,其磁场分析模块在漏磁检测有限元分析方面得到广泛应用[4-5],特别是其提供的参数化设计语言(ANSYS Para metric Design Language,APDL)功能为模型参数修改和重复计算提供了极大的方便.然而,由于漏磁检测对象多样,其建模和网格划分方法各异,对励磁装置进行优化时需反复更改结构参数,计算并分析结果,因此,提高有限元软件的操作友好性和计算效率,是有限元软件用户关注的主要问题.为此,本文根据漏磁检测有限元分析实际需要,分析了基于ANSYS参数化设计语言、数据库技术和VC++程序设计方法的有限元软件二次开发技术,设计并实现了一套仿真计算过程对用户透明的漏磁检测有限元计算软件.
1 基于VC和ANSYS的漏磁有限元分析软件设计
1.1 软件基本架构
软件的基本架构主要包括对用户透明的运算系统、文件系统以及可视化用户界面等(图1).其中,软件的运算系统由大量抽象的APDL模版文件组成,每个APDL模版文件主要包括数值计算以及ANSYS命令封装.根据检测对象(管、杆、板材等)、磁化方式(周向和轴向)等不同,每个APDL模版文件对应着一种具体的漏磁检测有限元分析模型;用户界面包括用户参数输入界面和有限元计算结果显示界面.通过VC++与ANSYS软件之间的通讯,实现模版文件选择、参数设置与传递、有限元计算和结果显示等.
图1 软件基本架构
软件运行时,首先对用户设置的参数进行后台处理,生成APDL计算模版文件,即漏磁检测有限元分析的参数化设计代码;然后,通过VC++程序设计的界面,输入相关参数,并更新模版文件中的特定参数,从而获得ANSYS可执行的命令流批处理文件.程序运行流程如图2所示.
图2 程序运行流程
1.2 APDL模板文件设计
APDL是一种解释性的高级程序语言,提供一般程序语言的功能,如数值运算、逻辑运算、重复执行命令和用户程序以及访问ANSYS有限元数据库等.抽象模版文件通过APDL完成参数化建模、材料定义、网格划分、载荷和边界条件定义、分析控制和求解以及参数化后处理结果的显示等,从而实现参数化有限元分析的全过程.ANSYS自动生成的日志文件(文件格式为*.log)是模版文件设计的基础.抽象模版文件由于缺乏具体的参数数值,没有指定求解方式等具体内容,因此只有通过用户界面交互操作,输入具体的参数,才能在VC++程序中组合形成分析流程完整的模版文件.
将漏磁检测有限元分析输出的日志文件进行修改和简化,并对待定参数进行特殊标记,即可得到用于漏磁检测有限元分析的APDL模版文件.该模版文件主要包括8个部分:定义单元类型;定义检测对象、磁体、衔铁及空气材料属性;建立漏磁检测有限元分析几何模型;规划模型的网格划分;划分网格;确定边界条件;选择求解类型;后处理定义(结果显示以及输出).在使用过程中,VC编写程序通过逆向原理,将用户输入的具体数值自动替换待定参数,即可生成具体可运行的APDL命令流.
1.3 VC++与ANSYS软件的接口
本系统采用参数化设计方法,使用APDL语言编写漏磁检测有限元分析程序,基于Visual Studio2005编写自主软件平台,实现参数的传递和结果的显示.因此,VC++与ANSYS软件之间的通讯需完成以下任务:使用VC++编写的自主化软件调用ANSYS、自主化软件读取APDL文件、存储及调用用户每次计算输入的参数组.有关VC++调用ANSYS软件的方法在ANSYS帮助文件[6]中都有所表述,其程序设计逻辑流程见图3.首先是确定程序运行的工作目录,并获取ANSYS的安装目录,以便调用ANSYS程序及其附属参数,为后续运行做准备.需要说明的是:
1)应该正确选用产品特征码,因为不同的分析类型选用不同的产品特征码,漏磁检测属于电磁场分析,因此其选择的特征码应为emag;
2)因为ANSYS软件读取命令流的字符要求为ASCII,因此模版代码或者生成的具体APDL运行文件须保存为ASCII格式;
3)参数化设计语言中的部分命令在安装目录下才有效,若程序预处理时将其定义其他目录,则该命令会失效,如命令流中/show语句只能在程序目录中生成图形文件,否则,钢管及衔铁中的磁力线分布、漏磁场的磁通密度等将均无法显示;
4)在调用ANSYS前,需配置资源目录,如模版文件的存放地址、现有分析方案的参数数据库等,如果不进行配置,则程序后续运行毫无意义.
图3 VC++调用ANSYS软件流程
1.4 界面设计方法
相比传统的可视化界面,Flash界面美观且开发周期短.相同效果的软件界面,Flash还可以节约代码编写量.为此,本文主要分析VC++与Flash之间的数据交换、Flash在VC++程序中的右键屏蔽以及Flash窗口控制命令向VC++程序传递等问题.
1.4.1 VC++与Flash软件之间的数据交换VC++编译器通常会给Active X控件提供相应的封装包,该包提供当前控件的所有功能.针对Flash,VC++提供了CWnd封装包——CShockwaveFlash.在Flash脚本语言2.0版本中,Flash与VC++程序之间的命令传递只有FSCo mmand,这种方式无法传递参数及数据.而在本系统中,因为软件要选择分析类型,调用有限元分析参数库,并且还要返回数据组成APDL文件,所以使用该版本无法满足其界面交互要求.
而As3.0提供了外部应用程序接口,能异步调用且返回调用参数值,其Exter nal Interf ace方式给程序设计带来了极大的便利.这样,Flash程序通过Exter nal Interf ace即能与CShock waveFlash进行通讯,其过程如图4所示.
图4 Flash与VC++通讯过程
VC++软件编译器通过CShock waveFlash控件,为Exter nal Interface提供了一个事件接收器Flash Call.Flash Call事件的响应参数为request,其在External Interface的调用过程中,读取的数据以XML方式进行封装.Flash为了获取调用Exter nal Interface的方法名和参数,需先解析request封装的XML包.本系统处理Flash Call事件采用void方法,返回数据使用Set Ret ur n Val ue方法.其中,返回的数据也必须是符合Flash规范的XML格式.例如,要返回X ML数据组,把XML添加到〈string〉〈/string〉中,最后Flash平台通过new XML(str)的方法动态生成数据项.
1.4.2 屏蔽软件界面的右键信息 自主开发的软件在使用过程中,往往不希望用户在软件界面中右键弹出Flash属性菜单.虽然VC++控件提供的Set Menu方法能屏蔽绝大部分菜单,但Flash版权信息无法消除.为此,可以截获组件的 WM_RBUTTONDOWN消息实现对Flash右键菜单的屏蔽.这样,软件操作时可以监听并截获用户的右键消息,并将消息传递到其他类,而不传递到Flash控件中去.
在VC++8.0平台中实现方法如下:CShockwaveFlash派生新的类dull,然后监听WM_RBUTTONDOWN消息,直接在消息处理函数中注释掉父类,最后将Flash对象的类修改为新的派生类Dull即可.
1.4.3 Flash控制命令的传递 Flash通过使用fsco mmand命令可以实现退出等功能.但是,由于VC++设计的软件平台将Flash嵌入软件内部,因此Flash的退出命令不能直接控制软件窗体的整体退出.为此,可以在工程项目的对话框CUIShow Dlg类声明中添加DECLARE_EVENTSINK MAP()和消息映射
af x_msg void On FSCo mmand Flash(LCTSTR co mmand.LCTSTR ar gs);
这样,当用户进行窗口最大化、最小化操作时,工程文件中CUIShow Dlg的 WM_SIZE响应通常会把Flash控件布满整个窗口.不过,这种实现方式可能会造成Flash界面频繁闪烁.为此,系统采用先重载控件和对话框擦除背景事件,再用代码防止控件重绘自身的方式来实现窗口控制.
2 运行结果分析
基于上述方法设计的漏磁检测有限元分析软件界面如图5所示.
图5 软件系统操作界面
首先,用户可以根据实际的漏磁检测物理模型选择磁化方式和检测方案;然后,系统根据用户的选项,从后台读取相关APDL模版文件,并提示用户输入模版文件中的待定参数;接着,软件开始进行有限元计算,并可根据用户需要以多种形式显示计算结果,图6所示即为钢管周向磁化漏磁检测有限元计算结果的两种显示方式.
图6 计算结果显示
由于软件的核心计算功能是通过ANSYS完成的,因此其计算结果具有一定的准确性和可靠性.同时,通过全中文化的界面,用户只需进行简单的方案选择和参数设置即可完成从有限元建模到数值计算、结果显示等全过程,其不仅极大地简化了有限元计算过程,还提高了计算效率,使初学者或一般工程技术人员都能有效进行漏磁检测有限元分析.
3 结论
根据漏磁检测有限元计算原理,基于ANSYS参数化设计语言、数据库技术和VC++程序设计方法,开发了一套漏磁检测有限元专用分析软件.运行结果表明,该软件不仅简化了漏磁检测有限元分析过程,提高有限元计算效率,而且计算结果准确可靠,为漏磁检测系统励磁装置和传感器优化设计提供了一种有效的仿真分析工具.
[1]康宜华,石晓鹏.基于单一轴向磁化的钢管高速漏磁检测方法[J].机械工程学报,2010,46(10):8-13.
[2]宋小春,黄松岭,赵 伟,等.高清晰度储罐底板漏磁检测器的研制[J].化工自动化及仪表,2007,34(1):77-80.
[3]宋小春,黄松岭,赵 伟.天然气长输管道裂纹的无损检测方法[J].天然气工业,2006,26(7):103-106.
[4]李路明,张家骏,李振星,等.用有限元方法优化漏磁检测[J].无损检测,1997,19(6):154-158.
[5]李莺莺,靳世久,魏茂安.管道漏磁法检测的ANSYS仿真研究[J].无损检测,2005,27(2):72-76.
[6]博嘉科技.有限元分析软件——ANSYS融会与贯通[M],北京:中国水利水电出版社,2002.