您现在的位置是:首页 > 行业 > 制造 >
ANSYS二次开发技术在协同仿真环境中的应用
2011-08-03 18:02:00作者:杨磊 刘更 郑党党 郭琦来源:
摘要针对协同仿真环境集成框架的需求及ANSYS软件的特点,在ANSYS10.0基础上综合利用TCL/TK、APDL和UIDL三种二次开发工具将其功能组件化,实现主菜单栏动态修改。...
1 引言
随着机械制造信息化的高度发展,机械行业进入了协同仿真的时代。协同仿真环境(Collaborative Simulation Environment,简称为CSE)就是面向复杂机械系统,有效集成商用软件和自制软件,解决在工程机械产品研发过程中仿真分析流程和数据管理等问题,为仿真分析人员及管理人员提供简单易用的集成平台。
ANSYS软件作为一种以有限元分析为基础的大型通用CAE软件,已经广泛的应用到机械、化工、土木、材料、航空、船舶、汽车等领域中,是CSE的重要集成对象。但ANSYS软件本身协同性能差,菜单重叠繁杂不便于操作,数据和流程管理困难等。针对以上问题,综合运用多种工具对ANSYSl0.0进行二次开发,将其功能组件化,实现组件数据自动提取,开发友好的界面,采用Socket技术建立ANSYS与CSE之间的通信,以满足CSE集成框架的需求,实现CSE对ANSYS的无缝集成。
2 基于ANSYS的CSE集成框架
CSE主要包含仿真Web门户、CAE工作台、仿真流程管理平台、报告管理系统、知识管理系统等功能模块,其中CAE工作台主要为仿真分析人员提侈l丑作平台进行流程建模和各项仿真分析,实现仿真分析人员与嵌入式CAD/CAE软件交互操作。为便于CSE的流程管理和数据管理,同时提高仿真软件的可集成性,方便用户操作,将CAD/CAE功能组件化,各功能组件可即插即用动态装载,对相似的仿真任务可实现组件的重用。为实现众多CAD/CAE软件的统一调用,需开发软件调用适配器Adapter。为使仿真组件与平台无关,开发代理接口Agent完全封装仿真组件。
图1 基于ANSYS的CSE集成框架
基于ANSYS的CSE集成框架,如图I所示。CAE工作台根据用户操作信息从数据库中查询相关数据传递给Adapter,并将模型数据转移到临时文件夹。Adapter判断调用ANSYS时,将相关参数传递给ANSYS代理接口 AnsysAgent。AnsysAgent解析参数,启动ANSYS并调用对应仿真组件。仿真组件在执行时调用临时文件夹中模型数据,完成时将当前状态信息返回给CAE工作台,最终保存到数据库,同时提取组件仿真数据和保存ANSYS数据库文件到临时文件夹,最后由CAE工作台转移到数据库和内容仓库。
3 ANSYS二次开发技术
ANSYS软件具有良好的开放性,可以利用二次开发经行功能扩充,主要提供4种二次开发工具目:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特征(UPFs)和数据接口。但这些工具的界面开发功能较弱,目前也有人使用工具命令语言TCL/TK对ANSYS二次开发并实现了多种功能。以上工具是相互联系的、各有侧重、各有所长,其中APDL是一门可用来自动完成有限元常规分析操作或参数化变量方式建立分析模型的脚本语言,可以将用户操作过程以命令形式组织起来,形成宏程序;UIDL主要用于组织主菜单系统,构建对话框,实现参数的输入,同时可以建立自己的联机帮助;TCL/TK是由TCL和TK两部分组成,TEL是一种解释性的脚本语言,TK是TCL的图形工具箱,提供各种标准界面开发控件,利用TCWrK可以开发满足用户要求的界面,从ANSYS5.5开始,TCL/TK已被编译到ANSYS分析环境中,ANSYS调用TCL/TKX程序的格式为-eui,‘source filename.tcl’,filename.tcl为TCL文件名。综合运用以上多种开发工具能够开发出更加强大的功能和友好美观的界面。
UIDL组织主菜单栏的运行机制为:ANSYS软件在启动时运行安装目录下的guiscriptsAnsysMainMenu.eui文件生成菜单栏,此文件由TCL语言编写,文件中AnsysMainMenu过程根据menulistl00.ans控制文件查找存放UIDL程序的文件夹,优先在ANSYS工作目录中查找。UIDL程序文件夹内有后缀为EUI和GRN的文件,分别简称为EUI文件和GRN文件,GRN文件即为UIDL控制文件,EUI文件为GRN文件经过翻译后的TCL文件。AnsysMainMenu过程根据GRN文件的最后修改时间判断是否翻译GRN文件,运行最新的EUI文件生成菜单栏。建立各级菜单的任务在UIMENU.GRN文件中完成,菜单对应的命令及对话框函数(简称UIDL函数)在UIFUNCI.GRN等文件中实现。
4 基于套接字的进程间通信技术
套接字(Socket)是一种网络通信技术,可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket根据网络传输协议及网路驱动接口将信息发送给另外一个Socket中,使这段信息能传送到其他程序中,其原理图如图2所示。建立Socket通常需要制定5个参数昀:发送方和接收方的IP地址、发送方和接收方的端口,以及通信协议。通常先启动实时监听套接字的应用程序称为服务器端;向服务器端发送信息的应用程序称为客户端。发送方和接收方的IP设为同一台计算机时,可实现系统进程间通信。
ANSYS软件本身没用进程间通信的接口,但TCL能够容易实现Socket编程,采用Socket技术实现AnsysAgent与ANSYS进程问的通信。AnsysAgent和ANSYS软件在同一台计算机上,可以将AnsysAgent设置成服务器端,ANSYS设置成客户端,两端连接成功后互相发送和接受消息,两者使用TCP网络协议。
图2 Socket通信原理图
5 面向CSE的ANSYS二次开发设计与实现
5.1 ANSYS仿真组件设计及其调用
根据ANSYS软件功能模块及操作习惯,将前处理分为模型导人、单元材料定义、网格划分、边界条件与载荷施加组件,求解操作分成静力学求解、模态分析求解等组件,后处理分成通用后处理,时间历程后处理组件,对于不同仿真任务可有不同的划分方法。各组件主菜单栏只显示与该组件功能相关的菜单,屏蔽其他功能菜单,菜单的最后添加完成功能按钮,用于提取仿真组件输入数据和保存ANSYS数据文件,并返回当前状态信息。各组件工具栏设置“CSESTART”、“BACKCOLOR”和“RETRUNMENU”三个按钮,分别实现组件菜单替换、图形界面背景反色和返回原始菜单功能。在ANSYS启动时设置“START"按钮用于连接Socket和启动第—个组件。
CSE中参数传递使用通用的XML格式,ANSYS不能直接读取,AnsysAgent接收数据后需将其解析为APDL命令文件及文本文件,同时根据参数和系统进程判断启动ANSYS。在软件已动的情况下采用Socket通信方式自动调用仿真组件;在软件未启动情况下,先启动软件,由用户点击工具栏按钮方式连接Socket,同时调用仿真组件。组件操作完成后点击完成按钮保存数据文件并将完成信息发送给AnsysAgent最终返回到CAE工作台,然后启动下—组件,如此循环,直到整个仿真流程完成。其具体调用流程,如图3所示。
图3 AnsysAgent与仿真组件调用流程图
5.2 具体实现
5.2.1 组件莱单栏动态替换
组件调用流程中需在ANSYS启动情况下调用不同仿真组件,直到仿真任务完成。根据UIDL的运行机制,为每个仿真组件中定制UIMENUI.CHN文件来控制菜单根节点的显示,同时删除UIMENUI.CHN文件根节点部分的代码,并在menulist 100.ans文件中衍定其文件的路径.启动仿真组件时使用TCL/TK删除主菜单栏,用本组件的UIMENUI.CHN文件覆盖上个组件中对应的文件,并改变文件的最后修改时间为当前时间,然后Anays MainMenu过程重新生成主菜单栏,即可实现不重启ANSYS的悄况下动态替换主莱单栏。其体的TCL/TK代码(略)。
5.2.2 组件数据自动提取和保存
ANSYS软件本身可从数据库中提取数据,主要由*GET、*VGET 和查询函数实现。由于ANSYS写文件命令复杂,且格式较单一,文中使用TCL提取数据并将数据写入文件。TCL与ANSYS接口中的ans_evalexpr命令可以提取APDL表达式的计算结果;ans_getvalue命令与*GET功能相同,用于提取单个数据;ans_getvector命令与*VGET功能相同,用于提取APDL数组。在组件完成事件中运行指定的TCL 程序,提取与此组件相关的数据,再按一定格式写入文件,并利用APDL的SAVE命令保存ANSYS数据库文件到指定位置,实现组件数据的自动提取和保存。
5.2.3 用户界面实现
针对UIDL及APDL界面开发功能不足,使用TCL/TK进行用户界面开发,然后在UIDL 模式下将其添加到菜单功能模块中,具体命令为cmd_)~eui,‘source filename.tcl’,用户点击菜单按钮即可调用TCL/TK程序,弹出对话框。通过TCL 与ANSYS 接口中的ans_sendcommand 命令可向ANSYS 发送APDL 语句,也能发送UIDL函数名调用ANSYS图形拾取界面,介绍的命令可提取ANSYS数据,综合运用这些功能可实现对话框与ANSYS之间的交互。使用Visual TCL工具能够可视化开发TCL/TK,可以像Visual Basic一样拖放控件,生成的文件只需做部分修改即可在ANSYS中运行,可大大提高开发效率。
5.2.4 工具栏实现
生成工具栏按钮的命令为*ABBR,其后带两个参数,第一个参数为显示的名称,第二个参数为点击按钮所执行的命令,当第二个参数为空时删除该按钮。为各组件配置生成工具栏按钮的文件,在组件调入时使用ABBRES命令读取此文件即可实现工具栏的替换;在ANSYS启动情况下直接将*ABBR 命令写入工作目录的start100.ans文件中,ANSYS启动时能够自动读取。
5.2.5 Socket 进程间通信的实现
AnsysAgent为服务器端,使用C#语言实现,主机地址直接使用本地主机localhost,端口号与客户端的一致,建立Socket对象时指定为TCP 协议即可。AnsysAgent运行时启动Socket开始监听客户端连接。
ANSYS为客户端,由TCL语言实现,需指定服务器端主机地址和端口号来打开一个Socket,通信协议默认即为TCP。由于TCL利用Socket 接收消息的机制为遇到回车符表示接收完毕,服务器端发送消息时要添加回车符。接收服务器端的消息为APDL 格式,在消息处理函数中使用ans_sendcommand 命令直接发送给ANSYS,Socket客户端部分TCL代码(略)。
6 应用实例
根据上面所述的实现方法,在CSE中利用ANSYS软件完成齿轮箱静力学分析,将整个分析过程分成模型导入、材料单元定义、网格划分、边界条件与载荷施加、静力学分析求解、后处理六个仿真组件。调用模型导入组件时启动ANSYS软件及Socket通信,其后的组件在不重启ANSYS情况下自动调用。其中边界条件与载荷施加组件界面,如图4所示。主菜单栏保留了位移约束和载荷施加的功能,将其他功能屏蔽;由于此分析需在轴承孔施加余弦函数载荷,组件中定制余弦函数加载功能界面,用户只需按照说明输入集中力大小与方向,然后建立柱坐标系即可,大大减少了用户的工作量;菜单栏下方的“Complete”按钮即为组件完成功能按钮。
图4 边界条件与载荷施加界面
7 结论
综合运用TCL/TK、APDL 及UIDL语言对ANSYS10.0进行二次开发,将软件功能组件化,实现组件的自动调用,满足了CSE集成框架的需求,并具有良好的扩展性,同时方便仿真人员使用,能大大提高工作效率,缩短产品研发周期。以上方法开发的程序,在ANSYS其他版本同样适用,具有一定的通用性;采用Socket技术实现ANSYS软件与AnsysAgent之间的通信是一项通用技术,为其他软件集成中实现进程间通信提供一种途径。
(本文不涉密)
责任编辑: