首页 百科知识如何进行基于接口程序的二次开发

如何进行基于接口程序的二次开发

【摘要】:ADAMS/Solver软件具有强大的二次开发功能,支持C++、Fortran语言,可按用户需求定制求解器,极大地满足用户的不同需要。ADAMS软件提供了多种自定义子程序的源代码模板,用户可以根据需要进行选用并按自身实际情况进行编写,如电动斥力计算程序sforce.f就是在ADAMS软件提供的SFOSUB自定义子程序模板上用Fortran语言编开发的。现以本章第2.3节电动斥力的计算为例来说明取名为sforce.f的编写。图2-52 子程序SFOCUB的流程图图2-53 菜单选择2)打开Solver Executable菜单后,会出现图2-54所示的对话框。

ADAMS软件是一个开放的体系。ADAMS/Solver软件具有强大的二次开发功能,支持C++、Fortran语言,可按用户需求定制求解器,极大地满足用户的不同需要。ADAMS软件为用户提供两种子程序,它们是用户自定义子程序(User-written Subroutine)和功能子程序(Utility Subroutine),用户可以根据需要选用C或Fortran语言编写用户自定义子程序(Sub-routine),通过编译同ADAMS/View软件连接。ADAMS软件提供了多种自定义子程序的源代码模板,用户可以根据需要进行选用并按自身实际情况进行编写,如电动斥力计算程序sforce.f就是在ADAMS软件提供的SFOSUB自定义子程序模板上用Fortran语言编开发的。值得指出的是,将自定义过程模型连接到ADAMS软件中不会影响样机的计算效率和速度。

现以本章第2.3节电动斥力的计算为例来说明取名为sforce.f的编写。SFOSUB自定义子程序是用于计算力的一项子程序,它能自动由ADAMS软件导入第k步计算的时间tk和转角ak值到子程序中来,后者是通过在自定义程序中引用功能子程序SYSFUC来获得的,自编程序中首先由式2-9计算tk瞬间的电流ik,在已知电流ik和转角ak条件下,由电磁场计算获得的数据网格F=fai),按式2-10二元三点插值求得tk时的洛伦兹力FL,再按式2-1求得霍姆力,两个力加起来就得到总的作用在动触头上的电动斥力,但必须注意,当主轴转角大于触头超程时,动静触头分离,此后霍姆力消失,作用在动触头上电动斥力仅为洛伦兹力。由第k步运算获得的电动斥力输回到ADAMS软件中就可进行第k+1步的动力学仿真,直至机构运动结束。这样就把自定义的电动斥力子程序和ADAMS软件联系起来进行计入电动斥力的机构动力学仿真。图2-52为对应的流程图

当用Fortran语言编好描述该过程的代码sforce.f,然后通过编译,使其生成动态数据库文件sforce.dll,然后用下述步骤导入至ADAMS软件中。

1)首先在Setting菜单下打开Solver Executable菜单,如图2-53所示。

978-7-111-58417-9-Chapter02-75.jpg

图2-52 子程序SFOCUB的流程图

978-7-111-58417-9-Chapter02-76.jpg

图2-53 菜单选择

2)打开Solver Executable菜单后,会出现图2-54所示的对话框。

978-7-111-58417-9-Chapter02-77.jpg

图2-54 对话框

注意,在Executable中,一定要选择Internal,以保证使用的是内部求解器。

然后,在Slover Library中输入sforce.dll文件所在的路径,完成这一链接后还要利用施加力的对话框,对作用在动触头上的电动斥力作专门的定义,包括定义力的方向为作用于一个物体,并随物体运动,即在项Direction输入On one Body,Moving with Body;指出作用力的对象,这个例子是动导电杆,即项Body输入Part名称;力的定义方法为自定义子程序,即在项Define Using输入Subroutine;用户参数,即项User Parameters需输入几何体上确定转角的2至3个MARKER号,具体可参考ADAMS软件系统中用户自定义子程序SFOSUB和功能子程序SYSFUC的有关规定。这样用户自编子程序SFORCE就和ADAMS软件主程序连接起来,就可进行计及动触头上电动斥力的操作机构多体动力学仿真。