logo资料库

MSC.ADAMS_二次开发技术应用研究.pdf

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
2004 年 MSC.Software 中国用户论文集 MSC.ADAMS 二次开发技术应用研究 王晓东 西北大学 - 1 -
2004 年 MSC.Software 中国用户论文集 MSC.ADAMS 二次开发技术应用研究 Application Research Of The Redeveloping Technique Of MSC.ADAMS 王晓东 西北大学 摘 要: MSC.ADAMS 不仅是一个优秀的虚拟样机建模和分析软件,同时也可作为开发虚拟 样机分析应用软件的有效工具。用户可以针对特定的应用需求,对 MSC.ADAMS 进行功能定制 和 二 次 开 发 , 扩 充 其 功 能 或 者 将 其仿 真 分 析 功能 集 成 到 自己 的 程 序 中。 本 文 从 编 写 MSC.ADAMS 用户自定义函数和 MSC.ADAMS/SDK 开发两个方面,对 MSC.ADAMS 的二次开发技术 及其在工程上的应用进行了介绍。 关键词: MSC.ADAMS 虚拟样机 二次开发 用户自定义函数 Abstract: MSC.ADAMS is an excellent software of virtual prototyping analysing,as well as a developing tool .For the specific purpose,users can redevelop the MSC.ADAMS software so as to strengthen the capability of simulation and analysis,or integrate such capability into your own applications. The redeveloping technique of MSC.ADAMS softwre is briefly described in programing user-writen functions and devoloping MSC.ADAMS/SDK. Key words: MSC.ADAMS,virtual prototyping,redevelopment,user writen functions 1 前言 虚拟样机技术(Virtual Prototype Technology)是当前设计制造领域的一门新兴的 CAE 技术,主要功能是在计算机上建立机械系统的三维实体模型和力学模型,分析和评估系 统的性能,为物理样机的设计和产品的制造提供参数依据。目前,国际上已经有许多厂商开 发的针对虚拟样机技术的商业软件,比较有影响的主要包括美国 MSC.Software 公司的产品 系列。MSC.ADAMS 就是其中的一种机械系统自动动力学分析软件,工程师和设计人员利用它 可以建立和测试虚拟样机,在计算机上仿真分析复杂机械系统的运动学和动力学性能。过去 需要数月才能完成的建造和测试物理样机的工作任务,现在利用 MSC.ADAMS 软件仅仅需要几 个小时就可以完成,并且还可以很方便地实现最优化设计,其经济效益显而易见。 MSC.ADAMS 一方面是虚拟样机建模和分析的应用软件,能够对虚拟机械系统进行静力 学、运动学和动力学分析;另一方面又是开发虚拟样机分析应用软件的得力工具,其开放性 - 2 -
2004 年 MSC.Software 中国用户论文集 的程序结构和多种函数接口,为特殊行业用户定制自己特定功能的虚拟样机分析提供了二次 开发的能力。但目前国内对 MSC.ADAMS 软件的应用尚处于学习研究和初步应用阶段,相关的 资料缺乏,介绍有关 ADAMS/SDK 二次开发的文档更是少之又少,仅有的几本教程在涉及这方 面内容时或语焉不详,或一语带过。本文在参考 MSC.ADAMS 软件包文档资料的基础上,结合 对某快速原型设计系统的开发实践经验,介绍了使用 MSC.ADAMS 用户自定义函数的方法和 ADAMS/SDK 二次开发的技术。 2 MSC.ADAMS 的体系结构 MSC.ADAMS 软件是由众多的模块组成的,有 3 个最基本的功能模块:ADAMS/View、 ADAMS/Solver 和 ADAMS/PostProcessor。利用 ADAMS/View 模块,用户可以快捷方便地直接 在 ADAMS 中创建比较简单的完全参数化的机械系统实体模型,复杂而精细的模型一般可以在 其它的 CAD 软件中创建,然后导入到 ADAMS/View 模块。在 ADAMS/View 里对模型施加力/力 矩、约束和运动激励之后,调用 Solver 模块,可以执行一组与实际运行工况接近的运动仿 真分析,分析的结果以动画和图线的形式同步显示,供用户观察,更详尽的结果可以通过调 用 ADAMS/PostProcessor 模 块 进 一 步 进 行 分 析 。 ADAMS/View 、 ADAMS/Solver 和 ADAMS/PostProcessor3 个模块之间的关系如图 1 所示。 A/View Command File (.cmd) A/View Integrated Solver Interactive Solver Command Dataset (.amd) Analysis Files .out .gra .req .res A/PostProcessor ADAMS Command File (.asf) A/Solver Message File (.msg) 图 1 ADAMS/View、/Solver 和/PostProcessor 之间的关系(粗箭头表示调用) ADAMS/View 在进行仿真运算时,除了可以调用外部的 ADAMS/Solver 模块,也可以调用 基于 SDK 开发的集成于 View 程序内部的内置 Solver。ADAMS/View 在缺省情况下使用内置的 Solver,在 View 视窗的 Settings\Solver 菜单下可以更改此设置,另外还可以设置其它仿 真参数,包括仿真时间、步长、解算器类型等。使用内置 Solver 时,ADAMS/View 通过运行 数据库(runtime database)传送模型数据到 Solver,利用 SDK 提供的一些 API 函数进行 - 3 -
2004 年 MSC.Software 中国用户论文集 仿真控制。而当调用 ADAMS/Solver 模块时, ADAMS/View 会生成一个模型文件 (.adm),传 给 ADAMS/Solver,并利用命令文件 (.acf) 控制 Solver 的执行。信息文件 (.msg)记录解 算过程中可能产生的出错信息,如果求解无误,最后生成一个分析结果文件 (.res),同时 还可以根据需要选择是否输出存储请求文件(.req)和图形文件(.gra)等。 用户使用 MSC.ADAMS 软件有两种方式:基于命令的方式和基于代码的方式,如图 2 所示。 ADAMS/View 提供了大量的命令和丰富的宏,通过 GUI 直接操作命令和宏,或者编写命令脚 本文件(.cmd、.acf),可以胜任大多数的建模和仿真任务。但对于一些需要精细控制或者 有特殊应用要求的仿真工作,就需要用户自己编写源代码,以 API 调用的方式直接操作模型 数据库(AMD)。 Custom ADAMS/View Source Code Based User-Writen Functions ADAMS/SDK Functions Command Language Based ADAMS/View GUI Macros & Commands ADAMS Model Database(AMD) 图 2 MSC.ADAMS 软件的两种使用方式 3 定制用户自定义函数(user-writen functions) MSC.ADAMS 软件不但提供了方便的用户操作界面,而且具有强大的分析求解功能,本身 就包含了种类很丰富的函数库供用户使用。但在某些情况下,用户可能需要以子程序/函数 的形式定义自己的力和运动发生器,或者用于和其它程序进行数据交换,这时就要用到 MSC.ADAMS 的开放式结构和用户自定义函数。 MSC.ADAMS 软 件 中 的 函 数 分 设 计 时 函 数 和 运 行 时 函 数 两 种 。 设 计 时 函 数 用 于 在 ADAMS/View 中创建模型和定义测量等,而运行时函数只能在仿真时被 ADAMS/Solver 动态调 用。MSC.ADAMS 软件的二次开发语言支持 C 和 FORTRAN,这里主要介绍用 C 语言编写用户自 定义函数。 3.1 编写设计时用户函数 设计时用户函数的编写比较简单,它结合宏命令可以设计出用手工方法很难实现的复杂 - 4 -
2004 年 MSC.Software 中国用户论文集 模型。这里以编写一个计算平面内两点距离的用户自定义函数 DISTANCE()为例说明此类函 数的使用过程,具体可分为以下三个步骤。 3.1.1 编写设计时用户函数 假定MSC.ADAMS软件的安装目录为D:\ADAMS 12.0,首先把D:\ADAMS 12.0\aview\ usersubs文件夹下的vc_init_usr.c和mdi_c.h拷贝到工作目录下,vc_init_usr.c主要包含 了一个vc_initialize_user()函数,用于注册用户自定义的函数,使其在ADAMS/View里可用。 编辑vc_init_usr.c文件如下: #include "mdi_c.h" #include "math.h" double distance (double x1,double y1, double x2,double y2) { return(sqrt(x2-x2)^2+(y2-y1)^2); } void vc_initialize_user() { vc_function_add("DISTANCE",(FUNCTION) distance,fn_R_RR,2,0); } "DISTANCE"是显示在 ADAMS/View 函数构造器(Function Builder)中的用户自定义函 数名称,fn_R_RR 是枚举类型常量,表示函数返回值类型为实型,有两个实型参数,第 4 个 参数表明参数的个数,用于冗余校验前一个参数,最后一个参数表示单位类型,一般取 0。 更详细的定义和注释可参考 mdi_c.h 头文件。 3.1.2 编译、链接为 DLL 如果系统中已经安装了 C/C++编译器,可通过以下命令行方式把用户函数源代码编译并 链接为动态链接库文件 user_distance.dll。 cl.exe /c /G6 /Ox /MD vc_init_usr.c D:\MSC.ADAMS 12.0\common\mdi.bat aview cr-u n vc_init_usr.obj -n user_distance.dll –n 3.1.3 在 ADAMS/View 中使用用户函数 用下面的命令运行 MSC.ADAMS 软件,进入 View 模块。 D:\MSC.ADAMS 12.0\common\mdi.bat aview ru-u i user_distance.dll - 5 -
2004 年 MSC.Software 中国用户论文集 这样,用户函数库文件在 MSC.ADAMS 启动后被自动载入。点击菜单“Tools\Function Builder”打开函数构造器对话框,在下拉列表框选择“All Functions”,“DISTANCE”出现 在下面的列表框里,这时就可以象对内置函数那样对它进行使用了。 3.2 编写运行时用户函数 运行时用户函数可以在虚拟样机仿真分析过程中输入用户自定义的数据和输出用户感 兴趣的当前步的仿真结果和状态数据,在工程中具有更广泛的用途。比如在研究飞行器的运 动特性时,利用 MSC.ADAMS 软件可以极大地简化建模和仿真工作量,见图 3。分析飞行器的 受力情况,除了重力被自动施加到运动模型上外,而推力和气动力的计算却都比较复杂,它 们和当前的运动状态和控制参数密切相关,一般只能通过编写外部函数的方式实现。用户函 数的输入主要为求解器提供的当前仿真步下的飞行器的运动参数,输出为飞行器所受的气动 力/力矩和推力,供求解器使用。 计 算 气 动 力 的 用 户 函 数 A/PostProcessor ( 对 仿 真 结 果 的 后 处 理 ) A/View ( 创 建 飞 行 器 本 体 模 型 ) 计 算 推 力 的 用 户 函 数 A/Solver ( 求 解 飞 行 器 运 动 方 程 ) 图 3 基于 MSC.ADAMS 的飞行器运动仿真 飞行器所受的作用力可以用沿 x、y、z 轴方向的 3 个分力和 3 个力矩分量来表示,在 MSC.ADAMS 中定义为 GFORCE 类型,如图 4 所示。 图 4 模型及受力 同设计时用户函数不同,由于运行时用户函数在仿真时被求解器动态载入和调用,因此 它们的函数名称和形参个数、类型等都要按照 ADAMS 预先规定好的格式编写,具体可参看 - 6 -
2004 年 MSC.Software 中国用户论文集 ADAMS/Solver 帮助文档。GFORCE 用户函数原型声明如下: VOID_FUNCTION GFOSUB( int *id, REAL *time, REAL *par, int *nPar, BOOL *fDiff, BOOL *fInit, REAL); GFOSUB() 的 形 参 用 于 求 解 器 和 用 户 函 数 之 间 的 数 据 交 互 , *results 也 可 定 义 为 results[6],它将用户函数计算得到的 3 个力和 3 个力矩的结果传回到求解器。如果要得到 当前的运动状态数据,可以在用户函数里调用 MSC. ADAMS 提供的工具函数 SYSARY()和 SYSFNC(),它返回当前步指定的两点之间的位移、速度和加速度等数据。这样,就可以根据 这些状态数据在用户函数里计算出当前步的飞行器所受的推力和气动力/矩。 最 后 设 置 仿 真 时 间 、 步 长 和 运 动 初 始 条 件 等 参 数 , 进 行 仿 真 。 仿 真 结 束 后 调 用 PostProcessor 模块显示和分析结果。某飞行器在平飞状态受到垂直突风扰动后,其质心处 的位移、速度和加速度变化量随时间的变化历程曲线如图 5 所示。 图 5 PostProcessor 中显示的仿真结果 4 ADAMS/SDK 的二次开发 ADAMS/SDK 可以从源代码级直接进行模型中实体对象的创建、访问、修改和删除以及仿 真输出等操作,它最初用于 MSC.ADAMS 和其它 CAD/CAM/CAE 工程软件产品的集成,如 Pro/E、 UG 等,这些软件能够实现和 MSC.ADAMS 的无缝连接就是 SDK 二次开发的功劳。利用 ADAMS/SDK,用户也可以把 MSC.ADAMS 的运动仿真功能完全集成到自己的软件中来,或为已 有的软件产品增加更强的运动仿真功能,集成后的软件与 ADAMS 具有同等的仿真分析能力。 MSC.ADAMS 中所有的模型数据,包括模型及其各个零件的几何形状、尺寸、物理属性、 装配关系、运动关系等都存储在模型数据库(AMD)里,在 AMD 里的每个对象都可以用它的 属性来描述,比如对象的类型(模型、零件、标记、铰等)、双亲对象、名称、方位等,在 创建对象的时候设置这些属性值。属性的种类和数量取决于对象的类型,一个对象属性的可 取值类型为整型、实型、布尔型、字符串型和对象型这五种。AMD 是按树型结构组织的,图 - 7 -
6 展示了这种关系。 2004 年 MSC.Software 中国用户论文集 AMD数 据 库 单 位 模 型 1 模 型 n 零 件 运 动 副 仿 真 分 析 受 力 运 动 零 件 数 据 集 运 动 副 数 据 集 受 力 数 据 集 运 动 数 据 集 分 量 x 分 量 y 分 量 z 分 量 x 分 量 y 分 量 z 分 量 x 分 量 y 分 量 z 分 量 x 分 量 y 分 量 z 图 6 ADAMS 模型数据库结构图 利用 SDK 进行二次开发,就是建立在对 AMD 操作的基础上。由于 ADAMS/SDK 和 ADAMS/View 模块都是运行于同样的模型数据库上的,所以 SDK 里的函数在 View 模块中依然可用,而任 何一个 View 模块里的建模、仿真命令都可以用 SDK 函数很快实现。 在对某飞行器控制系统进行快速原型设计时,为提高工作效率,要求将 CAD 软件的建模 功能、MSC.ADAMS 软件的动力学分析功能、Mtlab/Simulink 的控制仿真功能以及其它必需的 工程类软件集成在一个统一的设计建模、仿真分析环境中实现。为最大程度地提高软件的集 成度,对于动力学分析模块决定利用 ADAMS/SDK 二次开发的方法实现。 系统开发环境为 Windows XP,Visual C++ 6.0 和 MSC.ADAMS 11.0 软件开发包。在进行 开发之前,首先要确保软件已被正确地安装和注册。源代码可参考 MSC.ADAMS 11.0 软件包 中提供的 SDK 例程。因为 SDK 里的函数是用 C 语言开发并编译的,所以要在 C++中调用,就 要在头文件(.h)中对 SDK API 函数声明时要加上关键字“extern C”。此外,对 C++编译 器环境还要进行相应的设置: (1) 在 Tools->Options-> Include Directiories 下 添 加 : D:\ADAMS 11.0\ ADAMSsdk\include;在 Tools->Options-> Lib Directiories 下添加:D:\ADAMS 11.0\ADAMSsdk。 (2) 在 Project->Settings…->Link->Category:Input-> Object/library modules: 下 添 加 ADAMS/SDK 导 入 库 文 件 : adamssdk.lib 、 adamssdk_imp.lib 和 asutility_imp.lib 以 及 其 它 几 个 必 需 的 C/C++ 导 入 库 文 件 : ws2_32.lib 、 comctl32.lib 和 netapi32.lib ; 在 Ignore libraries : 下添 加 libc.lib 、 - 8 -
分享到:
收藏