資源描述:
《adams用戶子程序》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、ADAMS用戶子程序摘要針對小球振動的簡單模型,利用ADAMS用戶子程序,說明子程序的編寫和使用,驗(yàn)證三種模型結(jié)果的正確性。1引言一般情況下,ADAMS的人部分功能通過函數(shù)表達(dá)式完成,函數(shù)表達(dá)式很容易操作,因?yàn)椴槐鼐幾g或連接程序,而且ADAMS/Soke還會實(shí)吋地提供函數(shù)表達(dá)式。但函數(shù)表達(dá)式提供的只是有限的編程結(jié)構(gòu),因此有些復(fù)雜的情況,特別是涉及一些邏輯表達(dá),用函數(shù)表達(dá)式則很難表達(dá)出來。因此在需要采用一些ADAMS沒冇提供的特殊函數(shù)吋,采用用戶子程序。用戶子程序更具有通用性,利用編程語言來定義模型元素或者特定的輸出。用戶將函數(shù)表達(dá)式寫成子程序的形式并將其與ADAMS/Vie
2、w連接,它具有函數(shù)表達(dá)式所沒有的通用性和靈活性。子程序利用通用程序設(shè)計(jì)語言(FORTRAN或C)的功能來定義ADAMS/View不能提供的函數(shù),并使之按照需要而量身設(shè)計(jì)。通過連接用戶子程序,不會失去ADAMS/View的任何功效,也不會降低仿真速度。2計(jì)算模型質(zhì)量為5kg的小球在彈簧力和重力作用下做振動,彈簧的剛度為200N/m,阻尼為lN/(m/s)。在ADAMS中建立彈簧從簡單到復(fù)雜可以有三種方法:1)直接建立模型;2)使用Sforce,在Sforce中寫彈簧力的方程;3)使用用戶子程序。2.1模型1新建一個質(zhì)量為5kg的小球,創(chuàng)立一個彈簧,在重力的作用下振動,如圖1所
3、示。1模型1示意圖2彈簧設(shè)置2.2模型2根據(jù)彈簧力的表達(dá)式來定義Sforce,因?yàn)閂Y速度為負(fù),因此,表達(dá)式可以表示為:200*DY(MARKER_3,PART_2.cm)-l*VY(PART_2.cm)。2.3模型3使用子程序表達(dá)彈簧力,輸入?yún)?shù)為2,3,200,1。前兩個參數(shù)表示彈簧的兩個MARKER點(diǎn)ID,第三個參數(shù)為彈簧剛度,第四個參數(shù)為彈簧阻尼。ModifyForceNameDirectionBodySFORCE2OnOneBody,FixedinSpaceDefineUsingUserParametersRoutineSolverIDSubroutine2.0,
4、3.0,200.0,1.0S^osub-dllForceDisplayOnPART2QK
5、Apply
6、Sancel
7、圖3用戶子程序設(shè)置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計(jì)算結(jié)果通過仿真計(jì)算,可以得到計(jì)算結(jié)果如下。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小球運(yùn)動
9、軌跡如圖4所示,三種模型所表達(dá)的彈簧力完全重合,可以知道,方程表達(dá)式與用戶子程序可以正確的表達(dá)函數(shù)。如圖5所示,三種模型小球的運(yùn)動軌跡與規(guī)律完全相同。如上所述,三種模型的結(jié)果完全相同。由此可見,ADAMS自帶的模塊、函數(shù)表達(dá)式還有用戶子程序都是正確的。但是用戶子程序應(yīng)用更加廣泛,適用性更強(qiáng),可以模擬復(fù)雜的情況。