C语言在ADAMS用户定义子程序中的应用

合集下载

【Adams应用教程】第9章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内部就能够实现,不需要其它外部程序代码;另外三种方法需要使用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编译汇编程序的使用总结

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用户自定义函数的研究

应用C语言编写ADAMS用户自定义函数的研究
第+期 !""0 年 + 月
文章编号: +""+ $ -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二次开发及实例

【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模型语言及仿真控制语言

【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 用户子程序摘要针对小球振动的简单模型,利用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语言用户子程序

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文件,否则编译时会报错。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档