ADAMS机电一体化仿真研究.docx
《ADAMS机电一体化仿真研究.docx》由会员分享,可在线阅读,更多相关《ADAMS机电一体化仿真研究.docx(16页珍藏版)》请在冰豆网上搜索。
ADAMS机电一体化仿真研究
ADAMS机电一体化仿真研究
本文对如何在ADAMS中实现机械和控制系统联合仿真进行了研究。
首先简单介绍了ADAMS中实现机械和控制系统联合仿真的六种方法,然后用三个实例来详细地说明了机械和控制系统联合仿真分析流程。
1引言
航天产品中机电类产品占据了大多数,在传统的机电一体化系统设计过程中,机械工程师和控制工程师虽然在共同设计开发一个系统,但是他们各自都需要建立一个模型,然后分别采用不同的分析软件,对机械系统和控制系统进行独立的设计、调试和试验,最后建造一个物理样机,进行机械系统和控制系统的联合调试。
如果发现问题,机械工程师和控制工程师又需要回到各自的模型中,修改机械系统和控制系统,然后再进行物理样机联合调试,图1说明了这个过程。
图1传统机电产品开发方法
使用MSC.ADAMS仿真软件,机械工程师和控制工程师可以共享同一个样机模型,进行设计、调试和试验。
可以利用虚拟样机对机械系统和控制系统进行反复的联合调试,直到获得满意的设计效果,然后进行物理样机的建造和调试。
图2说明了这个过程。
图2虚拟样机产品开发新方法
显然,利用虚拟样机技术对机电一体化系统进行联合设计、调试和试验的方法,同传统的设计方法相比较具有明显的优势,可以大大地提高设计效率,缩短开发周期,降低开发产品的成本,获得优化的机电一体化系统整体性能。
MSC.ADAMS(AutomaticDynamicAnalysisofMechanicalSystem)软件是美国MSC公司的旗帜产品,是虚拟样机领域非常优秀的软件。
它的功能很强大,如:
给用户提供了友好的界面、快速简便的建模功能、强大的函数库、交互式仿真和动画显示功能等等。
另外,MSC.ADAMS/Controls模块提供了与许多控制系统软件(如MATLAB,MATRIXX,EASYS5等)的接口功能。
利用这些软件,可以把机械系统仿真与控制系统仿真结合起来[1]。
为此,本报告专门就ADAMS中如何实现机械和控制一体化仿真做一个总结。
2ADAMS中实现控制的方法介绍[2]
在ADAMS中使用控制器来实现控制有六种方法。
其中有三种方法在ADAMS内部就能够实现,不需要其它外部程序代码;另外三种方法需要使用ADAMS外部程序代码才能实现。
下面简单的介绍一下这六种方法。
2.1方法一:
使用控制定律定义力或扭矩函数
使用控制定律来定义力或扭矩的函数表达式是ADAMS中最直接的一种使用控制器的方法,为了便于说明这种方法,下面用一个简单的例子来说明。
在某模型中扭矩的表达式为:
F(time)=-20.0*WY(MAR_1),这个表达式的意思是扭矩是基于Y方向的角速度其增益为20的阻尼扭矩。
如果这个函数是连续的,那么系统就具有很高的非线性,我们可使用STEP函数来控制相关的控制力或控制扭矩的开或关。
2.2方法二:
使用ADAMS/View内部的控制工具箱
利用ADAMS/View的控制工具箱,可以直接在ADAMS/View样机模型中添加控制模块,完成机电一体化系统的仿真分析。
该控制工具箱提供了简单的线性控制模块和滤波模块,可以方便的实现前置滤波、PID控制及其它连续时间单元的模拟仿真。
2.3方法三:
用FORTRAN或C来写子程序来实现
用FORTRAN或C写的用户子程序可以通过编译后连接到ADAMS可执行程序中去。
在应用程序中,用户自定义子程序能够很好的执行控制规律而且能很好的连接到ADAMS模型中适当的物体上。
该方法属于ADAMS二次开发的内容。
2.4方法四:
使用ADAMS/Linear模块导出状态矩阵的方法
用户可以指定输入(比如控制力矩)、输出(比如角速度和偏差),从而输出状态矩阵,这些状态矩阵能被MATLAB或Matrix-X识别,但是要注意的是模型中的平衡配置要是线性化的。
这种方法最大的优点是在外部代码中所有控制规律的设计是为该模型所用的。
2.5方法五:
使用ADAMS/Controls进行协同仿真
使用ADAMS/Controls模块,可以将机械系统仿真分析工具同控制设计仿真软件有机地连接起来,实现将复杂的控制添加到机械系统样机模型中,对机电一体化的系统进行联合仿真分析。
ADAMS/Controls模块支持同MATLAB、MATRIX、EASY5等控制分析软件进行联合分析。
2.6方法六:
控制框图转换成C/Fortran代码导入到ADAMS中实现
该方法是把Simulink或者MSC.EASY5中的控制框图转换成C/Fortran代码后导入到ADAMS中作为一个广义状态方程来实现。
这种仿真完全是在ADAMS内部执行,需要适时工作空间MATLAB/Simulink或者MSC.EASY5v7.1以及MSC.ADAMSv2003SP1的支持。
3应用实例
前面对在ADAMS中实现控制的六种方法做了简单的介绍,事实上在实际应用中不可能用到每种方法,因此接下来只对其中的三种方法进行实例应用分析。
3.1实例一:
使用控制定律定义扭矩函数[3]
该例子介绍了不使用控制包的元素而直接使用力矩函数来定义反馈闭环控制,模型中没有使用状态变量、传递函数等。
图3显示了该例的可视化界面。
这个特殊模型演示了一个指针始终跟踪一个做来回平移运动的方块的过程,模型中使用了两个测量来作为一个力矩值的输入和输出。
控制系统模仿了一个比例-积分类型的控制器,因此我们能用距离测量来估算比例部分,而用速度测量来找出控制器的积分部分。
图4给出了控制回路框图,其中模型中的距离误差测量设置为:
DX(slider_center,Pointer.tip,Pointer.tip),DX是ADAMS中的位移函数。
模型中的速度误差测量设置为:
VX(slider_center,Pointer.tip,Pointer.tip,Pointer.tip),VX是ADAMS中速度函数。
上述两个函数中的slider_center和Pointer.tip分别表示滑块中心和指针顶点的marker点。
图3使用力矩函数来实现控制回路的例子
图4控制回路框图
上述两个测量乘以增益后求和作为控制力矩的输入函数,其表达式为:
Function=10*DX(slider_center,Pointer.tip,Pointer.tip)+10*VX(Slider.slider_center,Pointer.tip,Pointer.tip,Pointer.tip)。
我们能够方便的修改增益值来控制指针跟踪滑块的灵敏度。
3.2实例二:
使用ADAMS/View内部的控制工具箱[4]
这个例子演示了在Adams/view中使用内部的控制工具箱的流程。
模型中由两个运动部件、一个强迫运动和一个单向的扭矩组成,其中模型如图5所示。
图5使用ADAMS/View内部控制工具箱来实现控制的例子
模型中连杆构件与地面之间是一个铰链连接,在铰链上施加了一个自由振荡运动;桶构件和连杆之间也是靠一个铰链连接,在桶和连杆构件之间施加了一个控制扭矩来控制桶始终保持水平。
其控制框图如图6所示。
图6控制框图
根据上面的控制框图,我们在ADAMS/view中添加框图中的每个元素,从build菜单中选择controlstoolkit,接着再选择standardcontrolsblocks打开创建控制框图的对话框,如图7所示。
图7控制环节定义面板
使用上述的控制环节定义面板,我们可以方便的定义控制输入函数,控制求和函数,控制增益,积分,低通过滤,导通延迟过滤,以及PID控制等等。
但是,使用控制工具箱只能处理线性的简单控制回路,对于复杂的非线性的控制回路还得要和其它专门的控制系统分析程序接口才能完成仿真。
通过该控制面板我们在上述的模型中定义了两个控制输入θdesired和θactual,一个控制求和以及一个控制增益K。
定义好后进行仿真,图5中的连杆在转动过程中,连杆上的桶始终保持水平状态。
3.3实例三:
使用ADAMS/Controls进行协同仿真[5]
3.3.1协同仿真基本步骤
该协同仿真分析包括以下四个基本步骤,如图8所示。
图8ADAMS/Controls分析步骤
(1)构造ADAMS/View样机模型使用ADAMS/Controls模块进行机电一体化系统联合分析前,首先应该构造ADAMS/View的机械系统样机模型,或者输入已经构造好的机械系统样机模型。
机械系统样机模型中包括几何模型、各种约束和作用力等。
(2)确定ADAMS的输入和输出需要通过ADAMS/View或ADAMS/Solver中的信息文件或启动文件,确定ADAMS的输入和输出。
这里,输出是指进入控制程序的变量,表示从ADAMS/Controls输出到控制程序的变量。
而输入是指从控制程序返回到ADAMS的变量,表示控制程序的输出。
通过定义输入和输出,实现ADAMS和其他控制程序之间的信息封闭循环。
这里所有程序的输入都应该设置为变量,而输出可以是变量或是测量值。
(3)构造控制系统方框图控制系统方框图是用MATLAB、MATRIX或EASY5等控制分析软件编写的整个系统的控制图,ADAMS/View的机械系统样机模型被设置为控制图中的一个模块。
(4)机电系统仿真分析最后,可以对机电一体化系统的机械系统和控制系统进行联合仿真分析。
3.3.2某雷达天线协同仿真
该实例演示了一个简单的雷达天线定点问题,在雷达天线机械系统中添加控制系统来控制雷达天线跟踪卫星信号。
3.3.2.1构造ADAMS/View样机机械模型
在ADAMS/View中建好的样机机械模型如图9所示。
该模型主要由马达、减速齿轮、转盘、支撑杆、仰角轴承及其天线组成,它们之间通过一定的约束关系连接在了一起。
图9雷达天线样机机械模型
3.3.2.2确定ADAMS的输入和输出
雷达天线的机械系统和控制系统之间的输入和输出关系,如图10所示。
从图10可以看到,向雷达的机械系统输入一个控制力矩(control_torque),雷达的机械系统则向控制系统输出天线仰角的方位角(azimuth_position)和马达转速(rotor_velocity)。
图10雷达天线的输入和输出
ADAMS/Controls程序和控制程序MATLAB之间,通过相互传递状态变量进行信息交流。
因此必须将样机模型的输入和输出变量,及其输入和输出变量引用的输入和输出函数,同一组状态变量联系起来。
图11给出了定义状态变量的对话框。
模型中共定义了4个状态变量:
天线方位角(azimuth_position),控制力矩(control_torque),天线高低角(elevation_position),马达转速(rotor_velocity)。
定义好状态变量后就可以通过ADAMS/Controls接口定义机械系统和控制系统间的输入输出变量。
3.3.2.3构造控制系统方框图
控制系统建模的目的是建立一个机械和控制一体化的样机模型,通过ADAMS方框图添加控制系统,实现控制系统的建模,基本步骤如下:
具体步骤如下:
(1)启动Matlab程序
1)启动Matlab程序,显示Matlab命令窗口界面。
2)在Matlab命令输入提示符”>>”或”?
”处,输入ant_test(ant_test文件的全名为ant_test.m,是在ADAMS/Controls中定义后自动输出的),Matlab返回相应的结果。
%%%INFO:
ADAMSplantactuatorsnames:
1control_torque
%%%INFO:
ADAMSplantsensorsnames:
1azimuth_position
2rotor_velocity
3)在输入提示符处,输入who命令,显示文件中定义的变量列表,
Matlab返回相应的结果:
ADAMS_execADAMS_inputsADAMS_outputsADAMS_poutputADAMS_staticADAMS_uy_idsADAMS_initADAMS_modeADAMS_pinputADAMS_prefixADAMS_sysdir
可以选择以上显示的任何一个变量名,检验变量。
例如,如果输入ADAMS_outputs,Matlab将显示机械系统中定义的所有输出:
ADAMS_outputs=rotor_velocity!
azimuth_position。
(2)输入ADAMS模块
1)在Matlab输入提示符处,输入adams_sys,显示adams_sys的模块窗口,如图12所示。
adams_sys文件的全名是adams_sys_.mdl,该文件是运行ant_test.m时自动生成的,每个模型都会生成这个相同的文件,但是文件的内容会有所不同。
图12adams_sys模块窗口
2)在File菜单,选择New,打开一个新的类似于图12的空白窗口,为方便起见,将此窗口称为antenna1。
3)用鼠标将图12中的adams_sub模块连同两个输出显示器,拖到新打开的antennal窗口中。
4)双击antenna1窗口中的adams_sub模块,显示adams_sub模块的子系统如图13所示。
图13adams_sub模块的子系统
(3)设置仿真参数
1)在新显示的Simulink窗口中,如图13所示,双击MSCSoftware模块,显示MSCSoftware模块参数对话框,如图14所示。
图14MSCSoftware模块参数设置对话框
2)在OutputFilesPrefix文本输入框,设置输出文件名’mytest’。
文件名应该用单引号括起来。
ADAMS/Controls将以文件名mytest保存仿真分析结果。
ADAMS/Controls输出仿真结果(.res)、要求(.req)和图形(.gra)等三种类型的仿真分析结果文件,在本例题中,分别是mytest.res、mytest.req和mytest.gra文件。
3)在仿真分析模式(Simulationmode)栏,选择discrete参数。
仿真分析模式定义了ADAMS程序求解机械系统方程的方式,以及控制程序求解控制系统方程的方式。
4)在动画显示(Animationmode)栏,选择interactive参数。
动画显示决定了在ADAMS/View中动态显示跟踪仿真结果的方式。
5)选择Aplly。
6)选择OK。
(4)控制系统建模
控制系统的建模需要利用Matlab程序的Simulink工具箱,建模方法如下:
1)在Matlab命令窗口,启动Simulink,显示Simulink工具库窗口。
2)双击Simulink工具库窗口的每个图标,显示各自的子工具库窗口。
3)在已经打开的antenna1窗口中,根据控制系统的具体需要,在Simulink工具库窗口中选择有关图形模块,并拖到Simulink建模窗口中。
4)按照图15所示的控制系统图,完成各控制图标以及adams_sysm模块之间的连接和参数设置。
5)在File菜单,选则Save命令,将控制系统的Simulink文件存盘。
图15控制系统图
在ADAMS的ADAMS/Controls模块的例题目录中(ADAMS程序安装目录下的controls/examples/antenna),保存有一个已经完成建模的控制系统Simulink文件,文件名为antenna.mdl。
也可以直接从Simulink窗口中,读出antenna.mdl文件,然后进行机电系统联合仿真分析。
使用antenna.mdl模块中的MSCSoftware模块的参数进行重新设置,如图15所示。
3.3.2.4机电系统联合仿真分析
(1)设置仿真参数
1)在Simulink工具菜单栏,如图15所示,选择Simulation菜单。
2)在弹出的下一层菜单中,选择Parameteres,显示参数设置对话框。
3)设置仿真时间,在StartTime栏,输入0.0,设置开始时间。
在EndTime栏,输入0.25,设置结束时间。
4)在仿真类型的第一个选择栏,选择variablestepmode参数。
第二个选择栏,选择ode15s参数。
5)对于其他各项参数,取默认值。
6)选择OK按钮,关闭Matlab仿真参数设置对话框。
(2)执行机电系统联合仿真分析
在Simulation菜单,选择Start命令,开始进行机电系统联合仿真分析。
程序将显示一个新的ADAMS/View窗口,显示仿真分析结果。
ADAMS接收来自Matlab的控制输入信息,产生相应的运动。
同时,向Matlab的控制系统提供天线仰角的方位角azimuth_position和马达转速rotor_velocity的实时值。
通过这种方式,机械系统和控制系统实现闭环控制。
完成仿真分析以后,ADAMS/View自动关闭新显示的窗口。
(3)暂停仿真分析
利用ADAMS/Controls程序的互交式对话功能,可以使Matlab暂停分析,以便能够更仔细的观察和监控ADAMS/View中的样机图形。
具体方法如下:
1)在ADAMS/View显示窗口的左上方,实时显示仿真分析进程时间。
当仿真分析时间达到.1s,马上在Simulink的Simulation菜单,选择Pause命令,Matlab将暂停仿真分析。
2)返回到ADAMS/View窗口,暂停仿真时,可以利用ADAMS/View主工具箱的各种视图方向工具,改变样机模型的视图方向,获得最佳视觉效果。
3)如果需要继续进行仿真分析,可以在Simulink的Simulation菜单,选择Start命令。
程序继续开始仿真分析。
(4)在Matlab程序中绘制仿真分析结果
利用Matlab的绘图命令,可以绘制Matlab产生的任何数据。
在本例中,将控制力矩ADAMS_uout的仿真结果曲线。
ADAMS_uout数据隐含在adams_sub模块中,如图15所示。
绘制力矩图方法如下:
在Matlab命令窗口的输入命令提示符处,输入
>>plot(ADAMS_tout,ADAMS_uout)
为控制力矩图添加标题的方法是,在Matlab命令窗口的输入命令提示符处,输入
>>xlabel(‘时间/s’)
>>ylabel(‘控制力矩/N.m’)
>>title(‘雷达天线输入力矩随时间变化曲线’)
Matlab添加X轴和Y轴的标题,以及控制力矩图标题,如图16所示。
图16控制力矩随时间变化曲线
值得注意的一点是:
ADAMS和MATLAB的版本兼容性问题。
4总结
本文对如何在ADAMS中实现机械和控制系统联合仿真进行了研究。
首先简单介绍了ADAMS中实现机械和控制系统联合仿真的六种方法,然后用三个实例来详细地说明了机械和控制系统联合仿真分析流程。
参考文献:
[1]ADAMS——虚拟样机技术入门与提高,郑建荣,机械工业出版社,2003
[2]ADAMSKnowledgeBase,Article8062,DifferentMethodstoModelControllersinADAMS,
[3]ADAMSKnowledgeBase,Article8727,Exampleoffeedbackcontrolsystemwithoutusingcontrolspackageelements,.
[4]ADAMSKnowledgeBase,Article8458,ExampleoftheControlsToolkitinADAMS/View,
[5]GettingStartedUsingADAMS/Control