许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Adams变拓扑分析回调子程序怎么用?设计仿真实操

Adams变拓扑分析回调子程序怎么用?设计仿真实操

阅读数 5
点赞 0
article_banner


01 文章背景

通过Adams/Sensor可以有效地完成众多变拓扑分析的工程需求。本文将进一步挖掘Adams进行变拓扑分析的相关功能,方便大家的工程应用。子程序作为Adams一种常用的高级功能,由众多熟悉Adams的工程师展开应用,实现了很多貌似不可能完成的任务。因为,子程序作为一种更加接近Adams内核的对象,可以实现很多界面功能不易实现的应用场景。为此,针对变拓扑分析这一场景,我们在众多子程序中选择CBKSUB子程序展开说明和应用,以期为有这方面需求的工程师拓展出新的使用模式。

02 回调子程序

本文主要描述用于实现仿真过程中不同脚本命令调用的回调函数子程序的内容。


   图 1回调子程序源代码
 

本程序的基本逻辑是,当回调函数遇到传感器触发事件发生时,首先会进行命令字符串的构建,然后将命令传递给Modify函数,Consub可以调用Modify,在执行了Modify发出的命令后,程序控制返回到Consub,关于Consub调用Modify的机制这里不展开。但这里需要注意一个使用特点,Adams/Solver会忽略命令末尾5个空格之后的部分,因此,当使用字符功能构建命令时,需要注意将多余的空格去掉。

对于上述逻辑,如果不想对源代码有过多的认识,只需要考虑后面的使用流程就可以,核心思想是每个sensor对应一个Acf文件,在Acf文件中有相关的命令,当传感器触发事件发生后,程序会将该传感器的ID传输到Data数组中,然后,命令字符串的构建会综合这个ID,这样就形成了那个sensor触发,执行对应的Acf文件的目的。具体流程如下:


   图 2回调函数与sensor联合使用流程
 

说明,上图中绿色框针对的sensor定义以及Acf文件之间有一定的对应关系,在同一个模型中可以有多个sensor的存在,当然需要每个sensor有对应的Acf文件存在。回调源程序按照常规编译流程生成DLL文件供Callback对象调用。仿真时不再需要写复杂的仿真脚本,通过脚本命令也实现不了本功能。

03 应用案例

应用案例的目的,实现模型中多个sensor存在情况下,不考虑触发顺序,按照实际情况,哪个sensor触发就执行对应的命令。如果触发的顺序已知,可以采用常规的仿真脚本即可实现。

基本建模,建立四个球体,从上到下分别为Part_a,Part_b,Part_c,Part_d,其中前两个与大地建立水平滑移副,后两个与大地建立固定副,并且前两个在质心处作用水平力,分别为200N,100N(后继互换),由于重力加速度竖直向下,固定副解锁后会自由落体,以表征sensor事件触发后的动作。最后分别定义两个sensor,事件函数分别为a,b两球的水平速度,比较值分别为10米每秒和15米每秒,由于这里长度采用毫米为单位注意转化。


   图 3基本模型
 

建立的sensor,由于要和回调函数联合应用,此时要求sensor必须有一个触发后的动作,因此,sensor_2类似于sensor_1具体如下:


   图 4左侧为sensor定义,右侧为触发后的动作
 

这里选择了最后一个动作,其实程序并不关注这个动作的数值是什么,只关注有没有这个动作。通过命令库找到Callback的定义项,完成回调对象的定义,如下所示:


   图 5回调对象定义
 

还需完成与传感器对应的Acf文件的创建,这里有两个传感器,因此定义两个Acf文件,具体如下:


   图 6Acf文件定义
 

定义该文件需要注意其名称以及同sensor的ID号之间的联系,这个在源程序中以有过说明。实现的目的,当sensor_1触发后将3号joint抑制,也即part_c小球之后会自由落体;当sensor_2触发后将4号joint抑制,也即part_d小球之后会自由落体。当然,将各自的sensor在触发后关闭。

提交仿真,可以使用交互式仿真也可以使用脚本计算,但是如果使用脚本计算要注意不能再有对传感器的操作,因为本案例找的就是传感器触发事件。


   图 7 0时刻动画
 

上图展示初始状态动画,红色球上施加200N载荷,绿色球上施加100N载荷,分别沿水平方向加速运动,当红色球达到10米每秒速度时sensor_1触发,当绿色球达到15米每秒速度时sensor_2触发,可以观察右侧曲线为各自触发的时刻。


   图 8 Sensor_1触发而sensor_2没有触发动画
 

当sensor_1触发后,黄色球体与大地之间的固定副解锁,可参考sensor_1对应的Acf命令,将Joint_3抑制,黄色球在重力作用下自由落体,可通过动画图中的白色轨迹线看到其已经在动了。


   图 9 Sensor_2触发动画
 

同样地,等到sensor_2也触发后,靓色球体与大地之间的固定副解锁,可参考sensor_2对应的Acf命令,将Joint_4抑制,靓色球在重力作用下自由落体,其已经运动并且有轨迹,但是当前两个球的轨迹重合。

04 文章总结

通过利用回调函数子程序的功能,拾取传感器触发事件,通过编程将每个传感器触发对应的命令选择执行,实现了多个传感器存在情况下,触发次序无关的需求。通过上述流程说明和实例展示,该方法非常简单有效,适合实际工程所需。并且,可以面对交互式仿真或者脚本仿真使用,应用范围较广,可解决这类较复杂工况问题,为多体动力学的变拓扑分析提供了新的解决方法。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空