百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

ADAMS与MATLAB的联合仿真实例教程

bigegpt 2024-10-12 05:52 6 浏览

本实例以MATLAB作为外部控制程序,以偏心连杆模型为例,讲解ADAMS与MATLAB的联合仿真过程。主要包括创建机械系统模型、模型参数设置、建立MATLAB控制模型以及结果后处理四个步骤。机械模型建立、模型参数设置这两步为了导出一个可在MATLAB软件Simulink中使用的模块,这个模块包含了所建立ADAMS模型的信息参数,并有输入输出接口。利用这个模块在MALTAB中建立控制系统,就可以控制ADAMS模型,在仿真结束后,可以直接在MATLAB中得到所需的数据结果进行后处理。

偏心连杆的形心与大地以铰链相连,连杆可以绕着铰链转动。连杆右端连接有一个小球,由于小球的存在,使整个机构的质心与形心不重合,若在连杆左端没有力矩作用,连杆将做顺时针运动。本例通过测量连杆运动的角速度、角度,对左端力矩的大小进行不断控制,最终使连杆相对平衡,即其角速度为零。

图7-22 偏心连杆模型

以下将详细介绍联合仿真的详细步骤。通过本实例的学习,能够详细了解ADAMS软件与MATLAB联合控制的使用方法。

7.2.1 创建机械系统模型

1、设置单位

启动ADAMS/View,选择新模型,在模型名输入MODEL_1。选择菜单栏【Settings】→【Units】命令,设置模型物理量单位,将单位设置成MMKS,长度和力的单位设置成毫米和牛顿,如图7-23所示:

图7-23设置模型物理量单位

2、创建连杆

单击几何工具包中的连杆按钮,将连杆参数设置为Length=400,Width=20,Depth=20,然后在图形区水平拖动鼠标,创建一个连杆,如图7-24。

图7-24创建连杆

3、创建旋转副

单击运动副工具包中的旋转副按钮,将旋转副的参数设置为1 Location和Normal to gird,单击连杆质心处的Marker点,将连杆和大地关联起来,如图7-25所示。

图7-25创建旋转副

4、创建球体

单击几何工具包中的球体按钮,将球体的选项设置为Add to Part,半径设置为20,然后在图形区单击连杆,再单击连杆右侧处的Marker点,将球体加入到连杆上,如图7-26所示。此时连杆的质心产生了移动。

图7-26创建球体

5、创建单分量力矩

单击载荷工具包中的单分量力矩按钮,将单分量力矩的选项设置为Space Fixed和Normal to Grid,将Characteristic设置为Constant,勾选Torque并输入0,然后在图形区单击连杆,再单击连杆左侧的Marker点,在连杆上创建一个单分量力矩,如图7-27所示。

图7-27创建单分量力矩

至此,偏心连杆模型已经建好。

7.2.2 模型参数设置

1、创建输入状态变量

单击菜单【Build】→【System Elements】→【State Variable】→【New】,弹出创建状态变量对话框。如图7-28,将Name输入框改成. MODEL_1.Torque( MODEL_1为文件名,Torque为变量名)。单击OK按钮后创建状态变量Torque作为输入变量。

图7-28创建输入变量Torque

3、将状态变量与模型关联

在图形区双击单分量力矩的图标,打开编辑对话框,如图7-28所示,在Function输入框中输入VARVAL(.MODEL_1.Torque) ,这里VARVAL()是一个ADAMS函数,它返回变量.MODEL_1.Torque的值。通过函数把状态变量Torque与力矩关联起来,力矩取值将来自于状态变量Torque。

图7-28 编辑单分量力矩对话框

4、指定状态变量Torque为输入变量

单击菜单【Build】→【Controls Toolkit】→【Plant Input】后,弹出定义控制输入对话框,如图7-29所示。将Plant Input Name 输入框改成.MODEL_1.PINPUT_Torque, 在Variable Name输入框中,用鼠标右键快捷菜单输入状态变量.MODEL_1.Torque,单击OK按钮。

图7-29 定义控制输入对话框

5、创建输出状态变量

单击菜单【Build】→【System Elements】→【State Variable】→【New】,弹出创建状态变量对话框。如图7-30所示,将Name输入框修改成.MODEL_1. Angle,在F(time,…)=输入框中输入表达式AZ(MARKER_3,MARKER_4)*180/PI,单击Apply按钮创建状态变量Angle作为第一个输出变量,然后将Name修改成.MODEL_1. Velocity,在F(time,…)=输入框中输入表达式WZ(MARKER_3,MARKER_4)*180/PI,如图7-31所示。其中AZ()函数返回绕Z轴旋转的转角,这里代表连杆相对于转轴的转角,WZ()函数返回绕Z轴旋转的角速度,这里代表连杆的角速度。

图7-30 创建输出变量Angle 图7-31 创建输出变量Velocity

6、指定状态变量angle、Velocity为输出变量

单击菜单【Build】→【Controls Tookit】→【Plant Output】后,弹出创建控制输出对话框,如图7-32所示。将Plant Output Name输入框修改成. MODEL_1.PINPUT_output。在Variable Name 输入框中,用鼠标右键快捷菜单输入状态变量Angel和Velocity,单击OK按钮。

图7-32创建控制输出对话框

7、导出控制参数

如果还没有加载ADAMS/Controls模块,单击菜单【Tools】→【Plugin Manager】,在弹出的插件管理对话框中选择ADAMS/Controls模块,并单击OK按钮,之后出现一个新的菜单Controls。单击菜单【Controls】→【Plant Export】,弹出导出控制参数对话框,如图7-33所示。在File Prefix输入框中输入controlspid,在Plant Input输入框中用鼠标右键快捷菜单输入PINPUT_Torque,在Plant Output输入框中用鼠标右键快捷菜单输入.PINPUT_output,将Control package选择为MATLAB,Type选择为non_linear,Initial Static Analysis选择NO,ADAMS/Solver Choice选择为Fortran。单击OK按钮后,在ADAMS的工作目录下将生成controlspid.m、 controlspid.cmd、controlspid.adm这3个文件。

图7-33 导出控制参数对话框

7.2.3 建立MATLAB控制模型

1、导出ADAMS模型在MATLAB里的模块

启动MATLAB ,先将MATLAB的工作目录指向ADAMS的工作目录,方法是单击工作栏中Current Direction后的按钮,弹出选择路径对话框。在MATLAB命令窗口的>>提示符下,输入controlspid,也就是controlspid.m的文件名,然后在>>提示符下输入命令ADAMS_sys ,该命令是ADAMS与MATLAB的接口命令。在输入ADAMS_sys命令后,弹出一个新的窗口,该窗口是MATLAB/Simulink的选择窗口,其中S-Function方框表示ADAMS模型的非线性模型,即进行动力学计算的模型,State-Space表示ADAMS模型的线性化模型,在ADAMS_sub包含有非线性方程,也包含许多有用的变量。

2、建立控制方案

在MATLAB/Simulink选择窗口中,单击菜单【File】→【New】→【Model】后,弹出一个新的窗口,单击工具栏中的保存按钮,将新窗口存盘为control_model.mdl(不能与.m文件同名),将ADAMS_sub方框拖拽到control_model.mdl窗口中,并参考图7-34完成控制系统的搭建,也可采用其他的控制方案。

图7-34 连接后的控制方案

3、设置MATLAB与ADAMS之间的数据交换参数

在control_model.mdl窗口中双击ADAMS_sub方框,在弹出的新的窗口中双击MSCSDoftware,弹出数据交换参数设置对话框,将Interprocess设置为PIPE(DDE) ,如果不是在一台计算机上,选择TCP/IP,将Communication Interval输入框中输入0.005,表示每隔0.005s在MATLAB和ADAMS之间进行一次数据交换,若仿真过慢,可以适当改大该参数,将Simulation Mode设置为continuous,Animation mode设置成interactive,表示交互式计算,在计算过程中会自动启动ADAMS/View,以便观察仿真动画,如果设置成batch,则用批处理的形式,看不到仿真动画,其他使用默认设置即可。

4仿真设置和仿真计算。

单击窗口中菜单【Simulation】→【Simulation Parameters】,弹出仿真设置对话框,在Solver页中将Start time设置为0, 将Stop time设置为20, 将Type设置为Variable-step,其他使用默认选项,单击OK按钮。最后单击开始按钮,开始仿真。(若出现错误,重启MATLAB即可。每次启动MATLAB都需要选择路径到包含controlspid.m、 controlspid.cmd、controlspid.adm的文件夹,并输入controlspid(.m文件名)和ADAMS_sys(ADAMS与MATLAB的接口命令))。

7.2.4 结果后处理

在MATLAB示波器中,可以得到角度和力矩的曲线。得到的Velocity变量曲线和Torque变量曲线分别如图7-35和图7-36所示。此模型初始受重力作用,产生转动,通过控制力矩的大小,最终角速度为零,模型达到平衡。

图7-35 变量Velocity随时间的变化

图7-36 变量Torque随时间的变化

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...