- 积分
- 93
- 注册时间
- 2003-8-1
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2006-12-24 23:05:00
|
显示全部楼层
来自 上海浦东新区
五、常用函数介绍篇
(一)、adams函数总体介绍
1、ADAMS/View™ 是MDI公司出品的动力学仿真模块,提供了强大的建模与仿真环境。用户可以应用该模块对任何一个机械系统进行建模与仿真。除此之外,还可以通过函数编辑器编写表达式、函数和子程序,以实现对力、测量和运动的定义。在仿真过程中,系统状态实时发生变化,用户能够通过编写运行过程函数实现对系统变量的实时控制。
2、ADAMS/View函数包括设计函数与运行函数两种类型,函数的建立对应有表达式模式和运行模式两种。表达式模式下在设计过程中对设计函数求值,而运行模式下会在仿真过程中对运行函数进行计算更新。ADAMS/Solver函数支持ADAMS/View运行模式下的函数,在仿真过程中采用ADAMS/Solver解算时对这些函数进行计算更新。
3、运行时函数
(1) 运行时函数在仿真运行过程中被触发载入运行的,设计时函数在程序刚开始启动的时候就被载入,并注册。运行时函数可用C或者Fortran代码编写,而设计时函数只能用C编写。
(2) ADAMS/View libraries增加已编译过的设计时函数,定义或者修改模型和后处理方式。ADAMS/Solver libraries为运动和力增加运动时函数,直接定义模型的行为,控制仿真执行的方式。这样可以使你利用已有的软件定义一些复杂的模型间关系,比如液压力、轮胎力等。很多模块,ADAMS/View, ADAMS/Car, ADAMS/Engine,和ADAMS/Rail,可以运行这两种库,因为它们有内部的ADAMS/Solver。
(3) 尽管有一点理解上的困难,但子程序比函数表达式提供了更多的一般性和灵活性。编写一些函数来适应自己的特定需要,链入子程序到ADAMS/Solver,可提高运行效率和仿真速度。子程序和函数表达式的用途是一样的:给ADAMS/Solver定义非标准的输入。函数表达式的使用比较容易,但不能描述复杂的问题,尤其是在包含大量的逻辑判断时;而子程序需要编程、编译和链接,比较复杂,但它的功能更强大,用途更广,包括定义模型元素和指定输出。
4、在进行建立表达式、产生和修改需要计算的度量及建立设计函数等操作时,会采用表达式模式。在建立表达式时,首先在接受表达式的文本框处右击,然后选择“Parameterize”再选择“Expression Euilder”,进入建立设计函数表达式对话框。在该对话框中输入表达式,然后单击“OK”完成操作。
(二)、样条函数的应用
1、样条拟合是在给定曲线或曲面上的已知点间求取中间点的一种插值方法。仿真过程中通过样条拟合函数可以形成一条逼近数据点的光滑曲线。样条函数在下述情况较为通用:
1.1. 采用试验测试数据驱动模型;
1.2. 采用试验测试数据定义驱动力;
1.3. 通过数据点绘制光滑曲线。
ADAMS/View 允许采用三种插值方法,即:三次样条曲线拟合、B样条曲线拟合、Akima拟合法,它们对应的函数分别为CUBSPL、CURVE、AKISPL,其拟合特征及优、缺点如下表所示:
2、AKISPL函数
格式:AKISPL (First Independent Variable, Second Independent Variable,Spline Name, Derivative Order)
参数说明:
First Independent Variable —— spline中的第一个自变量
Second Independent Variable (可选) —— spline中的第二自变量
Spline Name —— 数据单元spline的名称
Derivative Order (可选) —— 插值点的微分阶数,一般用0就可以
function = AKISPL(DX(marker_1, marker_2, marker_2), 0, spline_1)
spline_1用下表中的离散数据定义
自变量x 函数值y
-4.0 -3.6
-3.0 -2.5
-2.0 -1.2
-1.0 -0.4
0.0 0.0
1 0.4
2 1.2
3 2.5
4 3.6
3、函数CUBSPL( 1st_Indep_Var , 2nd_Indep_Var , Spline_Name , Deriv_Order)
其中1st_Indep_Var定为时间变量time,2nd_Indep_Var 设为0,Spline_Name 为所保存的力与时间的曲线图名称,Deriv_Order设为0。力与时间的曲线图可以在菜单build—>data elements—>spline建立。
(三)、step函数的应用
1、Step函数格式为:step(x,x0,h0,x1,h1) 其中各参数意义如下:
x ―自变量,可以是时间或时间的任一函数
x0 ―自变量的STEP函数开始值,可以是常数或函数表达式或设计变量;
x1 ―自变量的STEP函数结束值,可以是常数、函数表达式或设计变量
h0 ― STEP函数的初始值,可以是常数、设计变量或其它函数表达式
h1 ― STEP函数的最终值,可以是常数、设计变量或其它函数表达式
2、[链接汇总]step函数应用大集合!
http://www.simwe.com/forum/viewt ... hlight=%BA%AF%CA%FD
(四)、if函数的应用
1、格式:IF(表达式1: 表达式2, 表达式3, 表达式4)
参数说明:
表达式1-ADAMS的评估表达式;
表达式2-如果的Expression1值小于0,IF函数返回的Expression2值;
表达式3-如果表达式1的值等于0,IF函数返回表达式3的值;
表达式4-如果表达式1的值大于0,IF函数返回表达式4的值;
例如:函数 IF(time-2.5:0,0.5,1)
结果: 0.0 if time < 2.5
0.5 if time = 2.5
1.0 if time > 2.5
2、IF((time/2.4-aint(time/2.4))*2.4-1.2: 2,0,-2)
这个意思是:
time/2.4-aint(time/2.4))*2.4-1.2<0: 函数值为:2,
time/2.4-aint(time/2.4))*2.4-1.2=0; 函数值为:0,
time/2.4-aint(time/2.4))*2.4-1.2>0; 函数值为:-2
3、【原创】来一个分段函数,大家来写写:
http://www.simwe.com/forum/viewt ... 6%B6%CE%BA%AF%CA%FD
(五)、sensor,acf的应用
1、acf应用实例:我的仿真过程是16秒,我想在0-4秒和8-12秒内约束1激活、约束2失效,在4-8秒和12-16秒内约束2激活、约束1失效,应该怎么写呢?
——应该是:deactivate/joint,id=2
simulate/dynamic,end=4,steps=100
activate/joint,id=2
deactivate/joint,id=1
simulate/dynamic,end=8,steps=100
activate/joint,id=1
deactivate/joint,id=2
simulate/dynamic,end=12,steps=100
activate/joint,id=2
deactivate/joint,id=1
simulate/dynamic,end=16,steps=100
2、怎样删除sensor?
下拉菜单edit里有delete项,在模型中任何对象不被选中的情况下单击delete,然后在数据库中选中要删除的sensor即可。同样的方法可以失效deactive一个sensor。
(六)、函数的典型应用
1、[转帖]ADAMS函数使用精华:
http://www.simwe.com/forum/viewt ... hlight=%BA%AF%CA%FD
2、【讨论】关于分段函数的添加:
http://www.simwe.com/forum/viewt ... hlight=%BA%AF%CA%FD
3、关于orient函数:
http://www.simwe.com/forum/viewt ... hlight=%BA%AF%CA%FD
4、【讨论】子函数参数含义:
http://www.simwe.com/forum/viewt ... hlight=%BA%AF%CA%FD
5、如何确定一个从动运动的motion函数:
http://www.simwe.com/forum/viewt ... hlight=%BA%AF%CA%FD
6、【原创】如何把MEA(或spline)加入到motion中!!
http://www.simwe.com/forum/viewt ... ht=spline%2Bandyxin
7、[链接汇总]spline运用:
http://www.simwe.com/forum/viewt ... mp;highlight=spline
[ 本帖最后由 andyxin 于 2006-12-24 23:46 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|