在多体仿真中,所面临的工况有很多种,不是简单的规定一个时间,给定一个输出步数就能满足所有工况的仿真要求,经常面临仿真过程中对系统拓扑关系的变化、模型参数的调整等需求。此时,Adams中的sensor(传感器)就有了用武之处,通过sensor可以获得某种状态,再通过脚本展开后继的模型修改,从而可以完成绝大多数变拓扑相关的任务要求。本文不再描述简单的sensor应用,而是针对稍微复杂一些的工况融合sensor展开建模和仿真说明。
PART.01
传感器功能
传感器的基本功能类似编程中的if…else语句,通过在仿真过程中实时监测所定义事件的状态,然后实现修改仿真的目的,再结合脚本命令实现修改模型的目的。这里的事件通常通过逻辑函数的方式完成定义,即利用函数表达式与给定目标的比较实现逻辑的定义。一旦返回逻辑真,sensor将会有很多方式进行仿真的修改,比如终止仿真、重启、返回等。对于sensor的深入使用,必须分清楚如下几个概念,函数表达式(function)、事件评估(evaluate)和senval()函数。
函数表达式
通过上图,可以查看函数表达式的对话框位置。这里的函数表达式是为了实现逻辑判断,通过函数构建器完成所需要的函数表达式的定义,也或者叫做事件的定义,但需要明确这里仅仅是事件定义中的函数表达式的定义,后面还需要完成比较定义后,才是完整的事件定义。Adams/Solver正是在仿真过程中,实时监测该事件获得逻辑值的真或假。
事件评估
通过上图,可以查看事件评估的对话框位置。这个地方的expression,仅当sensor事件触发时进行计算,并且可通过senval()获得其值。不要小看senval()函数的作用,它可以让仿真更加灵活,更符合实际工程所需。
PART.02
应 用
第一个实例,实现计数功能。
建模要素:创建一个水平的圆柱,在一端定义转动副,并施加驱动,确保其可以圆周回转。然后进行sensor的定义,按照图示完成定义,其中位移函数使用圆柱质心点和转动铰处点,事件评估处使用senval()函数的计数形式。比较符号采用了equal,比较值为0也即质心点通过y轴时触发事件并完成事件评估计算。
完成模型创建后,进行2秒的计算,这里的驱动设置为360度每秒,因此,可以看到下图中左侧曲线经历了两个周期,也即圆柱转动了两圈。前面已论述触发事件为质心通过Y轴,因此,整个历程中会有四次事件触发,因此,右侧曲线为每次事件触发的时间和最终的计数,两者正好对应。
当然,这类计数的效果Adams还有很多方式可以实现,但是通过sensor结合事件评估与senval()函数的方式,是我们经常采用的一种方法,总体比较简单直接。通过这个简单的实例期望对三者的功能有深入的了解,以便展开下一实例的应用。
第二个实例,当一个模型中有多个sensor时,我们并不清楚本工况下,哪个sensor首先触发,因此,在后继编写脚本时不能确定先写哪个sensor对应的相关命令,本实例应对该种需求。
建模要素:建立四个球体,从上到下分别为Part_a,Part_b,Part_c,Part_d,其中前两个与大地建立水平滑移副,后两个与大地建立竖直滑移副,并且前两个在质心处作用水平力,分别为200N,100N(后继互换),在后两个竖直滑移副上定义驱动,以表征sensor事件触发后的动作。最后分别定义两个sensor,事件函数分别为a,b两球的水平速度,比较值分别为10米每秒和15米每秒,由于这里长度采用毫米为单位注意转化。
完成所需的建模元素定义,为了实现两个sensor的触发不受次序的影响,专门将触发后的动作与之通过senval()函数进行了关联,如下所示:
当sensor没有触发时,senval()的返回值为0,造成驱动速度为0,小球固定在原位不动,当sensor触发时,senval()的返回值为1,造成驱动速度为1000,小球将沿竖直轴滑动。
模型中的建模元素保持不变,仅仅将两个驱动力的幅值进行呼唤,由于sensor的事件定义没有跟着变,两次触发的时间是不同的,再次验证这种方法的适用性。
上图为红球施加200N作用力,绿球施加100N作用力的情形。监测红球水平速度0.2秒左右达到触发条件即10米每秒,通过上图中上面的曲线可以看到在0.2秒左右其值发生了突变。监测绿球水平速度0.6秒左右达到触发条件即15米每秒,通过上图中下面的曲线可以看到0.6秒左右其值发生了突变。由于红色球的触发条件低于绿色球,且红色球的作用力又大于绿色球,这两方面都促使了红色球首先达到触发条件,基于这个工况中两球触发的事件可以横比于后面的工况。
上图为红球施加100N作用力,绿球施加200N作用力的情形(通过图中力的矢量长度也可判断力的相对大小)。监测红球水平速度0.4秒左右达到触发条件即10米每秒,通过上图中上面的曲线可以看到在0.4秒左右其值发生了突变。监测绿球水平速度0.3秒左右达到触发条件即15米每秒,通过上图中下面的曲线可以看到0.3秒左右其值发生了突变。对两球前后两次工况的横比,结合v=at,可以看到是合理的。
当然,前后两次工况下,后面两个动作球,即c和d,有对应触发后的动作体现,通过该例实现了多个传感器条件下,不受限于触发次序的工况要求。
PART.03
总 结
变拓扑分析是多体动力学中比较重要也很常见的分析类型,sensor作为Adams中获取设定事件状态的主要功能,再结合函数、脚本等功能可以有效应对各种类型的变拓扑分析应用。另外,sensor定义中包含了系列参数,如果要对其有更为灵活和深入的使用,需要对这些参数有准确的理解,前述的实例仅仅比常规的sensor应用拓展了事件评估以及senval()函数的应用。
针对变拓扑分析将展开后继子程序应用模式说明,相比单纯的sensor应用将拓展到另一维度,进一步提高应用性。待更。