欢迎来到天天文库
浏览记录
ID:21951405
大小:269.96 KB
页数:5页
时间:2018-10-25
《adams用户子程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ADAMS用户子程序摘要针对小球振动的简单模型,利用ADAMS用户子程序,说明子程序的编写和使用,验证三种模型结果的正确性。1引言一般情况下,ADAMS的人部分功能通过函数表达式完成,函数表达式很容易操作,因为不必编译或连接程序,而且ADAMS/Soke还会实吋地提供函数表达式。但函数表达式提供的只是有限的编程结构,因此有些复杂的情况,特别是涉及一些逻辑表达,用函数表达式则很难表达出来。因此在需要采用一些ADAMS没冇提供的特殊函数吋,采用用户子程序。用户子程序更具有通用性,利用编程语言来定义模型元素或者特定的输出。用户将函数表达式写成子程序的形式并将其与ADAMS/Vie
2、w连接,它具有函数表达式所没有的通用性和灵活性。子程序利用通用程序设计语言(FORTRAN或C)的功能來定义ADAMS/View不能提供的函数,并使之按照需要而量身设计。通过连接用户子程序,不会失去ADAMS/View的任何功效,也不会降低仿真速度。2计算模型质量为5kg的小球在弹簧力和重力作用下做振动,弹簧的刚度为200N/m,阻尼为lN/(m/s)。在ADAMS中建立弹簧从简单到复杂可以有三种方法:1)直接建立模型;2)使用Sforce,在Sforce中写弹簧力的方程;3)使用用户子程序。2.1模型1新建一个质量为5kg的小球,创立一个弹簧,在重力的作用下振动,如图1所
3、示。1模型1示意图2弹簧设置2.2模型2根据弹簧力的表达式来定义Sforce,因为VY速度为负,因此,表达式可以表示为:200*DY(MARKER_3,PART_2.cm)-l*VY(PART_2.cm)。2.3模型3使用子程序表达弹簧力,输入参数为2,3,200,1。前两个参数表示弹簧的两个MARKER点ID,第三个参数为弹簧刚度,第四个参数为弹簧阻尼。ModifyForceNameDirectionBodySFORCE2OnOneBody,FixedinSpaceDefineUsingUserParametersRoutineSolverIDSubroutine2.0,
4、3.0,200.0,1.0S^osub-dllForceDisplayOnPART2QK
5、Apply
6、Sancel
7、图3用户子程序设置ADAMS用户子程序如下:#includeHslv_c_utils.h"adams_c_SfosubSfosub;voidSfosub(conststructsAdamsSforce*sforce,doubletime,intdflag,intiflag,double*value){doubledy,vy;doublek,c;intipar[2];interrflg;ipar[0]=sforce-〉PAR[0];ipar[1]=sforce-
8、〉PAR[1];k=sforce->PAR[2j;c=sforce->PAR[3];c_sysfnc("DY’’,ipar,2,&dy,&errflg);c_sysfnc(’’VY”,ipar,2,&vy,&errflg);*value=-(k*dy+c*vy);}3计算结果通过仿真计算,可以得到计算结果如下。o.--Modell••■•Model2--Model30.51.01.5Time(sec)UU-fO60■OH•50.0(uo4Mou)ooJOlL40.0.04弹簧力MODEM.15(JO)44)UJ)C46U①J055Au51—2.0Time(sec)5小球运动
9、轨迹如图4所示,三种模型所表达的弹簧力完全重合,可以知道,方程表达式与用户子程序可以正确的表达函数。如图5所示,三种模型小球的运动轨迹与规律完全相同。如上所述,三种模型的结果完全相同。由此可见,ADAMS自带的模块、函数表达式还有用户子程序都是正确的。但是用户子程序应用更加广泛,适用性更强,可以模拟复杂的情况。
此文档下载收益归作者所有