使用Solidworks、ADAMS、Simulink进行机电联合仿真

我在做课设、大作业的时候经常要做机电联合仿真,这个过程中遇到了许多不同的困难,现在将这些问题记录下来,以备不时之需,也能和同志们分享学习。

后来的补充:强烈建议没有强制要求的同志不要用ADAMS仿真了,在这篇文章里你会看到我从各个角度吐槽这个软件难用,但是当时的课程设计要求我们使用ADAMS进行仿真。现在我本人已经转用Recurdyn进行机电联合仿真了,Recurdyn的仿真性能更强,人机交互也更加优秀,还支持柔性零部件的有限元分析,有机电联合仿真需求的同志都可以尝试。我还犹豫过要不要把这个文章写完,但是转念一想还是得有始有终,因此把怎么使用ADAMS进行机电联合仿真补完。

将Solidworks模型导入ADAMS

第一种方法是Solidworks模型直接另存为Parasolid(.x_t)文件,然后在ADAMS中File -> Import...。但是这样导入的装配体没有装配关系,需要在ADAMS中重新添加,很繁琐。

第二种方法是在Solidworks插件中选择Solidworks Motion,然后在下面Motion Study中选择Motion分析,稍微拖动一下时间轴,点击计算,随后右键装配体选择输出到ADAMS,这样会生成一个.adm文件,在ADAMS中直接Open即可。这样导入的装配体装配关系已经设置完成了,直接进行下一步仿真即可。

从Solidworks Motion中导出的步骤

在ADAMS中建立机械系统和接口

在用了一段时间ADAMS之后,我只能说ADAMS非常难用,它的许多设计是违反用户的使用习惯的,界面的冗余太多,而真正有用的功能却往往藏在看不见的地方,更不必说匮乏又模糊的错误提示了。所以在使用ADAMS中,要特别小心,不然可能就得从导入模型开始重做。(这也是为什么我要从Solidworks中导入带装配关系的模型,仿真也要用Simulink联合仿真,就是为了避开ADAMS这个折磨人的东西)

第一步自然是打开ADAMS。在ADAMS的使用过程中务必注意ADAMS的工作路径,一般来说ADAMS的默认工作路径都是C盘的Users文件夹,而Files->Open Database不会自动切换工作路径。如果工作路径不对,输出的所有控制框图和算例结果都不会出现在ADAMS模型文件夹内,所以设置好工作路径非常非常重要。除了开始界面能选择工作路径以外,Files->Select Directory也能变更ADAMS的工作路径。

为什么是Users?简直莫名其妙
在开始界面修改工作路径

值得一提的是,ADAMS在根目录/controls/examples中提供了几个例子,可以用来演示和熟悉ADAMS的各个功能。(就连例程都是藏的严严实实的) 

我们这里不使用例程,使用Solidworks中导入的模型。

打开模型就能看到模型的线框图,右下角可以将线框图变为实体图。

要实现视角的旋转、平移和缩放,要按下R、T、Z键后拖动鼠标。鼠标右键菜单能看到视角控制选项和显示选项以及对应功能的快捷键。

现在我们来看左边的大纲,Bodies是从Solidworks中导入的零件,Connectors是从Solidworks中导入的配合,可以看到他们的名字都很混乱。在大纲中右键点击,模型中对应的部分就会高亮显示,选择Rename改名。

注意,改名只能修改划出的部分,两个点中间的部分不能改!

双击可以显示零件或配合的详细信息, 在关节的详细信息中,我们可以看到这个关节连接了哪两个零件,和这个关节的类型。

现在我们回到大纲,可以看到Motions、Forces、Elements、Measures底下都是空的,这也正是我们进行机电联合仿真要设置的。选择Elements选项卡System Elements中的创建变量。

 最上面的文本框可以给变量命名,变量的值是将来Simulink输入的,这里留着0就好。

我在这里设置了两个输入量,现在我们双击要设置运动的关节。

选择Impose Motion(s)。

在弹出的对话框里,根据关节类型的不同,可以设置下面的六个自由度,我们这里要设置的是一个回转关节的速度,在Rot Z"里选择velo(time) = ,点击表达式后的...。注意这里最上面的Name文本框不能用来改名字,你需要在设置完整个运动后重新Rename。(什么天才交互...)

在弹出的函数构建器里,选择Data Element类型的函数。

随后选择Algebraic Variable Value,即左下角的VARVAL函数,随后选择Assist...

在弹出的对话框的文本框中右键点击,选择ADAMS_Variable->Guesses,然后选择你刚刚创建的变量。(这个时候你点左边大纲是没用的,选择变量真的是非常离谱

 点击OK,确认一下函数表达式框里是正确的,这里对话框很多,一路OK点掉所有的对话框,注意不要点叉或者Cancel关闭对话框,否则你就得重来一遍了。这个时候我们可以重命名一下刚刚创建好的运动。我设置了两个变量,因此再创建好另一个关节的运动。

选择Forces选项卡,可以添加需要的力,这里我们以添加一个扭矩为例。

一般来说,需要的扭矩都应该这样设置:Run-time Direction设置成Body Fixed(不然力不会跟着机体动),Construction选择Pick Feature(不然指定不了力的方向)。然后选择要施加力的点和方向即可。(就不能把更常用的选项放在默认选项上吗)

要修改这个力,也是在大纲中双击这个力,然后和添加运动时一样修改函数表达式即可。这里我们在仿真时不使用力,也就不进行修改了,直接把力删掉。

现在我们已经设置好了输入了,我建议你检查一下输入量是否都设置准确了,因为ADAMS会直接无视错误的函数表达式,而不会有任何报错。(到底是怎么设计的人机交互啊)

现在我们来设置输出量。我的这个模型要输出的是末端的位置,因此要首先在末端建立一个坐标点。选择Bodies选项卡,在Construction中选择建立一个坐标点。

同样要修改设置,一般应当选择Add to Part,Orientation选项我选择了X-Axis,可以根据需要调整。然后选择坐标点所在的零件、位置和方向。 这里有个技巧,在选择方向的时候,可以点击左边大纲中的cm(Center of Mass,质心)来高亮质心,然后就能指向质心啦。

在创建坐标点的时候,没有选项让我们自己命名名字,创建好后需要我们自己去找它叫什么,然后我们可以给他改名。(这里我发现他叫MARKER_10010,到底为什么连名字都这么奇怪啊)

接下来再创建变量来测量坐标点的位置。和建立输入量时一样,选择Elements选项卡,新建一个变量。但是作为输出量,我们要修改其函数表达式,选择Displaments->Distance along X,再选择Assist...。

这里我发现Guesses里并没有我要找的坐标点。我们可以选择Pick,在模型中点击要用的坐标点;或者选择Browse,在数据库里找到要用的坐标点。

一路OK点掉所有的对话框,现在我们完成了输出变量的创建,是时候把ADAMS里的模型导入Simulink了。选择Plugins选项卡,点击Controls,选择Plant Export。 

在弹出的对话框中,右键点击Input Signal(s)文本框,选择ADAMS_Variable->Guesses,选择需要的变量,用相同方法设置好输出变量。

在Target Software中选择MATLAB。

现在打开我们保存ADAMS文件的目录,可以看到有一个.m文件生成了。(还记得我最开始强调的选择好工作目录吗?如果没设置好,在这一步你就找不到.m文件了,我当时就是一直做到这一步才发现的)

在Simulink中进行联合仿真

打开MATLAB,运行这个.m文件,可以看到工作区里多了一大堆东西。然后我们在命令行输入adams_sys,ADAMS创建的Simulink框图就会出现了。右边这个adams_sub环节就是刚刚建立完成的机械系统,可以看到他有两个输入一个输出,正如我们在ADAMS中所设置的。

我们可以把这个框图复制到一张新建的框图里,然后我们要对simulink和adams之间的通信进行设置。双击adams_sub,然后双击ADAMS Plant(就是中间那个红的)。

弹出一个对话框,Animation mode里如果选择interactive,那么Simulink开始仿真的时候ADAMS就会播放机械系统的运动动画,可以在调试完成后选上;另外,也需要适当降低Communication interval,这样可以提高精确度;Simulation mode也可以根据需要更改。

然后你就可以绘制你的电气系统框图,进行机电联合仿真啦。

  • 18
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值