4.1 计算求解
4.1.1 计算类型
1.装配计算
如果在建立构件时构件之间的位置并不是实际装配的位置,就利用运动副的约束关系将两个构件放置到正确的位置。
2.运动学计算
由于运动副和驱动是约束系统的自由度,因此当添加运动副和驱动后相应的系统自由度就会减少。如果系统的自由度减少到零,那么系统各个构件的位置和姿态就可以在任意时刻由约束关系来确定,在进行计算仿真时系统会进行运动学计算,由于系统做平面运动,因此任意一个运动副添加旋转驱动,系统的自由度均为零,进行运动学仿真。在这种情况下,系统认为驱动提供任意大小的驱动载荷,只要能满足运动学关系就行。在运动学计算中,计算运动副的相对位移、速度、加速度、约束力和约束载荷以及任意Marker点的位移、速度、加速度等数据。
3.动力学计算
模型上不会添加驱动,而是让其在重力的作用下运动。由于系统还有一个自由度未确定,因此系统进行动力学计算。在动力学计算中,将会考虑构件的惯性力,求解动力学方程,计算运动副的相对位移、速度、加速度、约束力和约束载荷以及任意Marker点的位移、速度、加速度等数据。
4.静平衡计算
静平衡计算时系统构件在载荷的作用下受力平衡。一个系统有多个静平衡位置,运行一定时间的运动学计算或动力学计算后让系统到达某一位置,再进行一次静平衡计算,这样就可以找到该位置附近的静平衡位置。一个系统可能会有多个静平衡位置,如果在静平衡位置处开始动力学计算,系统就会始终不动。
5.线性化计算
线性化计算将系统的非线性动力学方程线性化,这样得到系统的共振频率和振型(模态)。
4.1.2 验证模型
在仿真计算之前,对系统的构成、系统的自由度、未定义质量的构件和过约束等情况进行查询,即便是在建立模型的过程中也要进行查询,以保证模型的准确性。依次单击菜单Tools→Model Verify,系统弹出系统信息窗口,如图4-1所示,从中可以看到有关模型的详细信息。
图4-1 验证模型信息
4.1.3 仿真控制
仿真控制是决定仿真计算的类型、仿真时间、仿真步数和仿真步长等信息。可以使用两种仿真控制,一种是交互式,另一种是脚本式。交互式是普通的方式,完成多数的仿真,脚本控制不仅能完成交互式的所有功能,还能完成一些特殊的功能,如在仿真过程的模型中修改一些元素的参数或改变积分参数等。
1.交互式仿真控制
单击工具栏中的仿真计算按钮,弹出交互式仿真控制对话框,如图4-2所示。
图4-2 交互式仿真对话框
交互式仿真控制对话框中的选项如下。
Step
01 控制按钮: 运行仿真计算、 终止仿真计算、 返回仿真设置的起始位置、 播放最后一次仿真的动画、 验证模型。
Step
02 Sim.Type:仿真类型有Default、Dynamic(动力学计算)、Kinematic(运动学计算)和Static(静平衡计算)。如果选择Default,系统就会根据模型的自由度自动选择进行动力学计算还是进行运动学计算。
Step
03 仿真时间:有End Time(终止时间)和Duration Time(持续时间)两个选项。如果选择Duration Time,当仿真结束后再次单击仿真计算按钮,就会从上次仿真计算结束的时间开始继续进行仿真计算。另外,如果需要进行静平衡和装配计算,可单击 和 按钮。
Step
04 仿真计算的步长和步数:如果选择Steps,设置仿真步数,系统根据仿真的时间和步数计算仿真的时间间隔,如果选择Step Size,就需要输入仿真计算的时间间隔。
Step
05 Start at equilibrium:从静平衡位置处开始仿真计算,系统会在模型的当前位置处找到一个静平衡位置,然后从该位置开始进行仿真计算。
Step
06 Reset before running:在仿真计算时,从模型的起始位置开始仿真计算。
Step
07 仿真计算过程中的调试:No Debug(没有调试)、Eprint(在信息窗口显示每帧计算信息)和Table(在新窗口中显示每帧的迭代等信息)。
Step
08 仿真设置:单击Simulation Settings按钮后,弹出仿真设置对话框。设置目标不同,对话框中的内容也不一样。
2.脚本仿真控制
脚本仿真控制相当于求解器性质的仿真控制命令,并读取相关的仿真控制参数。在运行脚本仿真控制以前,必须先创建脚本控制命令。单击按钮,系统弹出创建仿真控制脚本的对话框,进行如下3种脚本仿真控制。
(1)Simple Run:简单脚本控制,在这种情况下只能进行运动学、动力学和静平衡计算控制。如图4-3所示,在Script Type下拉列表中选择Simple Run,在Simulation Type下拉列表中选择仿真类型,有运动学、动力学和静平衡计算控制,然后输入相应的仿真参数,创建仿真脚本。
图4-3 创建脚本控制对话框
(2)Adams View Commands:ADAMS/View命令方式,如图4-4所示。在Script Type下拉列表中选择Adams View Commands,然后在下面的输入框中输入命令。在这种情况下需要知道ADAMS/View的命令语法格式。如果对命令语法不熟练,可单击Append Run Commands按钮,之后出现新的对话框,如图4-5所示。在Run command to be appended to script下拉列表中选择仿真类型,并输入相应仿真参数,单击OK按钮,将仿真命令添加到命令的末尾。在这种情况下,如果用命令的方式改变了模型的参数,求解器不会理会这些参数,而是按一开始时的参数进行仿真计算。如果确实想修改模型的参数,就只能回到最初状态进行修改,而不能在仿真脚本中用命令来修改。
图4-4 创建ADAMS/View仿真脚本控制对话框
图4-5 添加ADAMS/View仿真命令对话框
(3)Adams Solver Commands:求解器命令方式,如图4-6所示。在Script Type下拉列表中选择Adams Solver Commands,然后在下面的输入框中输入命令和参数,在Append ACF Command下拉列表中选择仿真控制命令,就会弹出相应的对话框,输入参数即可。在这种仿真脚本控制下,修改模型中元素的参数,例如改变仿真步长、仿真精度、使元素失效或者有效等,因此在这种情况下可以完成常规仿真所不能完成的一些特殊计算。
图4-6 创建ADAMS/Solver仿真脚本控制对话框
以上是创建脚本的方法。在创建脚本后,需要执行脚本命令。单击菜单Simulation→Script Controls后,系统弹出执行脚本仿真控制对话框,如图4-7所示。在Simulation Script Name输入框中输入脚本命令的名称,然后单击按钮开始运行脚本仿真。
图4-7 执行脚本仿真控制对话框
4.1.4 传感器
与仿真控制密切联系的一个元素是控制器,传感器感知系统运行到某一个状态的时间,这种状态是系统模型元素之间的函数,也是时间的函数,例如两个Marker点之间的位置、速度、加速度等。当传感器感知到状态已经发生时,采取一定的动作,从而改变系统的运行方向,使系统采用另外一种方式继续进行仿真计算。将脚本控制和传感器结合起来进行仿真控制,可完成一些特殊的仿真控制,例如在某一状态下使约束失效、取消重力加速度等。
定义传感器,需要定义传感器感知状态的事件以及事件发生后系统要执行的动作。单击菜单Simulate→Sensor→New后,弹出定义传感器对话框,如图4-8所示。
图4-8 定义传感器对话框
1.定义传感器感知的事件及事件发生的条件
定义传感器,首先要定义传感器感知事件以及判断事件发生的条件。求解器在每一步计算过程中都会将事件的值与判断事件发生的值进行比较,当事件的值满足发生条件时就认为事件发生了,此时传感器会让系统执行一定的动作。
在定义传感器对话框中,Event Definition项定义传感器感知事件,通常用函数表达式来表示。事件选择用Run-Time Expression(运行过程函数)和User-Written subroutine(用户自己定义的子程序)来表示。如果用运行过程函数来定义,在Expression后的输入框中输入具体的函数表达式来定义,单击按钮弹出函数构造器来创建复杂函数表达式。Event Evaluation项定义传感器事件的值,表示传感器返回值、如果时间是角度值,还需要选择Angular values项。判断事件发生的条件是等于某个目标值,大于等于某个目标值或者小于等于某个目标值。由于求解是在一定的步长范围内进行的,因此事件的值不可能与判断事件发生的值完全匹配,只要事件的值与判断事件发生的值在一定的误差范围内,就认为事件的值满足事件发生的值。当判断条件是等于时,事件发生的条件是事件落在真值区间范围内(Value-Error Tolerance, Value + Error Tolerance);当判断条件是大于等于时,事件发生的条件是事件的值落在(Value-Error Tolerance, +∞)范围内;当判断条件是小于等于时,事件发生的条件是事件落在(-∞, Value + Error Tolerance)范围内。判断条件是等于的时候,如果仿真步长过大,事件的值就有可能跨越事件发生的范围,使传感器感知不到时间发生了。在这种情况下,需要减少仿真的步长。
2.定义传感器产生的动作
当传感器的事件发生时需要由传感器产生一定的动作,从而改变求解器方向。传感器产生的动作分为标准动作和特殊动作。
标准动作分为以下几种。
(1)Genrate additional output step:在传感器事件发生时再多计算一步。
(2)Set output step size:重新设置计算步长,需要输入新的仿真步长。
(3)Terminate current step and:当使用交互式仿真控制时,如果选择Stop就终止当前的仿真;如果选择Continue就继续当前的仿真命令并执行下一个仿真命令。
特殊动作分为以下几种。
(1)Set integration step size:设置下一步积分步长,以提高下一步的计算精度。
(2)Restart integration:如果在Set integration step size中设置了计算精度,就使用该精度进行计算;如果没有就重新调整积分阶次。
(3)Refactorize Jacobian:重新启动矩阵分解,以提高计算精度。另外,在不能收敛的条件下,重新启动矩阵分解有利于收敛。
(4)Dump state variable vector:将状态变量的值写到工作目录下的文件中。