Equipment Manufactring Technology NO.1, 2008
"
!!!!"
计算机应用
!
!
"!!!!"
使用自定义函数进行 ADAMS 的二次开发
秦 成
( 北京 7220 信箱, 北京 100072)
摘要: 对通过编制用户自定义函数进行 ADAMS 的二次开发的方法及步骤进行了详细论述。并以实例介绍了上述技术的实现过程。
关键词: ADAMS; 二次开发; 用户自定义函数
中图分类号: TH113; TP39
文章编号: 1672- 545X( 2008) 01- 0074- 03
文献标识码: A
ADAMS( Automatic Dynamic Analysis of Mechanical System)
是目前世界上应用最广泛的、最具权威性的机械系统动力学仿
真分析软件, 已 经 被 广 泛 应 用 到 航 空 航 天 、兵 器 、汽 车 、机 械 制
造等各个行业。
ADAMS不 仅 是 一 个 优 秀 的 虚 拟 样 机 建 模 和 分 析 软 件 , 同
时也可作为开发虚拟样机分析应用软件的有效工具。用户可对
ADAMS进行功能定制, 如进行 ADAMS/View 界 面 的 用 户 化 设
计; 可利用语言实现自动建模和仿真功能, 如宏命令的应用; 针
对特殊的应用需求, 通 过 编 制 用 户 自 定 义 函 数 或 子 程 序( Us-
er- Written Subroutine) , 可 进 行 ADAMS的 二 次 开 发 , 以 拓 展
ADAMS的功能, 为用户定制具有特定功能的仿真分析软件。
1 用户自定义函数
ADAMS不但提供了方便的用户操作界面, 而且具 有 强 大
的分析求解功能, 本身就包含了种类很丰富的库函数供用户使
用。一般情况下, ADAMS 的大部分功能可以通过调用库函数来
完 成 , 库 函 数 很 容 易 操 作, 不 必 编 译 和 连 接 程 序, 而 且 ADAMS
/Solver 还会提供运行时函数。但库函数提供的只是有限的编程
结构, 因此有些复杂的情况, 特别是涉及到逻辑表达时, 用库函
数的现有函数很难表达出来。因此当需要采用一些 ADAMS没
有提供的特殊函数时, 可以采用用户自定义函数。
用 户 自 定 义 函 数 利 用 编 程 语 言 来 定 义 元 素 或 者 特 定 的 输
出, 具有库函数所没有的通用性和灵活性。用户自定义函数通
过程序设计语言 ( Fortran 或 C) 来定义 ADAMS不能提供的函
数, 使之按照用户的需求而量身订作。且通过连接用户自定义
函数, 不会失去 ADAMS的任何功效, 也不会降低仿真速度。
当下列情况时, 通常会使用用户自定义函数:
( 1) 数学函数很难表达。
( 2) 需 定 义 多 用 户 使 用 的 函 数 或 用 于 和 其 他 程 序 进 行 交
换。
( 3) 需要控制复杂仿真运行时, 以及需要作决策逻辑时。
在 ADAMS 中 有 两 种 类 型 的 函 数 : 设 计 时 函 数( De-
sign- time Function) 和运行时函数( Run- time Function) 。因此自
定 义 函 数 也 分 两 种 类 型 : 设 计 时 自 定 义 函 数( User- written
Function) 和运行时自定义函数( User- written Subroutine) 。
1.1 设计时自定义函数
设 计 时 函 数 用 于 优 化 和 敏 感 性 研 究 中 构 造 参 数 化 的 样 机
模型, ADAMS/View 仅在样机的建模设计时 才 计 算 设 计 时 函 数
的值。除优化和设计研究以外, 设计时函数的值在仿真过程中
是不变的。设计时函数包括: 数学函数、位置和方向函数、模型
函数、数组和矩阵函数、字符串函数及数据库函数等。
设计时自定义函数是由 C 或 Fortran 语言编写, 并被编译连
接到 ADAMS/View 中。它具有 ADAMS/View 提供的设计函数一
样的功能, 用户可以用同样的方式使用这些函数。
1.1.1 设计时自定义函数的编写
编写基于 C 语言的设计时用户自定义函数的步骤:
( 1) 拷 贝 并 修 改 ADAMS安 装 目 录 下 ┅Aview/usersubs 中
vc_init_usr.c 模板文件中的 C 源代码或直接编写能够实现特定
功能的 C 程序。
( 2) 在 VC++6.0 环境下, 编译上述 C 程序, 生成目标文件。
( 3) 利用动态链接库技术, 建 立 ADAMS/View 与 目 标 函 数
的链接。
( 4) 在 ADAMS中使用自定义函数。
虽 然 ADAMS只 提 供 了 一 个 用 C 语 言 编 写 用 户 自 定 义 函
数的模板, 但设置 C 函数不同的 返 回 值 和 主 参 数( 模 板 中 提 供
了 各 种 组 合, 详 见 mdi_c.h) , 完 全 可 以 开 发 出 功 能 强 大 的 自 定
义函数来丰富 ADAMS/View 的函数库, 满足用户的特殊要求。
1.2 运行时自定义函数
运行时函数用于定义仿真状态之间的数学关系, 可以影响
样机在仿真过程中的表现。运行时自定义函数在仿真分析时被
求 解 器 动 态 载 入 和 调 用 , ADAMS 仅 在 仿 真 分 析 中 更 新 运 行 时
函数值。设计时函数包括: 位移函数、速度和加速度函数、接触
函数、作用力函数及数学函数等。
虽然 ADAMS软件本身包含了内容丰富的函数库, 可以满
足一般要求下的调用。但是对特定用户而言, 可能需要根据实
际需要定义特殊的系统参数。通过运行时自定义函数, 用户可
以在 虚 拟 样 机 仿 真 分 析 过 程 中 输 入 用 户 自 己 自 定 义 的 数 据 或
输出用户感兴趣的当前步的仿真结果和状态数据; 并进一步丰
富 ADAMS的运行时函数库。
收稿日期: 2007- 10- 24
作者简介: 秦 成( 1973—) , 男, 吉林白城人, 博士, 工程师, 研究方向: 虚拟制造技术。
74
运行时自定义函数以 Fortran 语言为模板编写, 如果需要
一个 C 语言的自定义函数, 必须通过修改 Fortran 文件来创建
它 。 自 定 义 函 数 被 编 译 并 连 接 到 ADAMS , 从 而 创 建 到
ADAMS/Solver 的用户库文件中去, 然后 该 库 与 ADAMS/Solver
一同运行。它具有 ADAMS/Solver 提供的运行函数一样的功能,
在 ADAMS仿真求解时进行调用。
1.2.1 运行时自定义函数的编写
编写基于 Fortran 语言的运行时用户自定义函数的步骤:
( 1) 拷 贝 并 修 改 ADAMS安 装 目 录 下 ┅Solver/usersubs 中
的各种用户自定义函数模板( 如 Gfosub、Vtosub 函数等) 文件中
的源代码或直接编写能够实现特定功能的 Fortran 程序 ( 注意
严格按照模板格式编写) 。
( 2) 在 Visual Fortran 6.6b 环 境 下, 编 译 上 述 Fortran 程 序 ,
生成目标文件。
( 3) 在 ADAMS 中 进 行 设 置 : Settings/Solver/Solver Exe-
cutable ( 如 Executable=External, Solver Library= ┅ \user.dll,
Choice=Fortran) ;
( 4) 模型在仿真的时候会从你指定的 dll 文件里调用用 户
自定义函数。
2 实例
对船舶在海上运动状态的模拟一般有两种方法: 一是进行
两船的水 动 力 学 分 析, 这 种 模 拟 十 分 复 杂 和 困 难; 二 是 参 考 船
舶在 实 际 条 件 的 运 动 状 态 数 据 和 船 舶 在 最 恶 劣 情 况 下 的 极 限
数据, 采 用 随 机 运 动 方 式 的 方 式 来 进 行 模 拟, 如 应 用 蒙 特 卡 洛
法产生正态分布的伪随机数来进行模拟。由于 ADAMS/View 提
供的 Rand(
) 函数无法满足 要 求, 故 需 要 编 制 产 生 服 从 正 态 分
布的伪随机数的用户自定义函数。
2.1 编制用户自定义函数
2.1.1 编写 C 源程序
编辑 vc_user_sub.c 文件如下:
#include "mdi_c.h"
#include "math.h"
#include "usePortName.h"
#include "utilccallable.h"
#define M 8388608
#define T 2045
double Mkrand( double l )
{
double x,r,k,y,x1,x0;
x0=1;x1=1;
int j,i;
for( j=0;jor EXIT。”
此 时, 键 入 vc_user_sub.dll 回 车 后 进 入 ADAMS/View 界 面
下, 单击菜单 Setting/Solver/Solver Executable, 从弹出 Solver Set-
tings 对话框中已经可以看到 vc_user_sub.dll 自动添加到 Solver
Library 中。
在 ADAMS/View 下 , 点 击 菜 单 Tools/Function Builder, 打 开
函 数 构 造 器 对 话 框 , 在 下 拉 列 表 框 选 择 All Function 函 数 ,
Mkrand 出现在下面的列表框里, 这时就可以像对库函数提 供
的函数一样对它进行使用, 也可以在表达式中直接引用。
2.2 使用用户自定义函数
船 舶 在 海 上 的 运 动 状 态, 在 三 级 海 况 下, 舰 船 最 大 升 沉 距
离为 1.5m, 周期 8s, 其升沉运动 Z 可用下式来表示:
z =β1.5sin( 2!
8
t +z 0) Mkrand( a)
式 中: β 为 升 沉 影 响 因 子 ; a 为 Mkrand 函 数 的 主 参 数 , 用
来标识不同的伪随机数; z 0 为 初 始 相 位; 利 用 自 定 义 函 数 可 以
对船舶升沉运动进行模拟, 为进一步的仿真分析打下基础。
75
Equipment Manufactring Technology NO.1, 2008
3 结论
用户自定义函数是进行 ADAMS 二次开发的重要手段。详
细论述了 ADAMS 用户自定义函数的编写方法及步骤; 并 以 舰
船海上升沉运动的模拟为例, 说明了 ADAMS 用户自定 义 函 数
的使用方法。
参考文献:
[1]
陈 立 平,等.机 械 系 统 动 力 学 分 析 及 ADAMS 应 用 教 程[M]. 北 京 : 清
[2]
[3]
[4]
[5]
[6]
华大学出版社,2005.
李 军,等.ADAMS 实例教程[M]. 北京: 北京理工大学出版社,2002.
贾长治,等.基于 ADAMS 的装备故障仿真及评估研究[J]. 系统仿 真
学报,2001,13( 6) : 781- 784.
王晓东.MSC.ADAMS 二次开发技术应用研究.MSC.Software 中国 用
户论文集,2004: 115- 117.
时军委, 等. 空间对接机构 ADAMS 数字样机建模与仿真[C].MSC.
Software 中国用户论文集,2003: 1- 7.
郑建荣.ADAMS 虚拟样机技术入门与提高[M].北京: 机械工业出版
社,2004.
Secondary Development of ADAMS Us ing Us er- Written Subroutine
QIN Cheng
( Beijing 7220 Mailbox, Beijing 100072, China)
Abs tract: The detailed concept of way and step of secondary development of ADAMS using User- Written Subroutine was given in this paper.
Then the process was given a example.
Key words : ADAMS; Secondary development; User- Written Subroutine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[上接第 61 页]
长线上分别划出 10 个等分点;( 2) 通过各等分点分别作与弦长
的垂直线, 与 弧 线 相 交, 交 点 即 为 所 要 作 的 特 殊 点;( 3) 利 用 软
件功能读 出 各 个 特 殊 点 到 弦 长 线 的 距 离, 并 标 出, 得 出 图 3 所
示的图纸;( 4) 根据图示尺寸在钢板料上划出两弦长线, 在弦长
线上量出等分点, 通过等分点和图示距离分别找出弧线上的特
殊点, 把各特殊点用平滑圆弧连接, 就得出近似的圆弧线, 其他
尺 寸 线 依 照 图 画 出, 注 意 两 头 留 出 150~200mm 的 压 边 , 完 成
放样后进行切割下料。
3
.
8
4
3
0
3
8
11.18°
5561.5
9
.
8
4
9
.
6
8
4
1
1
3
.
0
3
1
7
.
5
3
1
556.1
R
2
8
5
5
4
.
4
4
.
5
8
7
1
591.1
.
2
4
4
1
.
5
8
3
1
5910.9
.
2
1
2
1
.
4
2
9
2
5
2.4 卷板与围拼
图 3 各块的展开图
在 卷 板 之 前, 先 做 各 圆 弧 样 板, 以 确 保 各 块 圆 弧 板 卷 制 的
准确成形。卷板之后, 割去两边压边, 按要求开出焊接坡口。
上下锥体的直径都大于厂房门口, 可选择在露天场地围拼
焊接, 但场地必须要有 25t 起重机和较大铆焊平台。底座大头
中 径 !7538mm, 小 头 中 径 "7092mm, 先 在 平 台 上 划 出 大 头 外
径, 在圆弧周围焊上定位块, 然后把四块弧板依次围拼, 点焊固
定, 测量检查上下口直径, 确认无误后开始焊接, 按一级焊缝要
求进行焊接, 焊后 100%探 伤, 以 确 保 焊 缝 质 量, 最 后 加 焊 底 面
法兰和加强筋板等, 至此底座的制作完成。
底座工件净质量约 25t, 翻转时最好采用双台吊车抬吊的方
法解决。技术要求中不允许有“十”字拼接焊缝存在, 相邻焊缝
间距不少于 100mm 等, 在制作每一节筒体时, 都做好平面坐标
定位, 在 各 节 之 间 对 接 位 置 都 做 好 标 志, 以 确 保 各 节 对 接 基 准
的统一和焊缝的技术要求。
3 结束语
对 大 型 圆 锥 体, 通 过 电 脑 展 开 放 样, 解 决 了 手 工 计 算 误 差
大, 无法 直 接 划 出 大 圆 弧 实 样 的 难 题; 通 过 对 材 料 进 行 电 脑 排
版, 可以大大提高材料利用率; 该工艺方法的实施, 保证了整个
圆锥柱体的制作精度, 确保了项目工程的质量与安全。
The Riveting and Welding Proces s of Large Cone
LIANG Guo- chang
( Guangxi Liuzhou Iron & Steel Group Company, Liuzhou Guangxi 545002, China)
Abs tract: Taking the process of the security water tower as an example, the process of precisely making a large cone steel structure, including
the major technical problems in the process were introduced. This can provide a reference for the people who work in this field.
Key words : Water towers; Cone; Simulation lofting; Welding
76