Adams与Matlab联合仿真例子
作者寄语:这个文件是基于李增刚《adams入门详解与实例》一书中,Adams与Matlab联合仿真的例子,以及一个名为《2013版ADAMS与Matlab联合仿真(绝对正确版)》的pdf文件上修改来,为了方便起见,用了一些复制、粘贴,所以中间的一些过程会和这两个文件有所重合,不要惊讶,也不要吐槽。做这个例子的目的,是站在一个普通学习者的角度,介绍联合仿真,和众多学习adams的人共勉。我的结论是:以上两个例子中的结果并不矛盾,都是正确的,基本上看了我的例子后,他们的也就懂了。
李增刚http://vdisk.weibo.com/s/uxjACUp7U7Hzf 第236页开始。 《2013版ADAMS与Matlab联合仿真(绝对正确版)》http://wenku.http://www.35331.cn//view/aeab70fe360cba1aa911da00.html
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。选择菜单栏【Settings】→【Units】 命令,设置模型物理量单位,将单位设置成MMKS,长度和力的单位设置成毫米和牛顿。 2、创建连杆
单击几何工具包中的连杆按钮,将连杆参数设置为Length=400,Width=20,Depth=20,然后左键选中原点,在图形区水平拖动鼠标,创建一个连杆。 3、创建旋转副
单击运动副工具包中的旋转副按钮,将旋转副的参数设置为1 Location和Normal to gird,单 击连杆质心处的Marker点,将连杆和大地关联起来。 4、创建球体
单击几何工具包中的球体按钮,将球体的选项设置为Add to Part,半径设置为20,然后在图形区单击连杆,再单击连杆右侧处的Marker点,将球体加入到连杆上,如下图所示。此时连杆的质心产生了移动。 5、创建单分量力矩
单击载荷工具包中的单分量力矩按钮,将单分量力矩的选项设置为Space Fixed和Normal to Grid,将Characteristic设置为Constant,勾选Torque并输入0,然后在图形区单击连杆,再单击连杆左侧的Marker点,在连杆上创建一个单分量力矩,如下图所示。
6、 创建输入状态变量
老版本单击菜单【Build】→【System Elements】→【State Variable】→【New】,弹出下图所示的创建状态变量对话框,将Name输入框改成Torque。单击Ok后,创建Torque变量。
7、将状态变量与模型关联
在图形区双击单分量力矩的图标,打开编辑对话框,如下图所示,在Function输入框中输入VARVAL(.link.Torque) ,这里VARVAL( )是 一 个ADAMS函数,它返回变量.link.Torque的值。通过函数把状态变量Torque与力矩关联起来,力矩取值将来自于状态变量Torque。
8、指定状态变量Torque为输入变量
点击图上的按钮创建输入变量(就是这个量由matlab输入控制),老版本单击菜单【Build】→【Controls Toolkit】→【Plant Input】后,弹出定义控制输入对话框,如下图所示。将Plant Input Name 输入框改成.link.PINPUT_Torque,在Variable Name输入框中,用鼠标右键快捷菜单输入状态变量Torque,单击OK按钮。
9、创建输出状态变量
老版本单击菜单【Build】→【System Elements】→【State Variable】→【New】,弹出创建状态变量对话框。将Name输入框修改成Angle,在F(time,…)=输入框中输入表达式AZ(MARKER_3,MARKER_4)*180/PI,单击Apply按钮创建状态变量Angle作为第一个输出
变量,然后将Name修改成 Velocity,在F(time,…)=输入框中输入表达式WZ(MARKER_3,MARKER_4)*180/PI,如图7-31所示。其中AZ()函数返回绕Z轴旋转的转角,这里代表连杆相对于转轴的转角,WZ()函数返回绕Z轴旋转的角速度,这里代表连杆的角速。MARKER_3在连杆cm上,MARKER_4在连杆cm处的地上。参考下面的图吧,全懂了。
10、指定状态变量angle、Velocity为输出变量
老版本单击菜单【Build】→【Controls Tookit】→【Plant Output】后,弹出创建控制输出对话框,如下图所示。将Plant Output Name输入框修改成.link..POUTPUT_control。在Variable Name 输入框中,用鼠标右键快捷菜单输入状态变量Velocity和.link.Angle,单击OK按钮。