第9章ADAMS用户子程序-(陈立平)机械系统动力学分析及ADAMS应用
adams教程

adams教程Adams教程-基本概念与应用Adams是一种重要的多体动力学仿真软件,广泛应用于机械工程、汽车工程、航空航天工程等领域。
本教程将介绍Adams的基本概念和应用,帮助读者快速入门并掌握该软件的基本操作技巧。
1. Adams简介Adams是一种基于多体动力学理论的仿真软件,能够模拟和分析复杂的机械系统的运动和力学行为。
它采用了基于弹簧、阻尼和惯性模型的多体动力学算法,能够准确地预测系统的运动轨迹、速度、加速度等关键参数。
2. Adams界面与基本操作Adams的界面直观友好,主要包括模型空间、运动学仿真、力学仿真等模块。
在模型空间中,可以创建和修改机械系统的模型;在运动学仿真模块中,可以模拟系统的运动轨迹;在力学仿真模块中,可以分析系统的力学特性。
3. 创建模型与约束在Adams中,模型的创建是基于几何图形和物体的属性。
可以通过导入CAD文件或者手动绘制几何图形来创建模型,并为每个模型设置合适的质量、惯性矩阵等属性。
通过添加约束条件,可以模拟系统中各个物体之间的相对运动关系。
4. 仿真与结果分析一旦模型和约束设置完成,就可以进行仿真分析了。
Adams提供了多种仿真方式,如动态仿真、静态仿真、优化仿真等。
仿真结果可以通过图表、动画等形式进行展示和分析,帮助工程师深入理解系统的运动行为和受力情况。
5. 应用案例最后,本教程将通过一些实际应用案例来展示Adams的具体应用。
例如,利用Adams模拟汽车悬挂系统的运动特性,预测系统在不同路况下的动力学行为;利用Adams模拟飞机起飞和着陆过程,评估系统在不同条件下的稳定性和安全性等等。
通过本教程的学习,读者将能够掌握Adams的基本操作技巧,理解多体动力学仿真的基本原理,并能够利用该软件进行机械系统的仿真分析。
希望读者能够通过这些知识和技能,在工程领域取得更好的成果。
ADAMS用户子程序在软着陆动力学仿真中的应用

b c u e o n q e me h ia rp ry o lmi u h n y o n i a tatn ain o u a a d r By la ig te e a s ft u i u c a c lp o e t fau n m o e c mb i mp c te u t fl n rl e . o dn h he n o n
Ap l a i n o pi t fADA S Us r—W rte u r u ie t c o M e — itn S b o t o n
S m u a in o o — a d n na c i l t fS f -ln i g Dy mis o t
Ja gW a sn Hu n e W a gHato i nog n a gW i n i a
实现月 球 的软着 陆 , 目前 主要考 虑 类 似 于 “ 波 罗 ” 月舱 的一 种 支腿 式 着 陆 器 , 图 1a所 示 _ 。 由 阿 登 如 () 1 J
于月球 重力 场不 同于 地球 , 着陆 试验 时需 要模 拟月 球 重力 场 , 模 拟重 力 场本 身 又是 一 个难 题 ; 而 此外 着 陆 器
s b ui e o e mo e fAp lo f ls ae ln — mo u e,smuain o h y tm s e l e T e rs lsc mp e u r t n t d lo ol ul c u a o n h l r dl i l t fte s se Wa ra i d. h e ut o a d o z r
wi ee a td t o fr e h d l g a d a p iain o s r—wrt n s b u i eo t rlv aa c n i d te mo e i n p l t fu e h n m n c o it u r tn fADAMS. e o Ke o d ADAMS Usr— wrte u rut e Ho e c m S f — a d n y a c S a e rf yW rs e — i n sbo i t n nyo b o —ln i gd n mis t p c cat
第9章ADAMS用户子程序-(陈立平)机械系统动力学分析及ADAMS应用

第9章ADAMS用户子程序本章对ADAMS用户子程序做了简要介绍,着重介绍了CONSUB、GFOSUB和REQSUB的使用方法,以及在用户子程序中两个最常用的功能子程序SYSARY和SYSFNC的使用情况。
通过本章的学习,读者将具备基本的开发用户子程序的能力。
9.1 ADAMS用户子程序简介一般情况下,ADAMS的大部分功能可以通过函数表达式完成,函数表达式很容易操作,因为不必编译或连接程序,而且ADAMS/Solver还会实时地提供函数表达式。
但函数表达式提供的只是有限的编程结构,因此有些复杂的情况,特别是涉及到一些逻辑表达,用函数表达式则很难表达出来。
因此在需要采用一些ADAMS没有提供的特殊函数时,可以采用用户子程序。
用户子程序更具有通用性,可以利用编程语言来定义模型元素或者特定的输出。
用户可以将函数表达式写成子程序的形式并将其与ADAMS/Vi ew连接,它具有函数表达式所没有的通用性和灵活性。
子程序利用通用程序设计语言(FORTRAN或C)的功能来定义ADAMS/View不能提供的函数,并使之按照需要而量身设计。
通过连接用户子程序,不会失去ADAMS/View的任何功效,也不会降低仿真速度。
当出现下列情况时,通常会使用到用户子程序:(1)数学函数很难表达。
(2)需要定义多用户使用的函数。
(3)GSE和UCON声明时,需要用户子程序。
(4)需要控制复杂仿真运行时,以及需要作决策逻辑时。
使用用户子程序时要小心,因为不正确的用户子程序会很难调试。
9.1.1用户子程序的种类根据用户子程序的功能,可以将它们分为三类:(1)DriverSubroutine——驱动子程序(2)Evaluation Subroutines——计算子程序(3)Restart subroutines——重启子程序1.驱动子程序(Driver Subroutine)驱动子程序(DriverSubroutine)--CONSUB--用来驱动ADAMS/Solver。
多体系统动力学分析软件ADAMS的介绍

多体系统动力学分析软件ADAMS的介绍ADAMS是美国学者蔡斯(Chace)等人利用多刚体动力学理论,选取系统每个刚体的质心在惯性参考系中的三个直角坐标和反映刚体方位的为广义坐标编制的计算程序。
其中应用了吉尔(Gear)等解决刚性积分问题的算法,并采用了稀疏矩阵技术来提高计算效率。
该软件因其强大的功能而在汽车航天等领域得到了广泛的应用。
1 ADAMS软件简介在研究汽车各种性能时,研究对象的建模、分析与求解始终是关键。
多体系统动力学软件为汽车动力学研究提供了强大的数学分析工具。
ADAMS软件就是其中的佼佼者。
ADAMS(Automatic Dynamic Analysis of Mechanical System)软件,是由美国机械动力公司(Mechanical Dynamics Inc.)开发的最优秀的机械系统动态仿真软件,是世界上最具权威性的,使用围最广的机械系统动力学分析软件。
用户使用ADAMS软件,可以自动生成包括机-电-液一体化在的、任意复杂系统的多体动力学数字化虚拟样机模型,能为用户提供从产品概念设计、方案论证、详细设计、到产品方案修改、优化、试验规划甚至故障诊断各阶段、全方位、高精度的仿真计算分析结果,从而达到缩短产品开发周期、降低开发成本、提高产品质量及竞争力的目的。
由于ADAMS软件具有通用、精确的仿真功能,方便、友好的用户界面和强大的图形动画显示能力,所以该软件已在全世界数以千计的著名大公司中得到成功的应用。
ADAMS软件一方面是机械系统动态仿真软件的应用软件,用户可以运用该软件非常方便地对虚拟样机进行静力学、运动学和动力学分析。
另一方面,又是机械系统仿真分析开发工具,其开放性的程序结构和多种接口,可以成为特殊行业用户进行特殊机械系统动态仿真分析的二次开发工具平台。
在产品开发过程中,工程师通过应用ADAMS软件会收到明显效果:*分析时间由数月减少为数日*降低工程制造和测试费用*在产品制造出之前,就可以发现并更正设计错误,完善设计方案*在产品开发过程中,减少所需的物理样机数量*当进行物理样机测试有危险、费时和成本高时,可利用虚拟样机进行分析和仿真*缩短产品的开发周期使用ADAMS建立虚拟样机非常容易。
运用ADAMS进行发动机曲轴系的动力学分析

运用ADAMS 进行发动机曲轴系的动力学分析覃文洁 廖日东北京理工大学车辆与交通工程学院 北京 100081摘 要:往复活塞式内燃机的曲轴及连于其上的活塞、连杆、飞轮等各构件的运动、受力及扭转振动是其动力学分析的主要内容。
本文讨论了运用多体系统动力学分析软件ADAMS 进行发动机曲轴系建模和分析的方法,结合有限元分析软件ANSYS 建立了某型车辆V 型六缸发动机曲轴系的多体系统动力学模型,并对其平衡特性和曲轴的扭振响应进行了分析。
关键词:曲轴系,ADAMS ,多体系统动力学1. 引言往复活塞式内燃机的曲轴系是由曲轴及连于其上的活塞、连杆、飞轮等构件组成的,其动力学分析主要包括各构件的运动与受力分析、发动机的平衡性分析以及曲轴系的扭振分析等内容。
作用于系统上的力来自两个方面,一是气缸内的气体爆发压力,二是运动质量产生的惯性力,它们会对机体产生作用力和力矩。
由于这些力和力矩是不可能完全平衡的,就会造成发动机及其支架的振动,导致紧固件松动,个别零件过载损坏,噪音增大,车辆乘员疲劳等不良后果。
因此有必要在发动机设计阶段进行平衡性分析和曲轴系的振动分析,为设计选型和具体的结构设计提供依据。
传统的分析方法是在对各构件进行运动分析的基础上,计算出各自产生的旋转惯性力和往复惯性力,与气体爆发压力合成后求解出对机体的作用力以及曲轴系振动的激振力,这是一个十分繁琐的过程。
运用机械系统仿真软件ADAMS ,通过建立包括活塞、连杆、曲轴、飞轮在内的整个曲轴系的多体系统动力学模型,不仅可以计算出各构件的运动规律和构件间的作用力,还可以进一步进行平衡性分析和振动分析。
本文针对某型车辆的V 型六缸发动机的曲轴系,在ADAMS 中建立其多体系统动力学模型,并进行了相应的动力学分析。
2. 发动机曲轴系的建模方法根据分析的具体内容不同,发动机曲轴系可以建为不同的模型。
对于平衡性分析而言, 由于考虑的是运动构件惯性力的平衡,可采用多刚体系统模型计算,刚体的质量、质心位置及惯性矩可利用CAD 软件(如Pro/E )建立其精确实体模型后分析得到。
ADAMS基础培训教程ADAMS实例教程新手必备

ADAMS基础培训教程ADAMS实例教程新手必备
该软件是美国机械动力公司(Mechanical Dynamics Inc.)(现已并入美国MSC 公司)开
发的虚拟样机分析软件。
ADAMS已经被全世zhidao界各行各业的数百家主要制造商采用。
机械系统动力学仿真分析软件 ADAMS 可以直接创建完全参数化的机械系统几何模型,也可以使用从其他 CAD 软件(如: Pro/ENGINEER)传过来的造型逼真的几
何模型;然后
在几何模型上施加约束、力/力矩和运动激励;最后对机械系统进行交互式的动力
学仿真分析,在系统水平上真实地预测机械结构的工作性能,实现系统水平的最
优设计。
ADAMS软件由基本模块,扩展模块,接口模块,专业领域模块及工具箱5类模块组成,
如表3-1所示.用户不仅可以采用通用模块对一般的机械系统进行仿真,而且可以采
用专用模块针对特定工业应用领域的问题进行快速有效的建模与仿真分析.
本套教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门,能让您高效率的学习进阶。
绝对不是网上那些烂大街的教程,浪费大家的宝贵时间。
教程不需要多,一套精品就够了。
教程部分截图:
学习是一个过程,只要学习就会有挑战。
天道酬勤,你越努力,就会越优秀。
教程之所以收费,是为了过滤一些拿了免费的,又不珍惜的人。
一点点的付出,买不了吃亏,买不了上当,一顿饭钱,一瓶水钱,就可以成就你。
诚信至上,感兴趣的朋友直接点击下方官方购买主页获取资源。
》》》《《《。
(陈立平)机械系统动力学分析及ADAMS应用--第1章绪论
第1章 绪论本章首先介绍虚拟产品开发与虚拟样机技术的特点、内容及其应用;在此基础上提出数字化样机的概念,并由此引入机械系统动力学分析与仿真,概述了机械系统动力学分析与仿真在数字化功能样机中的重要作用;最后阐述了机械系统动力学分析与仿真的发展方向及前沿。
通过本章的学习可以对虚拟样机技术及机械系统动力学分析仿真技术的内容及发展有较深入的了解,便于以后对具体内容的学习掌握。
1.1 虚拟产品开发与虚拟样机技术1990年10月29日,美国波音公司正式启动波音777飞机研制计划,采用一种全新的设计与制造方式,4年半之后,于1994年6月12日直接进行了第1架波音777的首次试飞。
波音777飞机的研制采用了全数字化的无纸设计技术,整机外型、结构件和整机飞机系统100%采用三维数字化定义,100%应用数字化预装配,整个设计制造过程无需模型和样机,一次成功,首次实现了整机数字化设计、数字化制造和数字化协调。
对比以往的飞机研制,波音777成本降低了25%,出错返工率减少了75%,制造周期缩短了50%。
波音777的研制成为现代产品开发新技术应用的里程碑,其采用的开发过程现在称之为虚拟产品开发(Virtual Product Development - VPD),应用的开发技术称之为虚拟样机技术(Virtual Prototyping - VP)。
虚拟产品开发和虚拟样机技术的出现是市场激烈竞争的拉动和技术迅速发展的推动共同作用的结果。
随着世界经济的一体化发展,市场竞争日趋激烈,多品种小批量生产和大批量定制生产逐渐成为主导的生产形式。
在这种情况下,企业要求得生存与发展,就必须调整其产品开发和生产组织模式,解决T(最快的上市时间)、Q(最好的产品质量)、C(最低的产品成本)、S(良好的产品服务)和E(尽少的环境污染)难题。
另一方面,世界已经进入全球化的知识经济时代,这为TQCSE术应运而生。
1.1.1 虚拟产品开发技术这个描述对于“虚拟产品开发”作了精确的概括,直到十年之后的现在仍然是合乎时机械系统动力学分析及ADAMS 应用2 宜的,它指出了虚拟产品开发具备的三个主要特点:(1)数字化方式品出现之前,都是以数字化方式存在,称之为产品的数字化模型;二是开发管理的数字化,在产品开发过程中,开发过程的管理采用数字化的方式,开发网络的任务是以数字化方式确定和分配的;三是信息交流的数字化,在产品设计制造的全生命周期中,同一阶段或不同阶段之间,如设计单位内部或设计与制造单位之间,产品信息的交流采用数字化方式,基于数字化模型实现无纸化设计。
基于ADAMS的装载机工作装置动力学分析
基于ADAMS的装载机工作装置动力学分析ADAMS(Advanced Dynamic Analysis of Mechanical Systems)是一种广泛应用于机械系统设计和分析中的动力学仿真软件。
装载机是一种常见的工程机械设备,用于搬运和装载各种物料。
本文将利用ADAMS软件对装载机的工作装置进行动力学分析,以探讨其运动规律和性能特点。
首先,我们需要建立装载机的运动学模型。
在ADAMS软件中,可以通过建立连接杆、关节等模型元素来描述装载机的结构,然后设置运动参数和约束条件。
特别是对于装载机的工作装置,需要考虑到各种关闭与打开装置的动作以及与装载机主体的协调运动。
接着,我们进行动力学仿真分析。
通过在ADAMS中添加质量、惯性力、弹簧、阻尼等物理特性模型元素来描述工作装置的动力学特性。
然后通过设定力学学习模型的参数,如质量、摩擦系数等,以模拟不同工作条件下的装载机运动行为。
在动力学仿真过程中,我们可以对工作装置的运动轨迹、速度、加速度等参数进行监测和分析。
通过观察工作装置在装载过程中的受力情况,可以评估其受载能力和运动稳定性。
同时,我们还可以根据仿真结果对工作装置的结构和工艺进行优化设计,以提高其工作效率和操作性。
另外,我们还可以利用ADAMS软件进行多体动力学分析,通过建立装载机和工作装置的多体模型,细化系统的结构和运动特性。
在多体动力学仿真中,我们可以模拟装载机在复杂道路条件下的运动行为,进一步评估其动态稳定性和操控性。
综上所述,基于ADAMS的装载机工作装置动力学分析可以帮助工程师深入理解装载机的运动规律和性能特点,为装载机的设计和优化提供有力支持。
通过仿真分析,可以有效减少实验测试的时间和费用,提高装载机的设计效率和性能表现。
希望本文的内容能够为相关领域的研究和应用人员提供参考和启发。
(陈立平)机械系统动力学分析及ADAMS应用--第7章ADAMSPostProcessor
第7章 ADAMS/PostProcessor使用方法本章主要介绍ADAMS/PostProcessor的使用方法,包括ADAMS/PostProcessor的基本操作、输出仿真结果动画、绘制仿真结果曲线图及对曲线图进行处理,最后通过实例介绍ADAMS/ PostProcessor的具体用法。
通过本章的学习可以深入了解和具体掌握ADAMS/ PostProcessor的基本使用方法,能够结合用户需求灵活地进行仿真计算结果的观察和分析。
7.1 ADAMS/PostProcessor简介7.1.1 ADAMS/PostProcessor的用途ADAMS/ PostProcessor是ADAMS软件的后处理模块,绘制曲线和仿真动画的功能十分强大,利用ADAMS/ PostProcessor可以使用户更清晰地观察其他ADAMS模块(如ADAMS/ View, ADAMS/ Car或ADAMS/ Engine)的仿真结果,也可将所得到的结果转化为动画、表格或者HTML等的形式,能够更确切地反映模型的特性、便于用户对仿真计算的结果进行观察和分析。
ADAMS/PostProcessor在模型的整个设计周期中都发挥着重要的作用,其用途主要包括:(1)模型调试在ADAMS/ PostProcessor中,用户可选择最佳的观察视角来观察模型的运动,也可向前、向后播放动画,从而有助于对模型进行调试。
也可从模型中分离出单独的柔性部件,以确定模型的变形。
(2)试验验证如果需要验证模型的有效性,可输入测试数据并以坐标曲线图的形式表达出来,然后将其与ADAMS仿真结果绘于同一坐标曲线图中进行对比,并可以在曲线图上进行数学操作和统计分析。
(3)设计方案改进在ADAMS/PostProcessor中,可在图表上比较两种以上的仿真结果,从中选择出合理的设计方案。
另外,可通过单击鼠标操作,更新绘图结果。
如果要加速仿真结果的可视化过程,可对模型进行多种变化。
ADAMS在机械系统仿真技术教学中的应用
ADAMS在机械系统仿真技术教学中的应用1引言机械类专业在我国是一个历史长,开设院校众多的专业,如何办出专业特色,进而形成自己的优势,是一个需要不断探索和研究的课题。
武汉科技学院机械类专业以数字化纺织设备实验室为依托,逐渐在纺织设备的教学科研中办出了自己的特色。
众所周知,各类纺织设备中所包含的机构种类繁多,而且日趋精密。
要学生在一定的学时内认识这些机构已然困难,更谈不上分析和掌握它们。
因此,教给学生一种系统的分析和设计工具就显得尤为重要和迫切。
随着计算机软硬件的发展和普及,机械类计算机仿真技术这门课程就应运而生。
在帮助学生总结基础理论的同时引导学生将不同工程领域的开发模型结合在一起,使学生在物理样机生产出来之前就可进行有效的、可验证的设计工作,从而提高了对各类纺织设备的认知、分析和开发的技能。
如此才有可能达到培养出基础知识扎实,创新能力和实践动手能力强的新世纪合格高素质人才的目的。
机械专业既是一个传统的专业,又是一个不断融合新技术、不断创新的专业。
随着科技的发展,计算机仿真技术越来越广泛地应用在各个领域。
目前,国际上许多高校纷纷开设了机械类仿真课程。
就国内高校而言,所讲授的计算机仿真技术课程和所使用的教材基本上是面向电子类和控制类学科的,只有少数重点高校逐渐开设了机械类仿真课程。
与高校开设此类课程较少的现象炯然不同的是,各种成熟的针对机械系统仿真的商业软件不断涌现,与之对应的应用书籍也是种类繁多。
及其原因,是因为机械系统仿真技术课程内容较为抽象、涉及的数学基础较多、学生不易掌握、授课难度较大。
因此,本文将ADAMS仿真软件引入到机械类计算机仿真技术课程教学,介绍了机械系统动态仿真所需要的基础理论,以及ADAMS软件算法基本理论及功能模块,最后通过例子加以说明如何在ADAMS软件中建立机械系统模型并进行仿真和结果输出。
2机械系统动态仿真基础理论机械系统动力学分析与仿真是随着计算机技术的发展而不断成熟的,多体系统动力学是其理论基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章ADAMS用户子程序本章对ADAMS用户子程序做了简要介绍,着重介绍了CONSUB、GFOSUB和REQSUB的使用方法,以及在用户子程序中两个最常用的功能子程序SYSARY和SYSFNC的使用情况。
通过本章的学习,读者将具备基本的开发用户子程序的能力。
9.1 ADAMS用户子程序简介一般情况下,ADAMS的大部分功能可以通过函数表达式完成,函数表达式很容易操作,因为不必编译或连接程序,而且ADAMS/Solver还会实时地提供函数表达式。
但函数表达式提供的只是有限的编程结构,因此有些复杂的情况,特别是涉及到一些逻辑表达,用函数表达式则很难表达出来。
因此在需要采用一些ADAMS没有提供的特殊函数时,可以采用用户子程序。
用户子程序更具有通用性,可以利用编程语言来定义模型元素或者特定的输出。
用户可以将函数表达式写成子程序的形式并将其与ADAMS/View连接,它具有函数表达式所没有的通用性和灵活性。
子程序利用通用程序设计语言(FORTRAN或C)的功能来定义ADAMS/View不能提供的函数,并使之按照需要而量身设计。
通过连接用户子程序,不会失去ADAMS/View的任何功效,也不会降低仿真速度。
当出现下列情况时,通常会使用到用户子程序:(1)数学函数很难表达。
(2)需要定义多用户使用的函数。
(3)GSE和UCON声明时,需要用户子程序。
(4)需要控制复杂仿真运行时,以及需要作决策逻辑时。
使用用户子程序时要小心,因为不正确的用户子程序会很难调试。
9.1.1用户子程序的种类根据用户子程序的功能,可以将它们分为三类:(1)Driver Subroutine——驱动子程序(2)Evaluation Subroutines——计算子程序(3)Restart subroutines——重启子程序1.驱动子程序(Driver Subroutine)驱动子程序(Driver Subroutine)--CONSUB--用来驱动ADAMS/Solver。
这样ADAMS/Solver在仿真时可更进一步地完成对模型的分析和修改的自动化工作。
CONSUB发出request(请求),regulate(调整),和vary simulations(改变仿真)的命令,并通过作出的交互式命令来修改数据,或者进行不同的分析。
大多数运行ADAMS/Solver的情况都是交互式,或者是以批处理的形式,一次只涉及到单个的分析。
使用CONSUB,可以完成对数据的动态分析,改变前提条件,并重复动态分析。
2.计算子程序(Evaluation Subroutines)计算子程序(Evaluation Subroutines)为用户自定义。
ADAMS/Solver可写子程序来对某些非标准的或复杂的计算式计算其数值。
计算子程序(Evaluation Subroutine)的程序名和功能如表9-1所示。
表9-1 计算子程序(Evaluation Subroutine)的程序名和功能3.重启子程序(Restart Subroutines)重启子程序(Restart subroutines)由一对子程序组成,SA VESUB和RELSUB。
它们可以保存和重新加载子程序运行过程中的某些状态变量,这些状态变量是那些相关的用户子程序在重新启动或进行某些变量初始化时所必须的数据。
如果在用户子程序之间相互调用时,需要使用它们在子程序内部保存数据。
如果没有使用RELSUB和SA VSUB,在保存仿真文件时,内部数据就会丢失。
虽然SA VE命令可将模型和仿真数据保存到文件中去,而且可以通过使用RELOAD命令重新调入保存文件,并可以从该保存点重新启动仿真。
但SA VE和RELOAD不可能对用户子程序的内部数据进行特殊操作,在RELOAD命令之后,ADAMS/Solver会从仿真流程中断点继续调用用户子程序,但用户子程序中某些感兴趣的内部变量却没有得到保存。
例如,假设SFOSUB子程序中力的系数是一个内部状态变量,如果打算将第一次调用SFOSUB子程序时所计算的力的系数保存以作今后使用,若用“SA VE”和“RELOAD”时会产生数据丢失。
可用SA VSUB将计算出来的系数保存在文件中并用RELSUB重新调入它们,或者力仅仅用RELSUB 来重新计算系数。
重启子程序(Restart Subroutine)的程序名和功能如表9-2所示。
表9-2 重启子程序(Restart Subroutine)的程序名和功能9.1.2 子程序的使用相对于ADAMS/View来讲,用户定义子程序有两个任务:输入和输出。
输入就是在相应的命令或状态,或在表明当前系统状态的计算结果中,提供给ADAMS/View的相关信息。
输出就是从ADAMS/View中获得的相关信息。
1. 声明浮点变量为了保证数值在子程序之间或者ADAMS/Solver和子程序之间能够正确地传递,需要声明浮点变量,就像在ADAMS/Solver中作的声明一样。
在UNIX和Windows机器上,ADAMS/Solver使用双精度浮点变量。
因为未声明的浮点变量通常都是单精度的(如REAL),所以应当明确声明所有的浮点变量都是双精度的。
2. 参数的使用ADAMS/View会从FUNCTION=USER()的表达式中提供给用户子程序参数值。
例如,如果你使用FUNTION=(4.0,5.0,6.0),ADAMS/View通过一个包含4.0,5.0,6.0的PAR数组参数,以及通过一个值为3的NPAR参数传递这些数值。
通过使用这些功能使得用户子程序更加灵活。
例如,如果计算需要marker101和marker102的距离,可以将这些标志符直接写进用户子程序。
3. 避免不连续在运行表达式中,当使用子程序来定义运动,传感器,力,或者模型中的状态平衡方程时,应当保证这些函数是连续的。
不连续的函数很难处理,因为大多数数学理论都是假定系统方程是连续的。
如果违反了该规则,ADAMS/Solver就会得出出人意料的结果。
当使用IF声明,将分段函数连接起来时,常常会产生不连续函数。
为了保证函数是连续的,在使用该类型的函数时,一定要小心。
4. 创建用户子程序为了创建自己的用户子程序,ADAMS提供了子程序模板并将它们放在安装目录install_dir/adams/solver/usersubs中。
子程序不能以C语言为模板。
如果需要一个C语言的子程序,必须通过修改FORTRAN文件来创建它,或者使用FORTRAN模板作为向导,创建自己的C语言格式子程序。
创建用户子程序的步骤:(1) 决定需要创建什么样的用户子程序。
例如,如果有GFORCE的声明,可以创建GFOSUB的用户子程序。
(2) 决定要计算什么,需要什么输入参数。
(3) 将合适的用户子程序模板从安装目录拷贝到当前目录。
模板目录中包含了要使用的所有子程序模板。
(4) 使用文字编辑器来察看用户子程序模板。
(5) 按需要修改用户子程序。
从用户子程序中调用功能子程序,或者其他FORTRAN或C语言子程序。
(6) 保存用户子程序。
因为可能对不同的模型会使用相同的子程序,所以最好给文件起一个容易区分的名字。
5. 调用用户子程序可以通过使用声明或者命令来调用用户子程序。
通过使用前面定义的用户子程序的名字来让ADAMS/Solver知道调用哪一个子程序。
也可以使用子程序来定义一些模型元素。
能调用用户子程序的声明或命令如表9-3所示。
表9-3 调用用户子程序的声明或命令可以从用户子程序中调用功能子程序。
这些子程序的功能就像是在用户的数据和用户使用的用户子程序的接口一样。
例如,在driver user——written subroutine(驱动用户子程序)中,可以使用control,access功能子程序。
从evaluation user——written subroutines(计算用户子程序)中,也可以调用access,function,以及某些情况下setup 函数。
换句话说,可以从上面任何一个用户子程序中调用access和function函数,但用户只能从driver subroutine中调用control函数,从某个evaluation subroutines中调用setup函数。
6. 编译,连接和运行库在写完定制的子程序后,必须要将它们编译并连接到ADAMS以创建到ADAMS/Solver的用户库文件中去。
然后,可以连同该库与ADAMS/Solver 一同运行。
必须有一个FORTRAN编译器,因为ADAMS本身不提供编译器,由用户子程序生成动态连接库的详细过程参见12.4.5节后半部分的介绍。
9.2 常用ADAMS用户子程序简介9.2.1 使用GFOSUB用户子程序实例为了使读者对用户子程序有一个直观印象,本节首先给出声明和调用GFOSUB子程序的例子,通过与GFORCE函数表达式的对比,说明使用用户子程序的必要性。
有关GFOSUB 用户子程序的更详细内容,将在9.2.2小节进行介绍。
另外,在12.4.4节的结尾部分提供了GFOSUB 用户子程序的具体工程应用实例。
现假定有如下一个GFORCE 函数表达式的声明,其函数表达式定义了小球和斜面之间的某种相互作用力关系(此处相互作用力不一定有确切的物理含义,仅为了说明GFORCE 的定义过程),包括力矢量和力矩矢量。
如下图所示,为了在GFORCE 中描述这种相互作用力关系,在小球球心上定义了标架Mark_I (ID 为2001),在斜面上定义了标架Mark_R (ID 为2003),同时为了确定小球对斜面的反作用力点的位置,生成与标架Mark_I 时刻重叠的标架Mark_J (ID 为2002),Mark_J 隶属于斜面。
于是可以使用GFORCE 函数表达式的声明,如下面所示(该GFORCE自身的ID 为100):GFORCE/,100 I=2001, JFLOAT=2002, RM=2003,FX = - 10.0 * VX(2001,2003,2003) FY = - 10.0 * VY(2001,2003,2003) FZ = - 10.0 * VZ(2001,2003,2003) TX = - 100.0 * WX(2001,2003,2003) TY = - 100.0 * WY(2001,2003,2003) TZ = - 100.0 * WZ(2001,2003,2003)如果力和力矩的表达比较冗长,则可以使用GFOSUB 用户子程序来代替GFORCE 声明。
以及,用下面语句调用已创建好的GFOSUB 子程序,并向其传递参数。
GFORCE/,100 I=2001, JFLOAT=2002, RM=2003, FUNCTION=USER(10.0, 100.0, 2001, 2003, 2003)Part_I Mark_J ::ID =2003Mark_I :图9-1 小球与斜面的坐标定义及相对关系GFOSUB用户子程序的程序体创建如下:SUBROUTINE GFOSUB(ID,TIME,PAR,NPAR,DFLAG,& IFLAG,RESULT)======================= 定义与声明===================—————————————外部变量定义——————————INTEGER IDDOUBLE PRECISION TIMEDOUBLE PRECISION PAR( * )INTEGER NPARLOGICAL DFLAGLOGICAL IFLAGDOUBLE PRECISION RESULT(6)ID 标志号,在内部程序中调用TIME 仿真时间PAR 不定维的数组,用以向程序传递参数,本例中维数为5,分别为:PAR(1)=10.0PAR(2)=100.0PAR(3)=2001PAR(4)=2002PAR(5)=2003NPAR PAR数组的维数,本例中NPAR =5DFLAG 积分标志位,IFLAG 初始标志位RESULT 返回的程序值,每一次调用可以返回六个值,本例中:RESULT(1)为FX的值RESULT(2)为FY的值RESULT(3)为FZ的值RESULT(4)为TX的值RESULT(5)为TY的值RESULT(6)为TZ的值———————————本地变量和参数定义—————————DOUBLE PRECISION FCT,TCR,VEL(6)INTEGER IPAR(3),IM,JM,RM,NSTATESLOGICAL ERRFLG========================可执行代码=====================FCT = PAR(1)TCR = PAR(2)IM = PAR(3)JM = PAR(4)RM = PAR(5)……调用SYSARY子程序获得计算信息:如果变量IFLAG的值为true,则将子程序初始化。