一个简单的Adams—MATLAB联合仿真实例
- 格式:docx
- 大小:389.29 KB
- 文档页数:8
Matlab与adams联合仿真实例本实例以matlab为外部控制程序,使用PID算法控制偏心杆的摆动,使偏心杆平衡到指定位置。
1.在adams/view中建立偏心杆模型图1 偏心杆模型1)新建模型如图所示,将Units设置为MMKS。
设置自己的Working Directory,这里设置为C:\adams\exercise。
点击OK按钮。
图2 新建模型对话框2)创建连杆设置连杆参数为Length=400,Width=20,Depth=20,创建如图所示的连杆。
图3 创建连杆3)创建转动幅在连杆质心MARKER点处创建转动幅,旋转副的参数设置为1Location和Normal To grid将连杆与大地相连。
图4 创建转动幅4)创建球体球体选项设置为Add to part,半径设置为20,单击连杆右侧Marker点,将球体添加到连杆上图5 创建球体5)创建单分量力矩单击Forces>Create a Torque(Single Component)Applied Forces,设置为Space Fixed,Normal to Grid,将Characteristic设置为Constant,勾选Torque并输入0,单击连杆,再点击连杆左侧的Marker点,在连杆上创建一个单分量力矩。
图6 创建单分量力矩2.模型参数设置1)创建状态变量图7 新建状态变量点击图上所示得按钮,弹出创建状态变量对话框,创建输入状态变量Torque,将Name 修改为.MODEL_1.Torque。
图8 新建输入状态变量Torque再分别创建状态变量Angel和Velocity(后面所设计控制系统为角度PID控制,反馈变量为Angel,Velocity为Angel对时间求导,不需要变量Velocity,这里设置Velocity是为了展示多个变量的创建)。
设置Angel的函数AZ(MARKER_3,MARKER_4)*180/PI,Velocity 的函数为WZ(MARKER_3,MARKER_4)*180/PI。
1.建立一个简单的模型MODEL_Co_Simulation,创建一个构件PART_2,创建一个转动约束JOINT_1,给转动约束一个驱动MOTION_12.创建两个变量VARIABLE_PART2_CMx和变量VARIABLE_motion1创建变量如下:命名好名字点击OK则生成两个变量如图:3.然后在变量variable_part1中填写函数DX(PART_2.cm)这个函数用来测量构件PART_2质心点cm的X坐标;变量variable_motion1不做任何改变;在MOTION_1 中填入VARVAL(VARIABLE_motion1),variable_motion1将作为ADAMS的输入变量,MATLAB传递给ADAMS的数据,通过变量variable_motion1传递给MOTION_1。
4.在adams中点击Plugins——Controls——Plant Export,进行adams控制模块设置窗口点击Plant Export后出现如下界面然后对图中标记的地方进行修改同理操作右侧空白选中VARIABLE_Part1_CMx,然后如下图注意修改Target Software为MATLAB,显示这样的界面后点击OK,此时在模型的工程目录下会生成如下几个文件这样ADAMS中的操作就已经完成打开MATLAB,在MATLAB中输入工程目录下生成的文件的文件名如Control_Plant_3,回车MATLAB如下然后输入adams_sys回车,打开如下的一个窗口新建一个Simulink空白文档把ADAMS_sub拖进新的文档双节adams_sub如图双击MSC_Software如图设置2中的0.005为ADAMS仿真步长,1中的batch可以自己试着设置一下设置Simulink的仿真步长,Simulink的仿真步长一定要和ADAMS中的仿真步长一致点击绿色按钮开始仿真,adams_sub就是ADAMS在Simulink中的模型,输入motion为正弦信号,输出为part2质心的X坐标值。
ADAMS与Matlab联合仿真例子7.1ADAMS/Controls使用实例本实例以MA TLAB作为外部控制程序,以偏心连杆模型为例,讲解ADAMS与MA TLAB的联合仿真过程。
主要包括创建机械系统模型、模型参数设置、建立MA TLAB控制模型以及结果后处理四个步骤。
机械模型建立、模型参数设置这两步为了导出一个可在MA TLAB 软件Simulink 中使用的模块,这个模块包含了所建立ADAMS模型的信息参数,并有输入输出接口。
利用这个模块在MALTAB中建立控制系统,就可以控制ADAMS模型,在仿真结束后,可以直接在MA TLAB 中得到所需的数据结果进行后处理。
偏心连杆的形心与大地以铰链相连,连杆可以绕着铰链转动。
连杆右端连接有一个小球,由于小球的存在,使整个机构的质心与形心不重合,若在连杆左端没有力矩作用,连杆将做顺时针运动。
本例通过测量连杆运动的角速度、角度,对左端力矩的大小进行不断控制,最终使连杆相对平衡,即其角速度为零。
图7-22偏心连杆模型以下将详细介绍联合仿真的详细步骤。
通过本实例的学习,能够详细了解ADAMS软件与MA TLAB联合控制的使用方法。
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.1ADAMS/Controls使用实例本实例以MATLAB作为外部控制程序,以偏心连杆模型为例,讲解ADAMS与MA TLAB的联合仿真过程。
主要包括创建机械系统模型、模型参数设置、建立MA TLAB控制模型以及结果后处理四个步骤。
机械模型建立、模型参数设置这两步为了导出一个可在MA TLAB软件Simulink 中使用的模块,这个模块包含了所建立ADAMS模型的信息参数,并有输入输出接口。
利用这个模块在MALTAB中建立控制系统,就可以控制ADAMS模型,在仿真结束后,可以直接在MATLAB 中得到所需的数据结果进行后处理。
偏心连杆的形心与大地以铰链相连,连杆可以绕着铰链转动。
连杆右端连接有一个小球,由于小球的存在,使整个机构的质心与形心不重合,若在连杆左端没有力矩作用,连杆将做顺时针运动。
本例通过测量连杆运动的角速度、角度,对左端力矩的大小进行不断控制,最终使连杆相对平衡,即其角速度为零。
图7-22偏心连杆模型以下将详细介绍联合仿真的详细步骤。
通过本实例的学习,能够详细了解ADAMS软件与MA TLAB联合控制的使用方法。
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.1机械夹紧机构建模使用实例机械系统建模实例将创建一种机械夹紧机构模型,是阿波罗登月计划中用于夹紧登月舱和宇宙飞船的十二个夹紧机构之一。
夹紧机构包括:摇臂(Pivot)、手柄(Handle)、锁钩(Hook)、连杆(Slider)和固定块(ground Block)等物体。
夹紧机构的工作原理是:如图7-1所示,在夹紧机构手柄(Handle)处施加一个作用力,驱动机构运动,使其锁钩(Hook)处产生十倍于作用力的夹紧力,用于夹紧登月舱和宇宙飞船。
夹紧机构的设计要求是:至少产生800N的夹紧力;施加在手柄上的力应不大于80N;释放手柄的力应最小;在振动环境中夹紧机构应安全可靠。
手柄Handle锁钩Hook图7-1 夹紧机构三维模型图以下将从创建几何构件、添加约束、添加载荷及结果后处理等几个方面详细介绍机械夹紧机构模型的建立。
通过本实例的学习,能够详细了解ADAMS软件设计流程及使用方法。
7.1.1创建几何构件1、创建新模型本实例将使用ADAMS/View的零件库、约束库和力库创建夹紧机构模型。
首先打开ADAMS/View,选择“Create a new model”,模型名称(Model Name):Latch,点击OK,创建新模型完毕。
其它设置如图7-2所示:图7-2 创建新模型2、设置工作环境选择菜单栏【Settings】→【Units】命令,设置模型物理量单位,如图7-3所示:图7-3设置模型物理量单位选择菜单栏【Settings】→【Working Grid】命令,设置工作网格,如图7-4所示:图7-4设置工作网格3、创建设计点设计点是几何构件形状设计和位置定位的参考点。
本实例将通过设计点列表编辑器创建几何构件模型所需要的全部设计点。
选择并点击几何模型库(Geometric Modeling)中的点(Point),下拉菜单选择(Add to Ground)、(Don’t Attach),并单击Point Table列表编辑器,创建并生成Point_1、Point_2等六个设计点,如图7-5、图7-6所示:图7-5设计点列表编辑器图7-6创建设计点4、创建摇臂(Pivot)选择并点击几何模型库(Geometric Modeling)中的平板(Plate),设置平板厚度值(Thickness)为1,圆角半径(Radius)为1,用鼠标左键选择设计点:Point_1、Point_2、Point_3,按鼠标右键完成摇臂(Pivot)的创建,将其重新命名(Rename)为Pivot,如图7-7所示:图7-7创建摇臂5、创建手柄(Handle)选择并点击几何模型库(Geometric Modeling)中的连杆(Link),用鼠标左键选择设计点:Point_3和Point_4,完成手柄(Handle)的创建,将其重新命名(Rename)为Handle,如图7-8所示:图7-8创建手柄6、创建锁钩(Hook)选择并点击几何模型库(Geometric Modeling)中的拉伸体(Extrusion),选择“New Part”和“Clsoed”,拉伸体长度(Lengh)设为1,用鼠标左键选择表7-1所示的11个位置,按鼠标右键完成锁钩的创建,将其重新命名(Rename)为Hook,如图7-9示:表7-1锁钩节点坐标图7-9创建锁钩7、创建连杆(Slider)选择并点击几何模型库(Geometric Modeling)中的连杆(Link),用鼠标左键选择设计点:Point_5和Point_6,完成连杆(Slider)的创建,将其重新命名(Rename)为Slider,如图7-10所示:图7-10创建连杆8、创建固定块(Ground Block)选择并点击几何模型库(Geometric Modeling)中的长方体(Box),选择“On Ground”,使其与大地(Ground)固结在一起,按下图创建固定体用鼠标左键选择设计点:Point_5和Point_6,完成连杆(Slider)的创建,将其重新命名(Rename)为Slider,如图7-11所示:图7-11创建固定块7.1.2添加约束1、添加旋转约束副选择并点击约束库(Joints)中的旋转副(Revolute Joints);选择“1 Location”(一个位置),“Normal To Grid”(垂直于工作网络),用鼠标左键选择Point_1,创建摇臂和大地的约束副;选择“2 Bodies - 1 Location”(两个物体一个位置),“Normal To Grid”(垂直于工作网络),选择摇臂和锁钩两个物体,左键选择Point_2,创建摇臂和锁钩的约束副;同理选择摇臂和手柄,位置为Point_3,手柄和连杆,位置为Point_5,创建摇臂和手柄、手柄和连杆的旋转约束副。
以电动助力转向的联合仿真实现为例,看看怎么联合起来的4.3 ADAMS-MATLAB联合仿真实现ADAMS提供了两种实现机电一体化联合仿真的方法。
一种方法是利用ADAMS 提供的控制工具箱(Control Toolkit)来实现控制等电气系统与机械系统的联合仿真。
控制工具箱提供简单的线性控制模块和滤波模块,可以方便地实现前置滤波、PID控制和其他连续时间单元的模拟仿真。
对于较为简单的控制问题,可以直接在样机模型中添加控制模块,搭建控制系统,完成机电一体化联合仿真。
另一种方法是使用ADAMS/Control模块来实现,利用ADAMS/Control模块可以实现将在ADAMS中建立的样机机械模型与MATLAB、EASY5、MATRIX等软件中建立的电气模型联合起来,实现机电一体化联合仿真。
由于在MATLAB/Simulink中进行电气控制系统建模非常方便,很适合建立比较复杂的控制系统模型,所以本文使用ADAMS/Control模块来将在ADAMS/Car中建立的整车模型与在MATLAB/Simulink中建立的电动助力转向系统模型联合起来,完成整个机电一体化联合仿真。
仿真的过程中,会在ADAMS/Car和MATLAB/Simulink中形成回路[31],如图4-10所示:图 4-10 ADAMS/Car和MATLAB/Simulink联合仿真回路图中,Control Application即在MATLAB/Simulink中建立的电动助力转向系统。
ADAMS/Car中的整车模型输出车速及方向盘扭矩,作为MATLAB/Simulink中建立的电动助力转向系统的输入,电动助力转向系统输出齿条助力,作为整车模型的输入,在仿真的过程中的每个采样时刻信号在两个软件之间进行交换一次。
本文实现联合仿真的过程如下[32][33][34]:1. 要定义好整车模型的输入输出:(1)建立输入,在建立转向系统模板时提到要在Template Builder模式下建立状态变量rack_ assist_ force,使用VARVAL函数,使VFORCE取状态变量rack_ assist_ force的值,即VFORCE的函数值设为VARVAL(._rack_pinion_steering.rack_assist_force),再建立一个名为“control”的Plant_ Input,使用状态变量rack_ assist_ force。
Adams与Matlab联合仿真例子作者寄语:这个文件是基于李增刚《adams入门详解与实例》一书中,Adams与Matlab联合仿真的例子,以及一个名为《2013版ADAMS与Matlab联合仿真(绝对正确版)》的pdf文件上修改来,为了方便起见,用了一些复制、粘贴,所以中间的一些过程会和这两个文件有所重合,不要惊讶,也不要吐槽。
做这个例子的目的,是站在一个普通学习者的角度,介绍联合仿真,和众多学习adams的人共勉。
我的结论是:以上两个例子中的结果并不矛盾,都是正确的,基本上看了我的例子后,他们的也就懂了。
李增刚第236页开始。
《2013版ADAMS与Matlab联合仿真(绝对正确版)》1、知识储备以上两个例子都用到了PID控制(比例(proportion)、积分(integral)、微分(derivative)控制器)比例就是对误差乘以一个系数积分就是对误差积分然后再乘以一个系数微分是对误差求导注意我的模型,上面是角速度Angle velocity,下面是角度angle,这里的积分是对angle进行积分,导致上面两个例子的不同也就在这,这个地方尤其要注意,不要上下搞反了。
表示的是对angle乘以一个系数,这里选了1,为比例调节,即P调节。
就是对angle的积分,(就是累加的意思),即I调节,然后乘以了系数1。
因为输出的是角速度,角速度就是angle的微分的,所以不用做什么操作,后面乘以了一个系数1。
然后这三个相加起来作为反馈调节,所以用了这个模块,这个表示累减。
将角度值送到Matlab的workspace工作空间,这个表示把时间送到workspace中去,因为角度这里是角度与时间的函数。
注意:这些模块不是必要模块,我只是为了做对比而加上去的,去掉不会对仿真产生影响,但是如果要加的话这两个模块缺一不可。
我的软件是adams2012与Matlab 7.12.0(R2011a)。
现在进入正题1、设置单位启动ADAMS/View,选择新模型,在模型名输入link。
Matlab与adams联合仿真实例本实例以matlab为外部控制程序,使用PID算法控制偏心杆的摆动,使偏心杆平衡到指定位置。
1.在adams/view中建立偏心杆模型图1 偏心杆模型1)新建模型如图所示,将Units设置为MMKS。
设置自己的Working Directory,这里设置为C:\adams\exercise。
点击OK按钮。
图2 新建模型对话框2)创建连杆设置连杆参数为Length=400,Width=20,Depth=20,创建如图所示的连杆。
图3 创建连杆3)创建转动幅在连杆质心MARKER点处创建转动幅,旋转副的参数设置为1Location和Normal To grid将连杆与大地相连。
图4 创建转动幅4)创建球体球体选项设置为Add to part,半径设置为20,单击连杆右侧Marker点,将球体添加到连杆上图5 创建球体5)创建单分量力矩单击Forces>Create a Torque(Single Component)Applied Forces,设置为Space Fixed,Normal to Grid,将Characteristic设置为Constant,勾选Torque并输入0,单击连杆,再点击连杆左侧的Marker点,在连杆上创建一个单分量力矩。
图6 创建单分量力矩2.模型参数设置1)创建状态变量图7 新建状态变量点击图上所示得按钮,弹出创建状态变量对话框,创建输入状态变量Torque,将Name 修改为.MODEL_1.Torque。
图8 新建输入状态变量Torque再分别创建状态变量Angel和Velocity(后面所设计控制系统为角度PID控制,反馈变量为Angel,Velocity为Angel对时间求导,不需要变量Velocity,这里设置Velocity是为了展示多个变量的创建)。
设置Angel的函数AZ(MARKER_3,MARKER_4)*180/PI,Velocity的函数为WZ(MARKER_3,MARKER_4)*180/PI。
基于ADAMS与MATLAB的倒立摆联合仿真实验一、实验目的在传统的机电一体化研究设计过程中,机械工程师和控制工程师虽然在共同设计开发一个系统,但是他们各自都需要建立自己的模型,然后分别采用不同的分析软件,对机械系统和控制系统进行独立的设计、调试和试验,最后进行机械系统和控制系统各自的物理样机联合调试,如果发现问题又要回到各自的模型中分别修改,然后再联合调试,显然这种方式费时费力。
基于多领域的建模与联合仿真技术很好的解决了这个问题,为机械和控制系统进行联合分析提供了一种全新的设计方法。
机械工程师和控制工程师就可以享有同一个样机模型,进行设计、调试和试验,可以利用虚拟样机对机械系统和控制系统进行反复联合调试,直到获得满意的设计效果,然后进行物理样机的建造和调试。
ADAMS与MATLAB是机械系统仿真和控制系统仿真领域应用较为广泛的软件,其中ADAMS为用户提供了强大的建模、仿真环境,使用户能够对各种机械系统进行建模、仿真和分析,具有十分强大的运动学和动力学分析功能;而MATLAB具有强大的计算功能、极高的编程效率及模块化的建模方式,因此,把ADAMS与MATLAB联合起来仿真,可以充分将两者的优势相结合,将机械系统仿真分析同控制系统设计有机结合起来,实现机电一体化的联合分析。
本实验以倒立摆为例,进行ADAMS与MATLAB的联合仿真,对倒立摆的运动性能和运动规律进行分析。
二、实验方法软件环境:MD ADAMS R3,MATLAB R2009b建立倒立摆的动力学模型启动ADAMS/View模块弹出如图1所示对话框,建立小车及摆杆模型。
首先选择“Create a new model”选项,创建一个新的模型,将该文件保存在相应的文件夹下,本实验将结果保存在E:\daolibai_adams文件夹下,将文件名取为“daolibai_adams”,其余选项保持默认。
注意,在ADAMS中路径名和文件名最好采用英文字符,否则有可能在运行的过程中出现意想不到的错误。
MATLAB和ADAMS联合仿真实现一种位置控制系统0.预先操作01 在D盘根目录下新建文件夹Model,路径中无空格、无中文字符,模型统一存放处。
1.ADAMS中建模过程1.1启动ADMAS双击桌面图标:或从“开始”中选择启动:1.2进入ADMAS界面。
1.3设置工作目录。
选择菜单栏File\Select Directory,弹出浏览文件夹对话框,选择D:\Model文件夹。
1.4弹出主工具栏。
选择菜单栏\View\Toolbox andToolbars,勾选Tool Settings中Main Toolbar,弹出工具栏。
1.5ADAMS中按F4调出位置/坐标显示。
1.6设置重力加速度。
选择菜单栏\Setting\Gravity,设置重力加速度,此时弹出Error对话框。
选择“Create Model”,并起名为“Qiu1”,点击“OK”再次选择菜单栏\Setting\Gravity,设置重力加速度:勾选Gravity前方框,点击-Y*,如下图示,点击“OK”。
1.7设置单位。
选择菜单栏\Setting\Units,设置单位,此时弹出“UnitsSettings”对话框,点击“MKS”按钮,各单位符号如右图示,点击“OK”。
1.8建立半径10cm的球,放置在点(0,0,0)上。
“右键”点击主工具栏第一排第二个符号-刚体:连杆,弹出扩展工具符号,选择第二排第一个符号-刚体:球,勾选Radius前方框,则此球半径为10.0cm。
1.9建立球与大地之间移动副。
“右键”点击主工具栏第二排第二个符号-连接:旋转副,弹出扩展工具符号,选择第二排第一个符号-连接:移动副。
该移动副属性为2个构件,1个作用点。
鼠标动作顺序为:1.左键点击“ground”一次,选取大地为第一个构件;2.左键点击球体一次,选取球为第二个构件;3.右键在球心位置点击一次,弹出Select对话框,左键双击“PART_2.cm”;4.右键在球心位置点击一次,弹出Select对话框,左键双击“PART_2.cm.Y”。
基于ADAMS与MATLAB的倒立摆联合仿真实验5篇第一篇:基于ADAMS与MATLAB的倒立摆联合仿真实验基于ADAMS与MATLAB的倒立摆联合仿真实验一、实验目的在传统的机电一体化研究设计过程中,机械工程师和控制工程师虽然在共同设计开发一个系统,但是他们各自都需要建立自己的模型,然后分别采用不同的分析软件,对机械系统和控制系统进行独立的设计、调试和试验,最后进行机械系统和控制系统各自的物理样机联合调试,如果发现问题又要回到各自的模型中分别修改,然后再联合调试,显然这种方式费时费力。
基于多领域的建模与联合仿真技术很好的解决了这个问题,为机械和控制系统进行联合分析提供了一种全新的设计方法。
机械工程师和控制工程师就可以享有同一个样机模型,进行设计、调试和试验,可以利用虚拟样机对机械系统和控制系统进行反复联合调试,直到获得满意的设计效果,然后进行物理样机的建造和调试。
ADAMS与MATLAB是机械系统仿真和控制系统仿真领域应用较为广泛的软件,其中ADAMS为用户提供了强大的建模、仿真环境,使用户能够对各种机械系统进行建模、仿真和分析,具有十分强大的运动学和动力学分析功能;而MATLAB具有强大的计算功能、极高的编程效率及模块化的建模方式,因此,把ADAMS与MATLAB联合起来仿真,可以充分将两者的优势相结合,将机械系统仿真分析同控制系统设计有机结合起来,实现机电一体化的联合分析。
本实验以倒立摆为例,进行ADAMS与MATLAB的联合仿真,对倒立摆的运动性能和运动规律进行分析。
二、实验方法软件环境:MD ADAMS R3,MATLAB R2009b 2.1 建立倒立摆的动力学模型启动ADAMS/View模块弹出如图1所示对话框,建立小车及摆杆模型。
首先选择“Create a new model”选项,创建一个新的模型,将该文件保存在相应的文件夹下,本实验将结果保存在E:daolibai_adams文件夹下,将文件名取为“daolibai_adams”,其余选项保持默认。
Adams/car与Matlab的联合仿真一、状态变量的建立1、在建模器界面通过菜单栏Build→System Elements→Sate Varible→New建立输入状态变量和输出状态变量。
其中输入变量F(time)定义框中设为零,其值从matlab中输入。
输出变量通过定义框右侧方块定义,如下图所示。
2、点击定义框右侧方块后出现Function builder对话框,如下图所示。
可通过下拉菜单选择位移、速度、加速度等根据需要定义输出变量。
3、在打开的模板中根据需要建立合适的作动器,通过Function将建立的作动器与输入状态变量建立联系。
二、Adams整车模型的输出1、将建立状态变量的模版生成子系统,再使用生成的子系统组成成整车装配。
2、在标准界面通过菜单栏Tools→Plugin Manager选中control模块,点击OK,如下图所示,将其加入到标准界面。
3、通过菜单栏Controls→Plant Export进入模型输出对话框。
假设输出模型命名为car_1。
在Input Signal(s)框中右键单击,通过Browse选择输入变量。
在Output Signal(s)框中右键单击,通过Browse选择输出变量(所选择的状态变量在前面步骤中已建好)。
Target Software选择MATLAB,点击OK。
生成的m文件存放到Adams的工作目录当中。
三、仿真激励的输出1、标准界面,通过菜单栏Simulate或Ride选择仿真项目。
以单移线为例,进入Single Lane Change对话框根据需求进行设置,其中Mode of Simulation选择files_only。
假设仿真取名为lane_change。
生成的仿真文件存放在Adams的工作目录当中,生成的文件前缀为lane_change_sin。
四、联合仿真的实现1、打开Matlab设置为与Adams相同的工作目录。
用Matlab打开生成的car_1.m,将ADAMS_prefix = 'car_1_sin'修改为ADAMS_prefix = 'lane_change_sin',将ADAMS_init = 'file/command=car _1_sin_controls.acf'修改为ADAMS_init = 'file/command=lane_change_sin_controls.acf',保存。
机械运动系统设计与实践报告学院:工程学院专业:机械设计及理论姓名:学号:指导教师:2012 年 3 月环形倒立摆Adams与Matlab联合仿真分析一、实践目的1.熟悉和理解环形倒立摆的组成部件及运动原理。
2.通过ADAMS软件对环形倒立摆进行建模,熟练该款软件。
3.通过运用ADAMS导出模块与matlab进行对接处理,熟悉matlab软件的PID运行控制以及掌握simulink的相关设置。
二、实验原理环形倒立摆是通过电机驱动,带动连杆,同时连杆来带动摆杆运动。
中间需要测量的物理参数主要有:连杆的角度、连杆的角速度、摆杆的角度、摆杆的角速度。
通过两个光电编码器进行反馈。
从反馈过程中来调节电机的转速及转向,进而达到摆杆的倒立并保持相对平衡。
下图1即为实验室固高环形倒立摆系统组成框架:图1 环形倒立摆组成框架实验室固高模型使用程序如下:(1)老师给的程序:% this is a new simulation program for new arm-type inverted pendulum % by lgr input on the state of 0 of arm and that of 0 of pendulum% ! CAUTION ,changed base of direction of arm% Suc.clear allclose all%---------------------------------Ma=0.21;Mp=0.062;la=0.133;lp=0.068;La=0.25;Lp=0.19;Ja=5E-3;Jp=5.65E-4;Ca=5.52E-3;Cp=1.69E-4;kt=0.0419;g=9.8;%------------------continuous state equation--------------------ce=[ 1 0 0 0 ;0 1 0 0 ;0 0 Mp*La^2+Ja Mp*La*lp ;0 0 Mp*La*lp Jp ];ca=[ 0 0 1 0 ;0 0 0 1 ;-(Mp*la+Mp*La)*g 0 -(Ca+Cp) Cp ;0 Mp*g*lp Cp -Cp ];cb=[0;0;kt;0];CA=inv(ce)*ca;CB=inv(ce)*cb;C=[1 0 0 0 ; 0 1 0 0];%---------------------------------------------------------------Q=diag([100,10,1,1]);R=1;[f,s,e]=lqr(CA,CB,Q,R);%---------------------------------------------------------------dt=0.005;%sampling timeth_a=0.1 %accdd('Initial angle of arm ',0.1);% ! caution,clock di%rectionth_p=pi;% =accdd('Initial angle of pendulum ',pi);% ! caution,clock dir %ection +d_th_a =0.0;%d_th_p =0.0;%initial values of statesdd_th_a =0.0;%dd_th_p =0.0;%u =0.0;z =0.0;energy =0.0;i =1;%-------------------------- input parameter---------------------alpha =30.0 ; %alpha =accdd('Design Parameter alpha',30.0);energy_d =1.5*Mp*g*lp; %accdd('Desired Energy',1.5*Mp*g*lp);zeta =1 % accdd('Damping Factor',1.0);wc =1 % accdd('Cut Off Frequency',1.0);flag =0;%-------------------------- starting loop ----------------------for i =1:6.0/dtth_a_0 =th_a;%th_p_0 =th_p;%d_th_a_0 =d_th_a;%d_th_p_0 =d_th_p;%dd_th_a_1 =dd_th_a;%dd_th_p_0 =dd_th_p;%if cos (th_p)>=cos(0.2);flag=1;endif flag==0 %----------------------- swimping up ------------------dd_th_a = z-(2*zeta*wc*d_th_a+wc^2*th_a);ydd_temp =-Mp*La*lp*cos(th_a-th_p)*dd_th_a+Mp*La*lp*d_th_a^2*sin(th_a-th_p);dd_th_p =(ydd_temp+Mp*g*lp*sin(th_p)+Cp*d_th_a-Cp*d_th_p)/Jp;d_th_a =d_th_a_0+dd_th_a*dt;d_th_p =d_th_p_0+dd_th_p*dt;th_a =th_a_0+d_th_a_0*dt+dd_th_a*dt^2*0.5;th_p =th_p_0+d_th_p_0*dt+dd_th_p*dt^2*0.5;elseeq_1_1=-Mp*La*lp*d_th_p^2*sin(th_a-th_p)-(Mp*la+Mp*La)*g*sin(th_a);eq_1_2 =-(Ca+Cp)*d_th_a+Cp*d_th_p+kt*u;eq_1_left =eq_1_1+eq_1_2;eq_2_1 =Mp*La*lp*d_th_a^2*sin(th_a-th_p)+Mp*lp*g*sin(th_p);eq_2_2 =Cp*d_th_a-Cp*d_th_p;eq_2_left =eq_2_1+eq_2_2;%-------------------------- calculation of inverse matrix ------------- M11 =Mp*La^2+Ja;M12 =Mp*La*lp*cos(th_a-th_p);M21=Mp*La*lp*cos(th_a-th_p);M22=Jp;M=[M11 M12;M21 M22];MI=inv(M);%-------------------calculation of parameters------------------dd_th_a=MI(1,1)*eq_1_left+MI(1,2)*eq_2_left;dd_th_p=MI(2,1)*eq_1_left+MI(2,2)*eq_2_left;d_th_a= d_th_a_0+ dd_th_a*dt;d_th_p= d_th_p_0+ dd_th_p*dt;th_a= th_a_0+ d_th_a_0*dt+ dd_th_a*dt^2*0.5;th_p= th_p_0+ d_th_p_0*dt+ dd_th_p*dt^2*0.5;energy=0.5*Jp*d_th_p^2+Mp*g*lp*cos(th_p);%energy of pendulumpotential=Mp*g* lp*cos(th_p);kinetic=0.5*Jp*d_th_p^2;%------------------------------------------------------------------------if flag==0error=energy-energy_d;u1=(Mp*La^2+Ja)*dd_th_a+Mp*La*lp*cos(th_a-th_p)*dd_th_p+(Ca+Cp)*d_th_a;u2=Mp*La*lp*d_th_p^2*sin(th_a-th_p)+(Ma*la+Mp*La)*g*sin(th_a)-Cp*d_th _p;u=(u1+u2)/kt;z=alpha*d_th_p*cos(th_p)*error;elseu=-f*[th_a;th_p;d_th_a;d_th_p];end%-----------------Limit input--------------if u>=4.995u=4.995;else if u<=-4.995u=-4.995;endend%----------------------------save data----------------------------accel_th_a(i)=dd_th_a;accel_th_p(i)=dd_th_p;veloc_th_a(i)=dd_th_a;veloc_th_p(i)=dd_th_p;angle_th_a(i)=th_a;angle_th_p(i)=th_p;Energy1(i)=energy;Energy2(i)=kinetic;Energy3(i)=potential;input(i)=u;t(i)=i*dt;end%----------------------------end loop-------------------------------subplot(221);plot(t,angle_th_a);xlabel('time[sec]');ylabel('Angle of Arm [rad]');subplot(222);plot(t,angle_th_p);xlabel('time[sec]');ylabel('Angle of Pendulum [rad]');gridsubplot(223);plot(t,input);xlabel('time[sec]');ylabel('Input');gridsubplot(224);plot(t,Energy1,t,Energy2,':',t,Energy3,'--'); xlabel('time[sec]');ylabel('Energy of Pendulum');控制模型的如图2所示:图2 控制模型控制曲线如图3所示:246-0.4-0.200.20.4time[sec]A n g l e o f A r m [r a d ]246-20246time[sec]A n g l e o f P e n d u l u m [r a d ]246-55time[sec]I n p u t246-0.0500.050.10.15time[sec]E n e r g y o f P e n d u l u m图3 控制曲线三、 A DAMS 建模及参数设置处理 1. 建模此处为了更为清晰的建模,将电机驱动以及连杆、摆杆的模型简化。
雷达天线模型MATLAB与ADAMS联合仿真实验1.导入雷达天线机械系统模型启动ADAMS,弹出如图1所示的对话框,选择“Open an existing database”,打开保存雷达天线模型的文件夹X:\antenna_test(注:X表示盘符),单击OK按钮,在弹出的对话框中选择“”即可打开雷达天下机械系统模型,如图2所示。
图1 启动ADAMS图2 雷达天线机械系统模型(1)在轴承与天线支撑间添加固定副由于轴承(bearings)外圈与天线支撑(support_beam)是连接在一起的,所以需要在两者之间添加一个固定副。
点击图标,选择“2 Bod-1 Loc”方式,依次单击bearings与support_1,然后单击MAR71即可在轴承与支撑之间添加一个固定副(如图3),并将其名称修改为support_upper。
图3 在轴承与支撑杆之间添加固定副(2)在天线与轴承之间添加旋转副由于天线绕着轴承做回转运动,故需在天线(antenna)与轴承(bearings)之间添加一个旋转副。
单击图标,选择“2 Bod-1 Loc”方式,依次单击antenna 与bearings,然后单击MARKER_76即可在天线与轴承之间添加一个旋转副(如图4),并将其名称修改为antenna_joint。
图4在天线与轴承之间添加旋转副(3)在天线支撑与底座之间添加固定副由于底座(plate)与支撑杆(support_beam)是固连在一起的,所以需要在两者之间添加一个固定副。
点击图标,选择“2 Bod-1 Loc”方式,依次单击support_1与plate,然后单击MAR74即可在轴承与支撑杆之间添加一个固定副(如图5),并将其名称修改为support_lower。
图5 在底座与支撑杆之间添加固定副(4)在减速齿轮与地面基础框架间添加转动副因为减速齿轮(reduction_gear)安装在地面基础框架(ground)上,并在框架上做旋转运动,故需要在减速齿轮与框架间添加一个旋转副。
Matlab与adams联合仿真设置1 模型设置 (2)2 运动副设置 (3)3 驱动与力设置 (4)4 检验设置是否正确 (7)5 Adams中与Matlab联合仿真的设置 (8)6 Matlab中与Adams联合仿真的设置 (12)7 联合仿真结果显示 (14)1 模型设置在soildworks建好四足整体模型,开始时做一个简化版的模型就可以了,另存为.x_t格式。
打开adams,点击文件->导入,在文件类型中选择“Parasoild”,双击“读取文件”空白处,打开选取文件界面,找到保存的四足模型,选择。
在模型名称的空白栏处右击,选择模型->创建,命名为“ghost”。
点击确定(图1.1)。
读取的文件目录中不要出现中文,否则会出现错误。
(图1.1)(图1.2)导入后的模型显示如图1.2。
点击界面右下角的球形图标,将模型转化为实体。
(图1.3。
倒数第四个)点击界面左上的设置->单位,将长度量纲改为毫米。
点击设置->重力,将重力设置为Y轴方向-9806.65。
点击界面左侧框图浏览->物体的左侧加号,出现模型各个部件的名称(图1.4)。
由于将模型从soildworks导入adams中时会损失质量信息,接下来将设置每个部件的质量。
双击某一部件,弹出设置界面(图1.5),在“定义质量方式”中选择“几何形状和密度”,随后设置密度。
由于实际中四足的腿的质量很小,大部分质量都集中在身体的铝架上,所以将腿部结构的的密度设为(200.0(kg/meter**3)),将身体部分的密度设为(1200.0(kg/meter**3))(图1.5)(图1.4)逐个双击部件设置密度信息。
完成后可在某个部件上右击,选择信息,查看该部件的信息(图1.6)。
(图1.6)统计质量信息如下:小腿长:0.0435kg*4 、小腿短:0.0252kg*4、大腿0.0132kg*8身体:5.79kg.总质量:6.18kg。
ADAMS 2005R2与MATLAB7.0联合仿真ADAMS/Controls(控制模块)可以将ADAMS的机械系统模型与控制系统应用软件(如:MATLAB、EASY5或者MATRIX)连接起来,实现在控制系统软件环境下进行交互式仿真,还可以在ADAMS/View中观察结果。
一般来说,控制系统最好用数学上的控制系统框图来表示,而基于几何外形的机械运动系统则用动画和曲线进行描述。
在仿真计算过程中,ADAMS采取两种工作方式:其一,机械系统采用ADAMS解算器,控制系统采用控制软件解算器,二者之间通过状态方程进行联系;其二,利用控制软件书写描述控制系统的控制框图,然后将该控制框图提交给ADAMS,应用ADAMS解算器进行包括控制系统在内的复杂机械系统虚拟样机的同步仿真计算。
一、ADAMS/Controls的设计流程ADAMS/Controls控制系统设计主要有以下四个步骤,如图1-1所示。
图1-1 ADAMS/Controls的设计流程第一步:建立机械系统模型机械系统模型可以在ADAMS/Controls下直接建立,也可以建立已经建好的外部模型。
第二步:确定ADAMS的输入输出变量通过确定ADAMS的输入和输出变量可以在ADAMS和控制软件之间形成一个闭合回路,如图1-2所示。
Input Controls图1-2 ADAMS的输入和输出变量第三步:建立控制系统模型使用控制软件MATLAB、EASY5或者MATRIX建立控制系统模型,并将其与ADAMS机械系统模型连接起来。
第四步:仿真模型可以使用交互式或者批处理方式仿真机械系统和控制系统连接在一起的模型。
二、ADAMS/Controls的应用实例:ADAMS帮助文件《Getting Started Using ADAMS/Controls》(即李军等人写的《ADAMS实例教程》)中的天线模型(antenna.cmd)。
1、导入用于控制仿真软件(CSS)MATLAB的模型文件。
一个简单的Adams——MATLAB联合放置实例新浪微博@robpark_罗/*****************
目的:建立一个简单的Adams—MATLAB联合仿真程序,对联合仿真有一个直观的了解,熟悉建立联合放置的步骤。
实例内容:本实例建立一个滑块,这个滑块由matlab给定位移进行驱动。
程序位置:F:\selfprogram\adams\co_adams_matlab
Step1:在adams中启动控制模块
Step2:建立模型
建立一个中心在原点的滑块,添加运动副(移动副)和运动(针对移动副的运动),具体添加方法不详述,如下图所示:
Step3:创建adams系统输入输出变量
Adams的输入变量是指matlab输出至adams的变量,这里是指驱动位移
Adams的输出变量是指adams输出至matlab的变量,这里是adams中位移传感器测量的滑块的位移。
输入变量:输入变量因为是matlab给定,因此值为0
输出变量为滑块的位移:DX( cm, MARKER_3)为滑块的质心cm到地面点MARKER_3的距离,其中DX为位移函数。
Step4:将输入变量与运动驱动关联起来
由step3可知,建立的输入变量只有名称,值为0,因此,现在还并不知道这个输入变量是用来干什么的,因此,必须将这个变量与运动驱动关联起来。
对运动MOTION_1进行编辑,让函数值为:VARVAL(displace_input),该函数的意思就是这个运动的值由系统变量displace_input给定。
Step5 导出控制系统模型
至此,点击ok后,即会生成几个文件:
Step6:建立matlab模型
打开matlab,将matlab工作文件夹设置为上述产生的文件夹:
在matlab命令行内输入产生的m文件:test_02,然后输入who, 然后输入adams_sys,便
会弹出一个mdl模型,把两个红色框删除:
Step7:建立模型如下
Step8:设置模型:
点击adams_sub模块,弹出:
点击红色模块:MSC Software:
Step9 仿真。