
ADAMS机电一体化仿真研究.doc
20页ADAMS机电一体化仿真研究本文对如何在ADAMS中实现机械和控制系统联合仿真进行了研究首先简单介绍了ADAMS中实现机械和控制系统联合仿真的六种方法,然后用三个实例来详细地说明了机械和控制系统联合仿真分析流程1引言航天产品中机电类产品占据了大多数,在传统的机电一体化系统设计过程中,机械工程师和控制工程师虽然在共同设计开发一个系统,但是他们各自都需要建立一个模型,然后分别采用不同的分析软件,对机械系统和控制系统进行独立的设计、调试和试验,最后建造一个物理样机,进行机械系统和控制系统的联合调试如果发现问题, 机械工程师和控制工程师又需要回到各自的模型中,修改机械系统和控制系统,然后再进行物理样机联合调试,图1说明了这个过程图1 传统机电产品开发方法使用MSC.ADAMS仿真软件,机械工程师和控制工程师可以共享同一个样机模型,进行设计、调试和试验可以利用虚拟样机对机械系统和控制系统进行反复的联合调试,直到获得满意的设计效果,然后进行物理样机的建造和调试图2说明了这个过程图2 虚拟样机产品开发新方法显然,利用虚拟样机技术对机电一体化系统进行联合设计、调试和试验的方法,同传统的设计方法相比较具有明显的优势,可以大大地提高设计效率,缩短开发周期,降低开发产品的成本,获得优化的机电一体化系统整体性能。
MSC.ADAMS(Automatic Dynamic Analysis of Mechanical System) 软件是美国MSC公司的旗帜产品,是虚拟样机领域非常优秀的软件它的功能很强大,如:给用户提供了友好的界面、快速简便的建模功能、强大的函数库、交互式仿真和动画显示功能等等另外,MSC.ADAMS/Controls模块提供了与许多控制系统软件( 如MATLAB,MATRIX X,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.EASY5 v7.1以及MSC.ADAMS v2003 SP1的支持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菜单中选择controls toolkit,接着再选择standard controls blocks打开创建控制框图的对话框,如图7所示图7 控制环节定义面板使用上述的控制环节定义面板,我们可以方便的定义控制输入函数,控制求和函数,控制增益,积分,低通过滤,导通延迟过滤,以及PID控制等等但是,使用控制工具箱只能处理线性的简单控制回路,对于复杂的非线性的控制回路还得要和其它专门的控制系统分析程序接口才能完成仿真通过该控制面板我们在上述的模型中定义了两个控制输入θdesired和θactual,一个控制求和以及一个控制增益K定义好后进行仿真,图5中的连杆在转动过程中,连杆上的桶始终保持水平状态3.3实例三:使用ADAMS/Controls进行协同仿真[5]3.3.1协同仿真基本步骤该协同仿真分析包括以下四个基本步骤,如图8所示。
图8 ADAMS/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 雷达天线的输入和输出图11 建立状态变量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 : ADAMS plant actuators names :1 control_torque%%% INFO : ADAMS plant sensors n。
