第9章ADAMS用户子程序-(陈立平)机械系统动力学分析及ADAMS应用bpvn.docx
《第9章ADAMS用户子程序-(陈立平)机械系统动力学分析及ADAMS应用bpvn.docx》由会员分享,可在线阅读,更多相关《第9章ADAMS用户子程序-(陈立平)机械系统动力学分析及ADAMS应用bpvn.docx(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章 ADAMS用户子程序第9章AADAMMS用户户子程序序本章对AADAMMS用户户子程序序做了简简要介绍绍,着重重介绍了了CONNSUBB、GFFOSUUB和RREQSSUB的的使用方方法,以以及在用用户子程程序中两两个最常常用的功功能子程程序SYYSARRY和SSYSFFNC的的使用情情况。通通过本章章的学习习,读者者将具备备基本的的开发用用户子程程序的能能力。9.1 ADAAMS用用户子程程序简介介一般情况况下,AADAMMS的大大部分功功能可以以通过函函数表达达式完成成,函数表表达式很很容易操操作,因因为不必必编译或或连接程程序,而而且ADDAMSS/Soolveer还会会实时地地
2、提供函函数表达达式。但但函数表表达式提提供的只只是有限限的编程程结构,因因此有些些复杂的的情况,特特别是涉涉及到一一些逻辑辑表达,用用函数表表达式则则很难表表达出来来。因此此在需要要采用一一些ADDAMSS没有提提供的特特殊函数数时,可可以采用用用户子子程序。用户子程程序更具具有通用用性,可可以利用用编程语语言来定定义模型型元素或或者特定定的输出出。用户户可以将将函数表表达式写写成子程程序的形形式并将将其与AADAMMS/VVieww连接,它它具有函函数表达达式所没没有的通通用性和和灵活性性。子程程序利用用通用程程序设计计语言(FFORTTRANN或C)的的功能来来定义AADAMMS/VVie
3、ww不能提提供的函函数,并并使之按按照需要要而量身身设计。通通过连接接用户子子程序,不不会失去去ADAAMS/Vieew的任任何功效效,也不不会降低低仿真速速度。当出现下下列情况况时,通通常会使使用到用用户子程程序:(1)数数学函数数很难表表达。(2)需需要定义义多用户户使用的的函数。(3)GGSE和和UCOON声明明时,需需要用户户子程序序。(4)需需要控制制复杂仿仿真运行行时,以以及需要要作决策策逻辑时时。使用用户户子程序序时要小小心,因因为不正正确的用用户子程程序会很很难调试试。9.1.1用户户子程序序的种类类根据用户户子程序序的功能能,可以以将它们们分为三三类:(1)DDrivver
4、Subbrouutinne驱动子子程序(2)EEvalluattionn Suubrooutiiness计算算子程序序(3)RResttartt suubrooutiiness重启启子程序序1驱动动子程序序(Drriveer SSubrrouttinee)驱动子程程序(Driiverr Suubrooutiine)CONSUB用来驱动ADAMS/Solver。这样ADAMS/Solver在仿真时可更进一步地完成对模型的分析和修改的自动化工作。CONSSUB发发出reequeest(请求),reegullatee(调整整),和和varry ssimuulattionns(改改变仿真真)的命命令,
5、并并通过作作出的交交互式命命令来修修改数据据,或者者进行不不同的分分析。大大多数运运行ADDAMSS/Soolveer的情情况都是是交互式式,或者者是以批批处理的的形式,一一次只涉涉及到单单个的分分析。使使用COONSUUB,可可以完成成对数据据的动态态分析,改改变前提提条件,并并重复动动态分析析。2计算算子程序序(Evvaluuatiion Subbrouutinnes)计算子程程序(EEvalluattionn Suubrooutiiness)为用用户自定定义。AADAMMS/SSolvver可可写子程程序来对对某些非非标准的的或复杂杂的计算算式计算算其数值值。计算算子程序序(Evvalu
6、uatiion Subbrouutinne)的的程序名名和功能能如表9-1所所示。表9-11 计算算子程序序(Evvaluuatiion Subbrouutinne)的的程序名名和功能能子程序功能COUSSUB,CCONXXX,CCOUXXX2定义用户户自定义义的COOUPLLERCURSSUB计算曲线线坐标以以及CUURVEE的导数数DIFSSUB计算DIIFF的的微分方方程值DMPSSUB计算FLLEX_BODDY的模模型的阻阻尼比FIESSUB对FIEELD计计算力和和力矩以以及它们们的导数数GFOSSUB对GFOORCEE计算数数值GSE_DERRIVGSE_UPDDATEEGSE_O
7、UTTPUTTGSE_SAMMP用GSEE来计算算当前状状态和输输出的偏偏导数值值MFOSSUB对MFOORCEE计算模模型值MOTSSUB对MOTTIONN计算绞绞点位移移,速度度和加速速度REQSSUB对REQQUESST计算算输出值值SENSSUB对SENNSORR计算感感应值SFOSSUB对SFOORCEE计算力力的大小小TIRSSUB对于轮胎胎接触,定定义三个个力和三三个力矩矩UCOSSUB对UCOON计算算约束值值和其导导数VARSSUB对VARRIABBLE计计算其代代数值VFOSSUB对VFOOSUBB计算力力的分量量VTOSSUB对VTOORUEE计算力力矩的分分量3重启启子
8、程序序(Reestaart Subbrouutinnes)重启子程程序(RResttartt suubrooutiiness)由一一对子程程序组成成,SAAVESSUB和和RELLSUBB。它们们可以保保存和重重新加载载子程序序运行过过程中的的某些状状态变量量,这些些状态变变量是那那些相关关的用户户子程序序在重新新启动或或进行某某些变量量初始化化时所必必须的数数据。如如果在用用户子程程序之间间相互调调用时,需需要使用用它们在在子程序序内部保保存数据据。如果果没有使使用REELSUUB和SSAVSSUB,在在保存仿仿真文件件时,内内部数据据就会丢丢失。虽然SAAVE命命令可将将模型和和仿真数数据
9、保存存到文件件中去,而而且可以以通过使使用REELOAAD命令令重新调调入保存存文件,并并可以从从该保存存点重新新启动仿仿真。但但SAVVE和RRELOOAD不不可能对对用户子子程序的的内部数数据进行行特殊操操作,在在RELLOADD命令之之后,AADAMMS/SSolvver会会从仿真真流程中中断点继继续调用用用户子子程序,但但用户子子程序中中某些感感兴趣的的内部变变量却没没有得到到保存。例如,假假设SFFOSUUB子程程序中力力的系数数是一个个内部状状态变量量,如果果打算将将第一次次调用SSFOSSUB子子程序时时所计算算的力的的系数保保存以作作今后使使用,若若用“SAVVE”和“RELL
10、OADD”时会产产生数据据丢失。可可用SAAVSUUB将计计算出来来的系数数保存在在文件中中并用RRELSSUB重重新调入入它们,或或者力仅仅仅用RRELSSUB来来重新计计算系数数。重启启子程序序(Reestaart Subbrouutinne)的的程序名名和功能能如表99-2所所示。表9-22 重启启子程序序(Reestaart Suubrooutiine)的的程序名名和功能能子程序功能RELSSUB加载能使使用户子子程序重重新启动动的信息息SAVSSUB保存以后后能重新新启动用用户子程程序的信信息9.1.2 子子程序的的使用相对于AADAMMS/VVieww来讲,用用户定义义子程序序有两
11、个个任务:输入和和输出。输入就是是在相应应的命令令或状态态,或在在表明当当前系统统状态的的计算结结果中,提提供给AADAMMS/VVieww的相关关信息。输出就是是从ADDAMSS/Viiew中中获得的的相关信信息。1. 声声明浮点点变量为了保证证数值在在子程序序之间或或者ADDAMSS/Soolveer和子子程序之之间能够够正确地地传递,需需要声明明浮点变变量,就就像在AADAMMS/SSolvver中中作的声声明一样样。在UNIIX和WWinddowss机器上上,ADDAMSS/Soolveer使用用双精度度浮点变变量。因因为未声声明的浮浮点变量量通常都都是单精精度的(如REEAL),所以
12、以应当明明确声明明所有的的浮点变变量都是是双精度度的。2. 参参数的使使用ADAMMS/VVieww会从FFUNCCTIOON=UUSERR()的的表达式式中提供供给用户户子程序序参数值值。例如如,如果果你使用用FUNNTIOON=(4.00,5.0,66.0),ADDAMSS/Viiew通通过一个个包含44.0,55.0,66.0的的PARR数组参参数,以以及通过过一个值值为3的的NPAAR参数数传递这这些数值值。通过使用用这些功功能使得得用户子子程序更更加灵活活。例如如,如果果计算需需要maarkeer1001和mmarkker1102的的距离,可可以将这这些标志志符直接接写进用用户子程程
13、序。3. 避避免不连连续在运行表表达式中中,当使使用子程程序来定定义运动动,传感感器,力力,或者者模型中中的状态态平衡方方程时,应应当保证证这些函函数是连连续的。不连续的的函数很很难处理理,因为为大多数数数学理理论都是是假定系系统方程程是连续续的。如如果违反反了该规规则,AADAMMS/SSolvver就就会得出出出人意意料的结结果。当当使用IIF声明明,将分分段函数数连接起起来时,常常常会产产生不连连续函数数。为了了保证函函数是连连续的,在在使用该该类型的的函数时时,一定定要小心心。4. 创创建用户户子程序序为了创建建自己的的用户子子程序,AADAMMS提供供了子程程序模板板并将它它们放在在
14、安装目目录innstaall_dirr/addamss/soolveer/uuserrsubbs中。子程序不不能以CC语言为为模板。如如果需要要一个CC语言的的子程序序,必须须通过修修改FOORTRRAN文文件来创创建它,或或者使用用FORRTRAAN模板板作为向向导,创创建自己己的C语语言格式式子程序序。创建用户户子程序序的步骤骤:(1) 决定需需要创建建什么样样的用户户子程序序。例如如,如果果有GFFORCCE的声声明,可可以创建建GFOOSUBB的用户户子程序序。(2) 决定要要计算什什么,需需要什么么输入参参数。(3) 将合适适的用户户子程序序模板从从安装目目录拷贝贝到当前前目录。模模
15、板目录录中包含含了要使使用的所所有子程程序模板板。(4) 使用文文字编辑辑器来察察看用户户子程序序模板。(5) 按需要要修改用用户子程程序。从从用户子子程序中中调用功功能子程程序,或或者其他他FORRTRAAN或CC语言子子程序。(6) 保存用用户子程程序。因因为可能能对不同同的模型型会使用用相同的的子程序序,所以以最好给给文件起起一个容容易区分分的名字字。5. 调调用用户户子程序序可以通过过使用声声明或者者命令来来调用用用户子程程序。通通过使用用前面定定义的用用户子程程序的名名字来让让ADAAMS/Sollverr知道调调用哪一一个子程程序。也也可以使使用子程程序来定定义一些些模型元元素。能
16、能调用用用户子程程序的声声明或命命令如表表9-3所所示。表9-33 调用用用户子子程序的的声明或或命令要调用的的子程序序使用的声声明/命命令CONSSUBCONTTROLLCOUSSUB,CCOUXXX,CCOUXXX2COUPPLERRCURSSUBCURVVEDIFSSUBDIFFFFIESSUBFIELLDGFOSSUBGFORRCEGSE_DERRIV,GGSE_UPDDATEE,GSE_OUTTPUTT,GSSE_SSAMPPGSEMOTSSUBMOTIIONRELSSUBRELOOADREQSSUBREQUUESTTSAVSSUBSAVEESENSSUBSENSSORSFOSSUB
17、SFORRCETIRSSUBTIREEUCOSSUBUCONNVARSSUBVARIIABLLEVFOSSUBVFORRCEVTOSSUBVTORRQUEE可以从用用户子程程序中调调用功能能子程序序。这些些子程序序的功能能就像是是在用户户的数据据和用户户使用的的用户子子程序的的接口一一样。例例如,在在driiverr usserwrrittten subbrouutinne(驱驱动用户户子程序序)中,可可以使用用conntrool,aacceess功功能子程程序。从从evaaluaatioon uuserrwrrittten subbrouutinnes(计算用用户子程程序)中中,也可可以调用
18、用acccesss,fuuncttionn,以及及某些情情况下ssetuup 函函数。换换句话说说,可以以从上面面任何一一个用户户子程序序中调用用acccesss和fuuncttionn函数,但但用户只能能从drriveer ssubrrouttinee中调用用conntrool函数数,从某某个evvaluuatiion subbrouutinnes中中调用ssetuup函数数。6. 编编译,连连接和运运行库在写完定定制的子子程序后后,必须须要将它它们编译译并连接接到ADDAMSS以创建建到ADAAMS/Sollverr的用户户库文件件中去。然然后,可可以连同同该库与与ADAAMS/Sollv
19、err一同运运行。必须有一一个FOORTRRAN编编译器,因为ADAMS本身不提供编译器,由用户子程序生成动态连接库的详细过程参见12.4.5节后半部分的介绍。92 常用AADAMMS用户户子程序序简介9.2.1 使使用GFFOSUUB用户户子程序序实例为了使读读者对用用户子程程序有一一个直观观印象,本本节首先先给出声声明和调调用GFFOSUUB子程程序的例例子,通通过与GGFORRCE函函数表达达式的对对比,说说明使用用用户子子程序的的必要性性。有关关GFOOSUBB用户子子程序的的更详细细内容,将将在9.2.22小节进进行介绍绍。另外外,在112.44.4节节的结尾尾部分提提供了GGFOS
20、SUB用用户子程程序的具具体工程程应用实实例。现假定有有如下一一个GFFORCCE函数数表达式式的声明明,其函函数表达达式定义义了小球球和斜面面之间的的某种相相互作用用力关系系(此处处相互作作用力不不一定有有确切的的物理含含义,仅仅为了说说明GFFORCCE的定定义过程程),包包括力矢矢量和力力矩矢量量。如下下图所示示,为了了在GFFORCCE中描描述这种种相互作作用力关关系,在在小球球球心上定定义了标标架Maark_I(IID为220011),在在斜面上上定义了了标架MMarkk_R(IID为220033),同同时为了了确定小小球对斜斜面的反反作用力力点的位位置,生生成与标标架Maark_I
21、时刻刻重叠的的标架MMarkk_J(IID为220022),MMarkk_J隶隶属于斜斜面。Part_I:小球Mark_J:ID2002Mark_R:ID2003Mark_I:ID2001Part_J:斜面图9-1 小球与斜面的坐标定义及相对关系于是可以以使用GGFORRCE函函数表达达式的声声明,如如下面所所示(该该GFOORCEE自身的的ID为为1000):GFORRCE/,1000 I=220011, JJFLOOAT=20002, RM=20003,FX = 10.0 * VXX(20001,220033,20003)FY = 10.0 * VYY(20001,220033,20003
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADAMS 用户 子程序 陈立平 机械 系统 动力学 分析 应用 bpvn
限制150内