C语言在ADAMS用户定义子程序中的应用
【Adams应用教程】第9章ADAMS用户子程序
第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应用ADAMS/Solver。
ADAMS中实现控制的六种方法介绍(学习总结
在ADAMS中使用控制器来实现控制有六种方法。
其中有三种方法在ADAMS内部就能够实现,不需要其它外部程序代码;另外三种方法需要使用ADAMS外部程序代码才能实现。
下面简单的介绍一下这六种方法。
2.1方法一:使用控制定律定义力或扭矩函数使用控制定律来定义力或扭矩的函数表达式是ADAMS中最直接的一种使用控制器的方法,为了便于说明这种方法,下面用一个简单的例子来说明。
在某模型中扭矩的表达式为:F(time)=-20.0*WY(MAR_1),这个表达式的意思是扭矩是基于Y 方向的角速度其增益为20的阻尼扭矩。
如果这个函数是连续的,那么系统就具有很高的非线性,我们可使用STEP函数来控制相关的控制力或控制扭矩的开或关。
2.2方法二:使用ADAMS/View内部的控制工具箱利用ADAMS/View的控制工具箱,可以直接在ADAMS/View样机模型中添加控制模块,完成机电一体化系统的仿真分析。
该控制工具箱提供了简单的线性控制模块和滤波模块,可以方便的实现前置滤波、PID控制及其它连续时间单元的模拟仿真。
2.3方法三:用FORTRAN或C来写子程序来实现用FORTRAN或C写的用户子程序可以通过编译后连接到ADAMS可执行程序中去。
在应用程序中,用户自定义子程序能够很好的执行控制规律而且能很好的连接到ADAMS模型中适当的物体上。
该方法属于ADAMS二次开发的内容。
2.4方法四:使用ADAMS/Linear模块导出状态矩阵的方法用户可以指定输入(比如控制力矩)、输出(比如角速度和偏差),从而输出状态矩阵,这些状态矩阵能被MATLAB或Matrix-X识别,但是要注意的是模型中的平衡配置要是线性化的。
这种方法最大的优点是在外部代码中所有控制规律的设计是为该模型所用的。
2.5方法五:使用ADAMS/Controls进行协同仿真使用ADAMS/Controls模块,可以将机械系统仿真分析工具同控制设计仿真软件有机地连接起来,实现将复杂的控制添加到机械系统样机模型中,对机电一体化的系统进行联合仿真分析。
vc++2005 和masm编译汇编程序的使用总结
关于《Intel汇编语言程序设计》(第五版)这本书里面的例子,我不知道该用什么编译器,书上说了个Microsoft Visual C++ 2005 Express 的软件,它可以编译连接汇编语言程序,可惜书上只丢下一句话:关于如何使用Microsoft Visual C++ 2005 Express 汇编、链接和运行汇编语言程序的详细步骤,请参见站点。
得到的结果是:此程序无法显示网页!!!网上寻找了几个小时,东一篇西一篇的终于找到使用方法了,由于网络上很少有具体的讲解,于是我当然要把自己的努力奉献出来了,以下是我总结的使用方法:鉴于我的表达能力有限...看不懂我的语言的朋友,加QQ吧:357382814一.基本配置1. 安装Microsoft Visual C++ 2005 Expres 你可以去microsoft网站下载,我是在一篇博客上找到的:/download/A/9/1/A91D6B2B-A798-47DF-9C7E-A97854B7DD18/VC.iso速度不错,软件内容包括:Microsoft Visual C++2005 Express EditionMicrosoft MSND 2005 Express EditionMicrosoft SQL Server 2005 Express Edition x86但是我的Microsoft SQLServer 2005 安装不成功,但不影响使用。
2.下载masm8.0(下载后的文件名为MASMsetup.EXE)3.用winrar解压MASMsetup.EXE,得到setup.exe(什么?你不会解压?呵呵,在MASMsetup.EXE上点右键,点击解压到当前文件夹即可)再解压setup.exe,得到vc_masm1.cab,再解压vc_masm1.cab,得到FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8重命名为ML.exe至于是不是一定要用masm8.0,我也不清楚,也许只要masm6.0也行,反正我是自己试着试着就成功了,正在烦恼的朋友,不妨按我的步骤做,虽然繁琐一点,但是一定能成功!4.将ML.exe放到E:\Microsoft Visual Studio 8\VC\bin 目录下(根据你的安装目录)5.将masm6.15LIB目录下的lib文件全部复制到E:\Microsoft Visual Studio 8\VC\lib 目录下(根据你的安装目录)6.将masm6.15 (当然了,去下载一个masm6.15, 或者6.0应该也没问题的) INCLUDE目录下的文件复制到E:\Microsoft Visual Studio 8\VC\include ((根据你的安装目录,有重复的话,不覆盖)7.另外,因为要使用《Intel汇编语言程序设计》里的例子,里面的例子部分(或者全部?)都少了2条include语句,所以为了避免每次都自己加进去,要修改一下Irvine32.inc.用记事本打开Irvine32.inc,在:INCLUDE SmallWin.inc ; MS-Windows prototypes, structures, and constants.NOLIST后面增加Includelib Kernel32.libIncludelib Irvine32.lib即可..ok!成功了一半了,开始写程序吧!!!二:建立汇编文件的步骤1.打开Microsoft Visual C++ 2005 Expres (在开始菜单可以找到启动程序的快捷方式)新建一个工程,project,如图2.选择General--Empty Project ,然后输入工程名,选择保存工程的目录3.好,在左边可以看到我们的工程,如,我新建一个mutou工程:然后,在Resource Files 上点右键Add New Item,如图:4.然后,选择Code---C++File(.cpp), 输入name ,以asm做后缀,点击Add确定:5.好,终于可以写程序了,先别急,在工程mutou上点右键, 点Custom Build Rules,在Microsoft MacroAssem...左边的框框打勾.ok6.在工程mutou上点击鼠标右键,选择Properties ,这一步比较繁琐,但是也接近成功了!(1)linker-input-additional dependencies 输入Irvine32.lib,ok(2)如果链接库文件不在默认的路径下,则需要指定“linker-general-additional library directories”属性值为链接库所在的路径。
应用C语言编写ADAMS用户自定义函数的研究
文章编号: +""+ $ -22U . !""0 / "+ $ "+"+ $ "!
)=MB8>9GK
机械设计制造 (9I8?> Q )=>6L=MH6G9
$ +"+ $
应用 & 语言编写 ’(’)* 用户自定义函数的研究
纪玉杰 +, ! 杨 强+ 孙志礼 + 李良巧 . + 东北大学 机械工程与自动化学院,沈阳 ++"""% / . ! 沈阳理工大学,沈阳 ++"+01 / . - 中国兵器工业系统总体部,北京 +"""12 /
其中 &[U$C% F W2.PL+ L H 函数的功能是产生符合标准正态 分布的伪随机数, O2*W O06*/*1*5L*b+6.?+4 F H 函数的功能是用来注册 )函数来实现 ) ,使其在 用户自定义函数 ( 通过 O063./01*2/65WW( $%$&’ 中可用。 I &[U$C%I 是即将显示在 $%$&’ ( )*+, 中函 数构造器 ( -./01*2/ d.*LW+4)中的用户自定义函数名,3/6U6U 为 , 并带一 枚举类型常量, 表示函数的返回值类型为实型 ( W2.PL+) 个实型的主参数。第四个参数由函数的主参数个数决定,最后 一个参数表示单位的类型,一般取 S 。 ( 更详尽的说明请参考 7W*60" X 头文件, $%$&’ 安装目录下… ( 5O*+, ( .?+46?.P? 中 )
【Adams应用教程】第11章ADAMS二次开发及实例
第11章 ADAMS二次开发及实例ADAMS具有很强的二次开发功能,包括ADAMS/View界面的用户化设计,利用cmd语言实现自动建模和仿真控制,通过编制用户子程序满足用户的某些特定需求,甚至可以拓展ADAMS的功能。
本章主要介绍如何定制用户化界面、宏命令的用法和条件循环命令的用法,以及综合以上功能的应用实例。
由于用户子程序的主要内容已在第9章进行了详细介绍,因此本章只对所涉及到的用户子程序编译联接操作过程进行简单介绍。
11.1 定制用户界面ADAMS/View的界面对象都是以层次结构存储在模型数据库中,类似于零件模型的层次结构。
所有定制的界面对象都存储在名为GUI的数据库中,该数据库可以很方便地管理所有的标准界面对象。
如图11-1所示。
图11-1 界面对象的层次结构机械系统动力学分析及ADAMS应用最上层的界面对象是窗口和对话框。
如果主要建模窗口起名为main的话,其数据库全名应为.gui.main。
尽管窗口和对话框看起来很相似,但它们却是很不相同的。
窗口通常是在用户工作的时候在屏幕上停留一段时间,而对话框通常是在用户输入数据或是进行访问控制时才会出现。
窗口有工具条和菜单栏,窗口和对话框也包含其他的界面对象如按钮,标签等等。
大多数用户化操作涉及到创建对话框或者修改标准对话框。
但若不用创建一个完整的用户化界面时,则通常只用修改菜单条和工具栏。
ADAMS所包含界面对象属性如表11-1所示。
表11-1 ADAMS所包含界面对象属性第11章ADAMS二次开发及实例在大多数情况下,用户定制界面是指制作用户自己的菜单和对话框。
通常可使用菜单编辑器和对话框编辑器来定制界面,通过它们可以很快地访问并改变大多数界面对象和功能。
下面就这两方面的内容作简单介绍。
11.1.1 定制菜单1。
菜单编辑器通过以下菜单路径可以调出菜单编辑器窗口:Main menu==》Tools==》Menu==》Modify……菜单编辑器窗口如图11-2所示:图11-2 菜单编辑窗口在菜单编辑器窗口中显示的是ADAMS菜单文件,菜单文件是按照一定的语法书写的解释性程序文件,在默认情况下,菜单编辑器窗口里显示的是描述ADAMS标准菜单的菜单文件,通过按照一定的语法规则修改该菜单文件,就可以得到用户化的菜单。
【Adams应用教程】第6章ADAMS模型语言及仿真控制语言
第6章 ADAMS模型语言及仿真控制语言本章对ADAMS的模型语言及仿真控制语言进行了简介。
通过本章的学习可以掌握ADAMS/Solver模型语言adm文件、ADAMS/Solver仿真控制语言acf文件的语法、结构,对一些关键语句进行深入的说明,通过学习可以深刻理解ADAMS中几何、约束、力元等的实质,可以脱离ADAMS/View环境直接利用ADAMS/Solver进行一些高级应用,并为进一步的ADAMS二次开发打下基础。
6.1ADAMS的主要文件介绍ADAMS中关于模型及分析主要有以下几种类型文件:ADAMS/View二进制数据库bin 文件、ADAMS/View命令cmd文件、ADAMS/Solver模型语言adm文件、ADAMS/Solver 仿真控制语言acf文件,以及ADAMS/Solver仿真分析结果文件:req文件、res文件、gra 文件、out文件、msg文件。
ADAMS/View二进制数据库bin文件以“.bin”为文件名后缀,文件中记录了从ADAMS 启动后到存储为bin文件时的全部信息-包含模型的完整拓扑结构信息、模型仿真信息以及后处理信息。
可以包含多个模型、多个分析工况和结果。
可以保存ADAMS/View的各种设置信息。
文件为二进制不能阅读、编辑,只能通过ADAMS/View调阅,由于信息全面一般文件都比较大。
ADAMS/View命令cmd文件以“.cmd”为文件名后缀,是由ADAMS/View命令编写的模型文件,可以包含模型的完整拓扑结构信息(包括所有几何信息)、模型仿真信息,为文本文件,可读性强,可以进行编程,是ADAMS的二次开发语言,不包含ADAMS/View 的环境设置信息,不包含仿真结果信息,只能包含单个模型。
ADAMS/Solver模型语言(ADAMS Data Language)adm文件,以“.adm”为文件名后缀,文件中包含模型中拓扑结构信息,但有些几何形体如link等不能保留。
ADAMS用户子程序
ADAMS 用户子程序摘要针对小球振动的简单模型,利用ADAMS 用户子程序,说明子程序的编写和使用,验证三种模型结果的正确性.1引言一般情况下,ADAMS 的大部分功能通过函数表达式完成,函数表达式很容易操作,因为不必编译或连接程序,而且ADAMS/Solve 还会实时地提供函数表达式.但函数表达式提供的只是有限的编程结构,因此有些复杂的情况,特别是涉及一些逻辑表达,用函数表达式则很难表达出来.因此在需要采用一些ADAMS 没有提供的特殊函数时,采用用户子程序。
用户子程序更具有通用性,利用编程语言来定义模型元素或者特定的输出。
用户将函数表达式写成子程序的形式并将其与ADAMS/View 连接,它具有函数表达式所没有的通用性和灵活性.子程序利用通用程序设计语言(FORTRAN 或C)的功能来定义ADAMS/View 不能提供的函数,并使之按照需要而量身设计。
通过连接用户子程序,不会失去ADAMS/View 的任何功效,也不会降低仿真速度。
2计算模型质量为kg 5的小球在弹簧力和重力作用下做振动,弹簧的刚度为m /N 200,阻尼为)s /m /(N 1。
在ADAMS 中建立弹簧从简单到复杂可以有三种方法:1)直接建立模型;2)使用Sforce ,在Sforce 中写弹簧力的方程;3)使用用户子程序.2。
1模型1新建一个质量为kg 5的小球,创立一个弹簧,在重力的作用下振动,如图1所示。
图1 模型1示意图图2 弹簧设置2.2模型2根据弹簧力的表达式来定义Sforce,因为VY速度为负,因此,表达式可以表示为:200*DY(MARKER_3,PART_2.cm)-1*VY(PART_2.cm)。
2。
3模型3使用子程序表达弹簧力,输入参数为2,3,200,1。
前两个参数表示弹簧的两个MARKER点ID,第三个参数为弹簧刚度,第四个参数为弹簧阻尼。
图3 用户子程序设置ADAMS用户子程序如下:#include "slv_c_utils.h”adams_c_Sfosub Sfosub;void Sfosub(const struct sAdamsSforce*sforce, double time, int dflag,int iflag,double*value){double dy,vy;double k,c;int ipar[2];int errflg;ipar[0]=sforce-〉PAR[0];ipar[1]=sforce—>PAR[1];k=sforce-〉PAR[2];c=sforce->PAR[3];c_sysfnc(”DY",ipar,2,&dy,&errflg);c_sysfnc(”VY”,ipar,2,&vy,&errflg);*value=-(k*dy+c*vy);}3计算结果通过仿真计算,可以得到计算结果如下。
Adams2012编译C语言用户子程序
Adams2012编译C语言用户子程序1 概述在Adams使用过程中,有些复杂的情况特别是涉及到一些逻辑表达,用函数表达式很难表达出来,这种情况需要使用用户子程序。
Adams用户子程序支持C语言和Fortran语言,随着C语言的普及,越来越多的用户使用C语言编写用户子程序。
用户子程序属于Adams较难掌握的部分,且Adams2012版本和以前版本相比较,用户子程序的数据格式和函数内容都已有了较大的发展,本文介绍如何在Adams2012版本中编译C语言用户子程序。
2 操作平台ν操作系统:Windows 7 64位ν软件版本:Adams 2012 32位、Visual Studio 2008 32位ν编译软件:Intel Fortran 11.0ν环境配置:ν1.在操作系统环境变量Path中增加Adams启动文件mdi.bat的路径,如D:\MSC.Software\Adams\2012\common\mdi.batν2.把Fortran安装路径下的libifcoremd.lib、libmmd.lib、libifportmd.lib、libirc.lib、svml_dispmd.lib这5个库文件复制到Adams安装路径下win32文件夹下3 编写用户子程序Adams安装程序solver\c_usersubs文件夹下有C语言编写的常用的用户子程序,其中slv_c_utils.h文件是用户子程序的头文件。
编写用户子程序时,在这些程序的基础上进行更改会有事半功倍的效果。
本文以编写VForce用户子程序为例,对其编写、编译操作过程进行说明。
复制vfosub.c和slv_c_utils.h两个文件到个人工作文件夹下,如D:\mysubroutine,可以对vfosub.c文件进行代码修改。
本文直接使用vfosub.c的原始代码,其代码为:图1 用户子程序代码注意:因为代码中引用了slv_c_utils.h,复制时必须同时复制slv_c_utils.h文件,否则编译时会报错。
如何建立ADAMS用户子程序DLL文件
如何建立ADAMS用户调用子程序DLL文件?(1)编写.f文件。
可以用记事本编辑,最好用Fortran编辑,然后Compile一下,看看是否有语法错误,因为ADAMS的命令很难给出错误原因。
注意:compile后生成.obj 文件,但是这个文件并非以后要用到的.obj文件,Compile的目的仅仅是检查错误。
(2)ADAMS 2003: 进入D盘根目录(也可以设置其他目录,但必须保证该盘是ADAMS 的安装目录所在盘,本例以D盘为安装目录),输入如下语句:df /c /architecture: p6 /Ob2 /Z7 myconsub.f,生成myconsub.obj文件(该命令是Fortran命令,因此可能必须要安装Fortran,但是Fortran版本不同,这个命令也就不同。
为什么进入D盘根目录?这应该是安装Fortran/ADAMS的时候添加了环境变量,使得在D盘根目录下可以调用这些命令。
因此一个简单的办法就是把Fortran和ADAMS都安装到一个盘下,在那里调用一定是好使得,后边还有ADAMS的这样的命令)。
对于ADAMS2005,Fortran版本为6.6B,是安装6.6后由升级包升级到B的,我没有找到升级包因此就用了6.6,感觉也好使。
下边是6.6的命令(3)ADAMS2003:从开始菜单进入MDC.ADAMS | MSC.ADAMS2003 | Asolver | Create custom solver 命令,进入“Create Custom Solver”窗口,进入Debug模式,输入目标文件名,自动生成.dll文件和.lib文件。
但是对于ADAMS2005,没有找到对应得输入窗口和命令,后来费尽九牛二虎之力终于找到了解决方案:在D盘下直接输入:adams05 cr-u y myconsub.f -n myconsub.dll,其中myconsub.f 为自己编写的f文件名,myconsub.dll为生成的.dll文件名,这个可以自己随意改的。
应用C语言编写ADAMS用户自定义函数的研究
"# $# " 编译性函数
编译性函数是由 C 或 .352560 语言编写,并被编译连接到 %&%’( ) *+,- 中。它具有和系统提供的库函数一样的功能,用 户可以用同样的方式使用这些函数。
P174/012+3076XX G J ’\V%D& J H G .dDC<:BD I ’\V%D&H 407V7VH $H T I ^ a
“ABC7%ABDE7A:DF G ;$H ;"H &’ G ;$H ;" I ) " I J = 2,>27347,>?5,@@+30 9 “;$ J H “;" J = 65K/8,027068,@ 9 2L?, 9 M3162+30735+262+30
其中,;$ , ;" 为函数 ’:&7;< 的参数, 2,>27347,>?5,@@+30 为文 本内容, 65K/8,027068,@ 为参数名称。以下语句中将用到函数 ’:&7;< 在两个 86N,5 点的中点创建一个新的 86N,5 点: 86N,5 15,62, 86N,57068, 9 G 86N,57$H 86N,57" I I 86N,57O M3162+30 9 G ’:&7;<
!"# $#%#&$’" () *$+,+)- .%#$ / *$+,,#) %.0$(.,+)# (1 23245 +) 6 7$(-$&88+)- 9&)-.&-#
34 56 % 789,- " 5(:; <8=>?, , +@: AB8 % C8, , D4 D8=>? % E8=F. / , :FGHB9=IH9G> @>8J9GI8HK ’FCC9?9 FL *9MB=>8M=C N>?8>99G8>? =>O (6HFP=H8F>- +B9>K=>? ,,###&, ’B8>= 0 / " +B9>K=>? @>8J9GI8HK FL +M89>M9 Q R9MB>FCF?K, +B9>K=>? ,,#,1!, ’B8>= 0 / . ’B8>= :FGHB 4>O6IHGK ;GF6S +KIH9P N>?8>99G8>? 4>IH8H6H9- T9878>? ,###!2,’B8>= 0
C语言编写adams用户自定义函数导入到adams中function_builder
应用C语言编写adams用户自定义函数导入到adams中function builder 的整个过程1,当前使用软件adams2005,visual c++ v6,Compaq visual fortran6 (这里最好不要用intel visual fortran .当所用的adams为07版本时可以用intel visual fortran.其时需要fortran的目的是获得其中的*.dll文件所需的dll文件都放在附件里.)2,编写源程序,修改ADAMS安装目录下…/aview/user subs中vc_init_usr.c模板文件中的C 源代码或直接编写能够实现特定功能的C程序(注意严格按照模板格式编写)。
下面这个例子是我从网上找到的关于如何利用C程序产生正态分布的特殊随机数。
假设源程序保存为myvcfun.c#include"mdi_c.h"#include"math.h"#define M 8388608#define T 2045double MYRAND( double l ){double x,r,k,y,x1,x0;int j,i;x0=1;x1=1;for(j=0;j<l;j++){k=0;for( i=0;i<12;i++){x=fmod(T*x0,M);r=x/M;x0=x;k=r+k;}y=fmod(T*x1,M);x1=y;x0=x1;}return(k-6);}void vc_initialize_user(){vc_function_add("MYRAND", (FUNCTION)MYRAND, fn_R_R,1,0);}注意必须保存为 c 文件,将这个C文件与…/aview/usersubs中的mdi_c.h 的头文件放在一起用VC打开myvcfun.c点击compile进行编绎,在debug 文件夹中会产生myvcfun.obj文件。
C语言在ADAMS用户定义子程序中的应用
C语言在ADAMS用户定义子程序中的应用
陈海卫;张秋菊
【期刊名称】《机电一体化》
【年(卷),期】2008()4
【摘要】通过常见的弹簧阻尼系统,以VFOSUB为例,详细讨论了应用C语言开发用户定义子程序的全过程。
介绍了VFOSUB的接口、系统状态变量的测量、力矢量的计算、偏导信息反馈的理论基础与反馈途径,以及用户定义子程序的编译与连接方法,并通过对比验证了所用方法的正确性。
这些方法在应用C语言进行ADAMS的二次开发的过程中具有普遍的参考意义。
【总页数】4页(P39-42)
【关键词】ADAMS;C语言;二次开发;用户定义子程序
【作者】陈海卫;张秋菊
【作者单位】江南大学机械工程学院
【正文语种】中文
【中图分类】TH113;TP311.1
【相关文献】
1.ADAMS用户子程序在软着陆动力学仿真中的应用 [J], 蒋万松;黄伟;王海涛
2.ADAMS用户子程序在堤坝抢险打桩六足机器人仿真中的应用 [J], 王存磊;朱灯林
3.应用C语言编写ADAMS用户自定义函数的研究 [J], 纪玉杰;杨强;孙志礼;李良
巧
4.MSC Adams用户自定义子程序在卫星姿控系统仿真分析中的应用 [J], 张志娟;关晓东
5.MSC Adams用户自定义子程序在卫星姿控系统仿真分析中的应用 [J], 张志娟;关晓东
因版权原因,仅展示原文概要,查看原文内容请购买。
MD ADAMS R3用户子程序使用相关问题
MD ADAMS R3用户子程序使用相关问题1.系统软件要求MD ADAMS R3版本的ADMAS软件。
最好直接安装在根目录下。
由于MD ADAMS R3版本在编译用户子程序时要求Intel Fortran Compiler 9.1或者Visual Studio 2005。
这个可以从下面的步骤发现:1)开始->所有程序->MSC.Software->MD ADAMS R3->ADAMS Command2)打开后会出现下面的DOS界面3)在下面的光标处输入cr-u,回车,出现那个什么Debug mode行时,直接回车(我也不清楚这行是干什么的),就会看到列出来的编译器版本。
补充:其实这里安装Intel Fortran编译器,就是为了下面编译的时候用到起类库中的libifcoremd.lib、libmmd.lib、libifportmd.lib、libirc.lib这四个文件。
前三个文件你会在MD ADAMS的安装文件中的win32文件夹中发现已经存在,但是注意的是这三个文件还是需要用上述的文件替换,因为我使用的系统式XP,如果不替换,在编译的时候会提示说和目标机器不对应。
如果不把这四个文件从Intel Fortran的安装文件下(C:\Program Files\Intel\Compiler\11.0\072\fortran\lib\ia32,我的是装在C盘下)拷贝到MD ADAMS得win32文件夹中,编译的时候也会提示说找不到这些文件,即使你在环境变量的PATH中已经添加了Intel Fortran的安装路径。
我觉得安装Intel Fortran编译器的实质也就是为了得到这四个文件,所以把这四个文件拷贝到MD ADAMS的win32中就可以了。
2.实例—在一个模型中施加一个VFORCE1)用记事本创建一个文件,保存为VForce.c(必须是.c扩展名,不能使.cpp。
这个我试过了,如果是.cpp扩展名,编译的时候会出错)。
ADAMS仿真
用户子程序
编写.c文件 编译
用户子程序
连接,产生.dll文件;
用户子程序
设置外部求解库
联合仿真
设 计 流 程 建立机械 系统模型
联合仿真
确定ADAMS的输入输出变量
联合仿真
建立液压系统模块 在MATLAB命令窗口输入 control plant plant的名字,查 看变量; 输入:adams_sys, 调 出联合仿真模块。
ADAMS仿真 仿真 高级应用
之入门篇
ADAMS仿真 仿真
1.用户子程序(user subroutine) 即:用户自己编写的程序 当ADAMS函数库提供的函数不能满足要求时:
比如:需要控制复杂仿真运行时,以及需要作决策逻辑时(if-then)
2.联合仿真(co-simulation) ADAMS与matlab、Easy5、AMESim等进行联合 实用于: 复杂的物理模型,如机电液联合; 控制系统。
联合仿真
谢谢各位老师和同学! 谢谢各位老师和同学!
用户子程序
用户子程序分为三类:
(1)Driver Subroutine——驱动子程序 (2)Evaluation Subroutines——计算子程序 (3)Restart subroutines——重启子程 (堆栈)
用户子程序
用户子程序
软件平台 支持C/C++,FORTRON
步骤:
(1) 编写.c或者.f文件; (2) 编译,产生.obj文件; (3) 连接,产生.dll文件; (4) 运行
应用C语言编写ADAMS用户自定义函数的研究
应用C语言编写ADAMS用户自定义函数的研究
纪玉杰;杨强;孙志礼;李良巧
【期刊名称】《机械设计与制造》
【年(卷),期】2006(000)001
【摘要】应用C语言编制用户自定义函数或子程序的问题,是应用ADAMS进行二次开发的焦点.利用ADAMS提供的模板编写C语言函数,在VC++6.0环境下编译生成目标文件,利用动态连接库技术实现其与ADAMS/View的链接,生成ADAMS 用户自定义函数,可以满足用户特殊要求.通过编制产生服从正态分布的伪随机数的用户自定义函数的实例,详细介绍了上述技术的实现过程.
【总页数】3页(P101-103)
【作者】纪玉杰;杨强;孙志礼;李良巧
【作者单位】东北大学,机械工程与自动化学院,沈阳,110004;沈阳理工大学,沈阳,110168;东北大学,机械工程与自动化学院,沈阳,110004;东北大学,机械工程与自动化学院,沈阳,110004;中国兵器工业系统总体部,北京,100089
【正文语种】中文
【中图分类】TP39
【相关文献】
1.T_sql中的用户自定义函数及其应用 [J], 桂云秋;张业展;朱臣
2.如何用C语言编写“文学研究助手” [J], 薛晨
3.C语言中用户自定义函数的使用 [J], 高英
4.C语言用户自定义函数案例教学设计 [J], 崔孝凤
5.C语言在ADAMS用户定义子程序中的应用 [J], 陈海卫;张秋菊
因版权原因,仅展示原文概要,查看原文内容请购买。
使用自定义函数进行ADAMS的二次开发
( 1) 将 vc_user_sub.c 和 mdi_c.h 拷贝到同一个文件夹下,
在 Visual C++ 中打开 vc_user_sub.c 文件进行编译, 则在相同目
录下的 Debug 文件夹下自动生成 vc_user_sub.obj 文件。
( 2) 首 先 把 vc_user_sub.obj 文 件 拷 贝 到 ADAMS软 件 的 安
装目录下的 common 目录中。另外在编译、链接过程 中 需 要 用
到 Dfprot.lib 和 Dformd.lib 两 个 库 文 件 , 将 其 也 粘 贴 到 该 目 录
中。
( 3) 使 用 命 令 行 将 vc_user_sub.obj 转 为 动 态 链 接 库 文 件
vvc_user_sub.dll。具 体 步 骤 为 : 开 始 / 运 行 / 键 入 CMD 后 回 车
1 用户自定义函数
ADAMS不但提供了方便的用户操作界面, 而且具 有 强 大 的分析求解功能, 本身就包含了种类很丰富的库函数供用户使 用。一般情况下, ADAMS 的大部分功能可以通过调用库函数来 完 成 , 库 函 数 很 容 易 操 作 , 不 必 编 译 和 连 接 程 序 , 而 且 ADAMS /Solver 还会提供运行时函数。但库函数提供的只是有限的编程 结构, 因此有些复杂的情况, 特别是涉及到逻辑表达时, 用库函 数的现有函数很难表达出来。因此当需要采用一些 ADAMS没 有提供的特殊函数时, 可以采用用户自定义函数。
mdi_c.h 头文件) 。
2.1.2 编译链接 C 源程序, 生成动态链接文件
利 用 Visual C++ 调 试 器 编 译 vc_user_sub.c 程 序 , 生 成
adams笔记
(1) 定义力的大小输入子程序的传递参数:用户可以用FORTRAN、C或C++语言编写子程序,定义力和力矩。
用户只需输入子程序的传递参数,通过传递参数同用户自编子程序进行数据交流。
必须有一个FORTRAN编译器,因为ADAMS本身不提供编译器,由用户子程序生成动态连接库的详细过程参见12.4.5节后半部分的介绍有关GFOSUB用户子程序的更详细内容,将在9.2.2小节进行介绍。
另外,在12.4.4节的结尾部分提供了GFOSUB用户子程序的具体工程应用实例。
有关GFOSUB的例子请参考9.2.1节和12.4.4节的结尾部分。
在以上程序代码中,使用了语句“user_function=”来调用用户子程序定义作用力,有关用户子程序的详细内容以在前面章节进行了介绍,这里只以子程序GFOSUB为例进行说明。
ADAMS调用子程序的命令是语句“user_function=”,具体调用哪个子程序,要看“user_function=”出现在什么地方,本例中出现在force create语句内,ADAMS就会去调用GFOSUB子程序,前面介绍过GFOSUB子程序在Fortran中的定义格式如下:SUBROUTINE GFOSUB (ID, TIME, PAR, NPAR, DFLAG, IFLAG, RESULT)INTEGER IDDOUBLE PRECISION TIMEDOUBLE PRECISION PAR( * )INTEGER NPARLOGICAL DFLAGLOGICAL IFLAGDOUBLE PRECISION RESULT(6)RESULT(1) =RESULT(6) =RETURNEND各参数的含义说明如下:ID 标志号,在内部程序中调用TIME 仿真时间PAR 不定维的数组,用以向程序传递参数NPAR PAR数组的维数DFLAG 积分标志位,IFLAG 初始标志位RESULT 返回的程序值,每一次调用可以返回六个值。