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

后来的补充:强烈建议没有强制要求的同志不要用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也可以根据需要更改。

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

使用Solidworks、ADAMS、Simulink进行机电联合仿真相关推荐

  1. recurdyn和matlab联合仿真,recurdyn与simulink机电联合仿真,求助

    recurdyn与simulink机电联合仿真,求助 关注:237  答案:2  手机版 解决时间 2021-01-28 21:35 已解决 2021-01-27 20:42 recurdyn与sim ...

  2. Simulink AMEsim TruckSim 联合仿真

    Simulink & AMEsim & TruckSim 联合仿真 AMESim实现精细化建模,Trucksim/CarSim 实现整车运行状态参数及典型仿真工况,Simulink 搭 ...

  3. simulink与modelsim联合仿真buck闭环设计

    simulink与modelsim联合仿真buck闭环设计 主电路用simulink搭建,控制电路完全有verilog语言实现(包括DPWM,PI补偿器) 适用于验证基于fpga的电力电子变换器控制, ...

  4. Simulink和Carsim联合仿真车辆状态估计 卡尔曼滤波的EKF,UKF,CKF等

    Simulink和Carsim联合仿真车辆状态估计 方法:卡尔曼滤波的EKF,UKF,CKF等 系统的输入量:前轮转角,纵向加速度,侧向加速度等(可以自由定义) 估计的状态量:横摆角速度,质心侧偏角, ...

  5. Adams/Car和Matlab联合仿真

    网上给的Adams/Car+Matlab/Simulink联合仿真教程很多,但是我自己调却仍然出各种问题,最后终于成功,感慨中间全是细节-- 参考了MSC软件的官方微博,和百度文库中的一篇. 本人是个 ...

  6. MATLAB/simulink与Amesim联合仿真之FMU

    Simulink生成FMU 第一步:首先搭建一个模型(MATLAB的工作路径应于此模型路径一致,根据所需建立接口数量,路径不可包含中文或者数值开头路径) 第二步:对模型进行设置(固定步长,求解器4) ...

  7. Simulink与VREP联合仿真

    软件: ppeliaSim Edu 4.0.0 (VREP的升级版本)具有集成开发环境的机器人模拟器CoppeliaSim基于分布式控制体系结构:每个对象/模型都可以通过嵌入式脚本,插件,ROS或Bl ...

  8. CarSim/TruckSim与Simulink多车联合仿真

    目录 CarSim多车仿真 TruckSim多车仿真 最近想在CarSim/TruckSim与Simulink中实现多车联合仿真,在百度和CSDN简单搜索了一下却没有找到相关内容.最后通过帮助文档得以 ...

  9. MATLAB—Simulink与Flowmaster联合仿真

    在按照系统的步骤做好准备工作之后,运行例子1的过程中,我出现了如下错误 网上关于联合仿真的内容实在是太少了,这个问题怎么解决我现在还不清楚,欢迎有兴趣的小伙伴一起来探讨.

最新文章

  1. WPF控件textBox多行输入设置
  2. Springboot搭建个人博客系列
  3. SonarQube结合IDEA实现代码检测
  4. 手游复古传奇服务器维护,复古传奇手游:服务器中那些极品装备,属性也是逆天!...
  5. 【Elasticsearch】es 提高 搜索速度
  6. 六个细节改变提升 Android L 用户体验
  7. 总说别人掉队的虎嗅 没想到自己先掉队了
  8. ajax嵌套ajax的坏处,promise解决ajax的多重嵌套
  9. 41. 使用内容发布网络(2)
  10. 三-(七) 视图(2020-4-3 )
  11. 道路千万条,转行第一条。材料不劝退,亲人两行泪。
  12. 什么是PLC的响应时间
  13. Vuforia Area及新功能讲解
  14. mysql查看占用内存或者CPU高的SQL
  15. HZOI20190903模拟36 字符,蛋糕,游戏
  16. selenium定位下拉菜单
  17. 重点技术-20181008-GSON 报错HibernateProxy. Forgot to register a type adapter?
  18. 【BBED】BBED模拟并修复ORA-08102错误
  19. java程序填空题输出汤姆猫_《Java语言程序设计(新)》地大模拟
  20. 安卓系统导航测试软件,安卓战GPS 凯立德导航软件实测解析

热门文章

  1. 网络知识:46张图带你了解网络传输、WIFI、以太网协议和网络寻址
  2. 交通诱导信息发布系统服务器,基于TTS技术的交通语音诱导信息发布系统设计
  3. MATLAB学习第二天(基础语法、变量、命令以及新建自己文件)
  4. STM32最小系统板介绍
  5. python生成一笔画_python求解微信小游戏——一笔画完
  6. java 音频转码_javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)...
  7. Proteus中MSP430与SHT11的IIC通信问题
  8. 【转】反洗钱系统总结
  9. PPT的正确制作顺序,让你少走弯路
  10. 显示器IPS屏和TN屏的优缺点及差异