第8章 ADAMS/View函数及ADAMS/Solver函数
8.3.7 合力函数
FX FY FZ FM TX TY TZ TM
返回两标架间作用的合力在X轴上的分量 返回两标架间作用的合力在Y轴上的分量 返回两标架间作用的合力在Z轴上的分量 返回两标架间作用的合力
返回两标架间作用的合力矩在X轴上的分量 返回两标架间作用的合力矩在Y轴上的分量 返回两标架间作用的合力矩在Z轴上的分量 返回两标架间作用的合力矩
8.3.8 数学函数
CHEBY 计算切比雪夫多项式 FORCOS 计算傅立叶余弦级数 FORSIN 计算傅立叶正弦级数 HAVSIN 定义半正矢阶跃函数
INVPSD 依据功率谱密度生成时域信号 MAX 计算最大值 MIN 计算最小值 POLY 计算标准多项式 SHF 计算简谐函数
STEP 3次多项式逼近阶跃函数 STEP5 5次多项式逼近阶跃函数
SWEEP 返回按指定格式生成的变频正弦函数
还有其他一些常用数学计算的数学函数与ADAMS/View设计函数中的数学函数相同。
8.3.9 数据单元
VARVAL ARYVAL DIF DIF1 PINVAL POUVAL
返回状态变量的当前值 返回数组中指定元素的值
返回微分方程所定义变量的积分值 返回微分方程所定义变量的值 返回输入信号中指定元素的运行值 返回输出信号中指定元素的运行值
8.4 函数应用实例
ADAMS/View函数和ADAMS/Solver函数功能强大、使用灵活,是应用ADAMS进
机械系统动力学分析及ADAMS应用
行工程分析时的强大工具。下面结合一个多体动力学模型振动分析的例子,具体介绍ADAMS/View函数和ADAMS/Solver函数的使用方法。这里仍采用上一章介绍的振动分析模型,模型描述参见7.6.1节,模型结构如图7-9所示,该模型可以视为汽车振动系统的一个简化模型,可用于研究汽车的平顺性。
8.4.1 定义不同形式的驱动约束
应用函数可以定义不同形式的驱动约束。在上述模型中,所定义的驱动约束激励相当于路面不平度激励。根据实际路面不平度激励的形式,可以有多种不同的形式。采用ADAMS/View函数和ADAMS/Solver函数可以对驱动约束进行定义、解算等。
(1)驱动约束中函数的建立
建立好的动力学模型中已经含有驱动约束,但驱动约束的数值可能不是我们所需要的,如缺省的驱动约束一般定义为一个常数与时间的乘积。因此,需要将驱动约束建立成特定的运行函数形式,以便更为真实地反映实际的激励情况。
首先在ADAMS/View的屏幕上右击驱动约束,会出现关于右击鼠标区域附近许多对象的浮动菜单,包括附近的其他构件、标架、约束及力等。这时需从中选择需要进行修改的驱动约束,然后在这个驱动约束名字后面的浮动菜单中选择“Modify”,进入驱动约束修改对话框。在对话框中有一项“Function(time)”是描述该驱动约束的函数,其后面的文本框就是输入运行函数表达式的地方。在接受表达式的文本框处右击,出现下拉式菜单后在其中选择“Function Builder”;或者在接受表达式的文本框后面单击“…”按钮,都可以进入建立运行函数表达式对话框。在该对话框中输入表达式,然后单击“OK”完成操作。
上面建立驱动约束的过程中,需要在对话框中输入表达式来定义驱动约束的具体形式,这个表达式需要用一个函数来定义。采用不同的函数可以定义不同的驱动约束形式
(2)阶跃函数、脉冲函数等形式的驱动约束
阶跃函数是一般数学计算中常用的函数,也是振动分析中的一类典型输入,因为具有特定的频率响应特性而广为采用。阶跃函数的形式为:STEP (x, Begin At, Initial Function Value, End At, Final Function Value)。
其中x为自变量,当x小于Begin At值时,因变量的值为初始值Initial Function Value;当x大于End At值时,因变量的值为终止值Final Function Value;当x在初始值和终止值之间时,因变量依据一定规律光滑过渡,避免出现数值过渡突变、微分值不连续。
在前述实例中,所用的阶跃函数形式为:STEP (time, 0.1, 0.0, 0.2, 1.0)*5.0。则通过计算生成阶跃函数,阶跃函数直接作用在构件5上,造成构件5的垂直方向位移为阶跃函数的形式,如图8-1所示。
第8章 ADAMS/View函数及ADAMS/Solver函数
图8-1 实例所用的阶跃函数
脉冲函数也是一般数学计算中常用的函数,是振动分析中的一类典型输入,因为具有特定的频率响应特性而广为采用。脉冲函数可由阶跃函数构造而成,以保证其良好的连续性、光顺性。
在前述实例中,所用的脉冲函数定义为:STEP (time, 0.1, 0.0, 0.2, 1.0)*STEP (time, 0.2, 1.0, 0.3, 0.0)*5.0。则通过计算生成脉冲函数,脉冲函数直接作用在构件5上,造成构件5的垂直方向位移为脉冲函数的形式,如图8-2所示。
图8-2 实例所用的脉冲函数
采用类似的方法,还可以生成sin等三角函数形式的驱动约束。 (3)样条函数形式的驱动约束
在实际应用中有时需要采用来自实际测试的数据作为输入,这时需要将这些输入数据定义为样条函数,然后定义样条函数形式的驱动约束。
首先需要将测试数据输入到ADSMS/View中,在ADSMS/View的“File”菜单中选择“Import…”,然后在出现的“File Import”对话框中将“File Type”选为Test Data(*.*)。这时对话框随之而变为相应的测试数据输入形式,在“File Type”下面复选框上选中“Create Spline”,然后在“File to Read”文本框中键入(或用单击右键后从“Brouse…”菜单中选择)所需读入的数据文件的文件名,该文件中数据为两列,分别为时间值和测试数据值。注意还要在“Independent Colume Index”文本框中键入数字“1”,表示所输入的数据第一
机械系统动力学分析及ADAMS应用
列就是自变量(时间)。最后按下“OK”按钮,则测试数据就已经以样条的形式输入到ADSMS/View中了。
观察由输入测试数据生成的样条,可以从ADSMS/View的“Build”菜单中选择“Data Element”再选“Spline”-“Modify”,然后从弹出的“Data Navigator”对话框中选择新产生的样条的名称(如果前面没有输入过样条,这里就是缺省的样条名称和编号“SPLINE_1”),就可进入“Modify Spline …”对话框。在该对话框中可以检查和修改用来生成样条的输入测试数据点的数值,还可以将测试数据点和样条绘成曲线进行观察。
然后需要将驱动约束定义为由输入测试数据生成的样条,在驱动约束定义中采用样条函数。样条函数有几种不同形式,其中较常用的AKISPL样条形式为:
AKISPL (First Independent Variable, Second Independent Variable, Spline Name, Derivative Order)
其中前两个参数为自变量,一般以时间为第一个自变量、第二个自变量设为0。Spline Name是所需调用的样条的名字,Derivative Order是样条的阶数,选择0时返回样条曲线坐标值。
在前述实例中,所用的样条函数定义为:AKISPL(time , 0 , SPLINE_1, 0)。通过计算生成样条函数,样条函数直接作用在构件5上,造成构件5的垂直方向位移为符合测试数据的形式,如图8-3所示。
图8-3 实例所用的样条函数
8.4.2定义和调用系统状态变量
应用函数可以定义和调用系统状态变量。在设计过程中,有时需要将系统中某个元素在仿真过程中的数值引入定义另一个元素,这时需要将元素的可变数值定义为系统的一个状态变量;而在定义另一个元素时采用状态变量函数来调用前面定义的状态变量。这个状态变量函数及所定义的元素会在仿真计算过程中随时计算更新,以保证满足仿真计算的功能需求。
在前述实例中,在一般汽车结构中为降低驾驶室(构件2)振动幅度,可以采用在悬架上加装主动控制机构的方法,就是在车架(构件3)和车桥(构件4)之间增加一个主动力发生装置。而这个主动力的大小是和车架(构件3)和车桥(构件4)之间的相对位移、速度和加速度有关的。为此,可以将前面的相对位移、速度和加速度定义成系统的状态变
第8章 ADAMS/View函数及ADAMS/Solver函数
量,而通过变量函数将主动力定义为状态变量的函数,由此实现悬架的主动控制。
(1)系统状态变量的定义
定义系统状态变量,首先需要在“Build”菜单中选中“System Element”,然后选“State Variable”-“New”,这时会弹出参数系统状态变量对话框,在对话框中“Difinition”文本框后选择“Run-time expression”。这种形式的对话框中有一项“F(time,…)”是描述该状态变量的函数,其后面的文本框就是输入运行函数表达式的地方。在接受表达式的文本框处右击,出现下拉式菜单后在其中选择“Function Builder”;或者在接受表达式的文本框后面单击“…”按钮,都可以进入建立运行函数表达式对话框。在该对话框中输入表达式,然后单击“OK”完成操作。
上面建立系统状态变量的过程中,需要在对话框中输入表达式来定义状态变量的具体形式,这个表达式需要用一个函数来定义。具体采用何种函数视状态变量的功能而定,如前述实例中为完成主动控制,需要将车架(构件3)和车桥(构件4)之间的相对位移、速度和加速度定义成系统的状态变量。
定义相对位移、速度和加速度的函数参见8.3.1、8.3.2、8.3.3部分。如需定义两个标架间在y方向的相对位移,所用的相对位移函数定义为:
DY( To_Marker , From_Marker , Along_Marker )
其中From_Marker和To_Marker是两个标架的名称,而Along_Marker则是说明函数沿哪个参考坐标系的y轴方向测量相对位移。
在前述实例中,如需定义构件3质心和构件4质心之间的相对位移,所用的相对位移函数定义为:DY( PART_3.cm, PART_4.cm, PART_4.cm)。其他函数采用相似的方法定义
(2)系统状态变量的调用与主动控制力的定义
定义了系统状态变量后,需采用特定的变量函数进行调用。变量函数的具体形式为:
VARVAL (id)
其中id为所调用的系统状态变量的编号。在前述实例中,将系统状态变量VARIABLE_1,VARIABLE_2定义为构件3质心和构件4质心之间的相对位移、速度、加速度,则在调用这三个状态变量时采用VARVAL (1) 、VARVAL (2) 、VARVAL (3)的形式。
要在构件3和构件4之间作用一个主动控制力,可以采用图标、命令行和命令导航器三种不同的形式。采用这三种形式生成一个SFORCE后,可以右击这个SFORCE弹出“Modify Force”对话框,然后在对话框上对这个力进行修改。在对话框中“Define Using” 文本框后选择“Function”,指定采用函数的形式定义这个力的大小。这种形式的对话框中有一项“Function”是描述该力的大小的函数,其后面的文本框就是输入运行函数表达式的地方。在接受表达式的文本框处右击,出现下拉式菜单后在其中选择“Function Builder”;或者在接受表达式的文本框后面单击“…”按钮,都可以进入建立运行函数表达式对话框。在该对话框中输入表达式,然后单击“OK”完成操作。
在前述实例中,如需定义主动控制力为构件3和构件4之间的相对位移、速度的函数,在这里调用系统状态变量的形式为:VARVAL(1)*(-10.0)+VARVAL(2)*(-0.0) +VARVAL(2)*(- 0.1)。
采用了这样的主动力控制后,构件2的加速度如图8.4-4中虚线所示,原始的加速度如