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