欢迎来到天天文库
浏览记录
ID:28815083
大小:155.00 KB
页数:25页
时间:2018-12-14
《第9章ADAMS用户子程序.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第9章ADAMS用户子程序本章对ADAMS用户子程序做了简要介绍,着重介绍了CONSUB、GFOSUB和REQSUB的使用方法,以及在用户子程序中两个最常用的功能子程序SYSARY和SYSFNC的使用情况。通过本章的学习,读者将具备基本的开发用户子程序的能力。9.1ADAMS用户子程序简介一般情况下,ADAMS的大部分功能可以通过函数表达式完成,函数表达式很容易操作,因为不必编译或连接程序,而且ADAMS/Solver还会实时地提供函数表达式。但函数表达式提供的只是有限的编程结构,因此有些复杂的情况,特别是涉及到一些逻辑表达,用函数表达式则很难表达出来。因此在需要采用
2、一些ADAMS没有提供的特殊函数时,可以采用用户子程序。用户子程序更具有通用性,可以利用编程语言来定义模型元素或者特定的输出。用户可以将函数表达式写成子程序的形式并将其与ADAMS/View连接,它具有函数表达式所没有的通用性和灵活性。子程序利用通用程序设计语言(FORTRAN或C)的功能来定义ADAMS/View不能提供的函数,并使之按照需要而量身设计。通过连接用户子程序,不会失去ADAMS/View的任何功效,也不会降低仿真速度。当出现下列情况时,通常会使用到用户子程序:(1)数学函数很难表达。(2)需要定义多用户使用的函数。(3)GSE和UCON声明时,需要用户
3、子程序。(4)需要控制复杂仿真运行时,以及需要作决策逻辑时。使用用户子程序时要小心,因为不正确的用户子程序会很难调试。9.1.1用户子程序的种类根据用户子程序的功能,可以将它们分为三类:(1)DriverSubroutine——驱动子程序(2)EvaluationSubroutines——计算子程序(3)Restartsubroutines——重启子程序1.驱动子程序(DriverSubroutine)驱动子程序(DriverSubroutine)--CONSUB--用来驱动ADAMS/Solver。这样ADAMS/Solver在仿真时可更进一步地完成对模型的分析和修
4、改的自动化工作。CONSUB发出request(请求),regulate(调整),和varysimulations(改变仿真)的命令,并通过作出的交互式命令来修改数据,或者进行不同的分析。大多数运行ADAMS/Solver的情况都是交互式,或者是以批处理的形式,一次只涉及到单个的分析。使用CONSUB,可以完成对数据的动态分析,改变前提条件,并重复动态分析。2.计算子程序(EvaluationSubroutines)计算子程序(EvaluationSubroutines)为用户自定义。ADAMS/Solver可写子程序来对某些非标准的或复杂的计算式计算其数值。计算子程
5、序(EvaluationSubroutine)的程序名和功能如表9-1所示。表9-1计算子程序(EvaluationSubroutine)的程序名和功能子程序功能COUSUB,CONXX,COUXX2定义用户自定义的COUPLERCURSUB计算曲线坐标以及CURVE的导数DIFSUB计算DIFF的微分方程值DMPSUB计算FLEX_BODY的模型的阻尼比FIESUB对FIELD计算力和力矩以及它们的导数GFOSUB对GFORCE计算数值GSE_DERIVGSE_UPDATEGSE_OUTPUTGSE_SAMP用GSE来计算当前状态和输出的偏导数值MFOSUB对MFO
6、RCE计算模型值MOTSUB对MOTION计算绞点位移,速度和加速度REQSUB对REQUEST计算输出值SENSUB对SENSOR计算感应值SFOSUB对SFORCE计算力的大小TIRSUB对于轮胎接触,定义三个力和三个力矩UCOSUB对UCON计算约束值和其导数VARSUB对VARIABLE计算其代数值VFOSUB对VFOSUB计算力的分量VTOSUB对VTORUE计算力矩的分量3.重启子程序(RestartSubroutines)重启子程序(Restartsubroutines)由一对子程序组成,SAVESUB和RELSUB。它们可以保存和重新加载子程序运行过程
7、中的某些状态变量,这些状态变量是那些相关的用户子程序在重新启动或进行某些变量初始化时所必须的数据。如果在用户子程序之间相互调用时,需要使用它们在子程序内部保存数据。如果没有使用RELSUB和SAVSUB,在保存仿真文件时,内部数据就会丢失。虽然SAVE命令可将模型和仿真数据保存到文件中去,而且可以通过使用RELOAD命令重新调入保存文件,并可以从该保存点重新启动仿真。但SAVE和RELOAD不可能对用户子程序的内部数据进行特殊操作,在RELOAD命令之后,ADAMS/Solver会从仿真流程中断点继续调用用户子程序,但用户子程序中某些感兴趣的内部变量
此文档下载收益归作者所有