




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南 阳 理 工 学 院本科生毕业设计(论文)学院(系):电子与电气工程学院 专 业: 自动化 学 生: x x 指导教师: x x 完成日期 2012年 5 月 南阳理工学院本科生毕业设计(论文)基于MATLAB和S函数的复杂系统设计 Design of Complex System based on MATLAB and S Function总 计: 22 页表 格: 0 个插 图: 5 幅南阳理工学院本科毕业设计(论文)基于MATLAB和S函数的复杂系统设计Design of Complex System based on MATLAB and S Function 学 院 (系): 电子与电气工程学院 专 业: 自动化 学 生 姓 名: x x 学 号: 1040910200xx 指 导 教 师(职称): x x(副教授) 评 阅 教 师: 完 成 日 期: 南阳理工学院Nanyang Institute of Technology基于MATLAB和S函数的复杂系统设计基于MATLAB和S函数的复杂系统设计自动化 x x摘 要 S函数模块可以描述任意复杂的系统。本文设计了两关节机械手的数学模型,根据其数学模型搭建出仿真模型,并利用MATLAB语言中的S函数模块来描述该系统,以实现位置和速度的跟踪控制。然后利用MATLAB软件对这个非线性系统进行仿真。仿真结果表明,该模型具有良好的稳定性,能实现机械手位置和速度的精确控制。关键词 S函数;机械手模型;MATLAB仿真;跟踪 Design of Complex System based on MATLAB and S FunctionAutomation Specialty ZHANG XxxxAbstract: S function module can describe any complex system. The mathematical model of two-joint manipulator is designed in this paper. We build a simulation model based on its mathematical model, and using the S-function module in the MATLAB language to describe the system in order to achieve the control of position and velocity. Then we can simulate for the nonlinear system by using MATLAB software. The simulation results show that the model has good stability, which can achieve precise control of the robot position and velocity.Key words: S Function; Manipulator Model; MATLAB Simulation; TrackingI目 录1引言11.1课题研究背景11.2 机械手的发展概况和趋势11.2.1机械手的研究现状概述11.2.2发展趋势21.3课题研究的内容32 S函数在系统仿真中的应用32.1仿真基础知识32.1.1 MATLAB及Simulink简介32.1.2 MATLAB主要功能简介42.1.3 Simulink的功能及部分模块介绍42.2 S函数的基本结构及封装62.2.1 S函数的概述62.2.2 S函数的基本结构72.2.3 S函数模块的封装82.3 S函数工作原理83两关节机械手仿真模型104两关节机械手的设计分析115结论13结束语14参考文献15附录16致谢22II1引言1.1课题研究背景随着我国工业自动化水平的不断提高,在机械加工与制造领域,以及各种装配与包装自动化生产线上,机械手的应用已相当普遍。机械手通常担负着上料、下料,搬动或装卸零件的重复动作等,以实现生产自动化。机械手在国内主要是逐步扩大应用范围,重点发展铸造、热处理方面的机械手,以减轻劳动强度,改善作业条件,在应用专用机械手的同时,相应的发展通用机械手,有条件的还要研制示教式机械手、计算机控制机械手和组合机械手等。同时要提高速度,减少冲击,正确定位,以便更好的发挥机械手的作用。国外机械手的发展趋势是大力研制具有某种智能的机械手。使它具有一定的传感能力,能反馈外界条件的变化,作相应的变更。如位置发生稍许偏差时,即能更正并自行检测,重点是研究视觉功能和触觉功能。目前已经取得一定成绩。随着机械手的小型化和微型化,其应用领域将会突破传统的机械领域,而向着电子信息、生物技术、生命科学及航空航天等高端行业发展。1.2 机械手的发展概况和趋势1.2.1机械手的研究现状概述机械手是一种模拟人手操作的自动机械6。它可按固定程序抓取、搬运物件或操持工具完成某些特定操作。应用机械手可以代替人从事单调、重复或繁重的体力劳动,实现生产的机械化和自动化,代替人在有害环境下的手工操作,改善劳动条件,保证人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。20世纪40年代后期,美国在原子能实验中,首先采用机械手搬运放射性材料,人在安全间操纵机械手进行各种操作和实验。50年代以后,机械手逐步推广到工业生产部门,用于在高温、污染严重的地方取放工件和装卸材料,也作为机床的辅助装置在自动机床、自动生产线和加工中心中应用,完成上下料或从刀库中取放刀具并按固定程序更换刀具等操作。机械手主要由手部和运动机构组成。手部是用来抓持工件(或工具)的部件,根据被抓持物件的形状、尺寸、重量、材料和作业要求而有多种结构形式,如夹持型、托持型和吸附型等。运动机构,使手部完成各种转动(摆动)、移动或复合运动来实现规定的动作,改变被抓持物件的位置和姿势。运动机构的升降、伸缩、旋转等独立运动方式,称为机械手的自由度。自由度是机械手设计的关键参数。自由度越多,机械手的灵活性越大,通用性越广,其结构也越复杂。一般专用机械手有23个自由度。机械手的种类,按驱动方式可分为液压式、气动式、电动式、机械式机械手;按适用范围可分为专用机械手和通用机械手两种;按运动轨迹控制方式可分为点位控制和连续轨迹控制机械手等。机械手通常用作机床或其他机器的附加装置,如在自动机床或自动生产线上装卸和传递工件,在加工中心中更换刀具等,一般没有独立的控制装置。有些操作装置需要由人直接操纵,如用于原子能部门操持危险物品的主从式操作手也常称为机械手。1.2.2发展趋势随着科学与技术的发展,机械手的应用领域也不断扩大。目前,机械手不仅应用于传统制造业如采矿,冶金,石油,化学,船舶等领域,同时也已开始扩大到核能,航空,航天,医药,生化等高科技领域以及家庭清洁,医疗康复等服务业领域中。在技术发展上也有了很大提高。(1)重复高精度重复精度是指如果动作重复多次,机械手到达同样位置的精确程度。重复精度比精度更重要,如果一个机器人定位不够精确,通常会显示一个固定的误差,这个误差是可以预测的,因此可以通过编程予以校正。重复精度限定的是一个随机误差的范围, 它通过一定次数地重复运行机器人来测定。随着微电子技术和现代控制技术的发展,机械手的重复精度将越来越高,它的应用领域也将更广阔, 如核工业和军事工业等。(2)模块化有的公司把带有系列导向驱动装置的机械手称为简单的传输技术,而把模块化拼装的机械手称为现代传输技术。模块化拼装的机械手比组合导向驱动装置更具灵活的安装体系。它集成电接口和带电缆及油管的导向系统装置,使机械手运动自如。模块化机械手使同一机械手可能由于应用不同的模块而具有不同的功能,扩大了机械手的应用范围, 是机械手的一个重要的发展方向。(3)无给油化为了适应食品、医药、生物工程、电子、纺织、精密仪器等行业的无污染要求,不加润滑脂的不供油润滑元件已经问世。随着材料技术的进步,新型材料(如烧结金属石墨材料)的出现,构造特殊、用自润滑材料制造的无润滑元件,不仅节省润滑油、不污染环境,而且系统简单、摩擦性能稳定、成本低、寿命长。(4)机电一体化由“可编程序控制器- 传感器- 液压元件”组成的典型的控制系统仍然是自动化技术的重要方面;发展与电子技术相结合的自适应控制液压元件,使液压技术从“开关控制”进入到高精度的“反馈控制”;省配线的复合集成系统,不仅减少配线、配管和元件,而且拆装简单,大大提高了系统的可靠性。而今,电磁阀的线圈功率越来越小,而PLC的输出功率在增大,由PLC直接控制线圈变得越来越可能。1.3课题研究的内容主要用S函数编写程序来实现一个非线性系统的控制仿真,本文选择两关节机械手模型进行试验,两关节机械手是简单的一类关节型机器人,通过对两关节机械手12的控制,了解关节的输出位置,估计通常难于准确测量的不确定摩擦力和外部扰动的影响,这样才能保证全局的渐进稳定。因此本文针对两关节机械手的轨迹跟踪问题,通过已建立的数学仿真模型,用MATLAB语言中的S函数编制仿真程序进行位置和速度跟踪来验证该模型是否稳定。2 S函数在系统仿真中的应用MATLAB下提供的Simulink环境是解决非线性系统建模、分析与仿真的理想工具,本章将介绍Simulink建模与仿真方法及在控制系统中的应用。首先简要介绍Simulink的概况,并介绍了Simulink提供的S-function模块和常用模块的应用,以及S函数的编写格式与方法,为后面搭建系统仿真模型打下基础。2.1仿真基础知识2.1.1 MATLAB及Simulink简介本文的仿真实验是在MATLAB软件7环境下进行的。MATLAB是MathWorks公司于1984年推出的一套数值计算软件,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理等若干个领域的计算和图形显示功能。它提供了神经网络工具箱,其中包含了大多数常见神经网络类型,可以方便地以图形界面或函数调用的形式进行仿真。由于本文的研究方法无法直接利用工具箱实现,所以相关的程序都是参考工具箱中的程序自行编制的。仿真就是用物理模型或数学模型代替实际系统进行实验和研究。仿真所遵循的基本原理是相似原理,即几何相似和数学相似。依据这个原理,仿真可分为物理仿真和数学仿真。所谓物理仿真,就是应用几何相似原理,制作一个与实际系统相似但几何尺寸较小的物理模型进行实验研究;所谓数学仿真,就是应用数学相似原理,构成数学模型在计算机上进行实验研究。根据仿真使用的计算机分类,又可把仿真分为模拟计算机仿真、数字计算机仿真和模拟-数字计算机仿真。有时必须有部分实物介入,则称为半物理仿真。本论文采用的是计算机仿真,它的优点是:用一套设备可以对物理性质截然不同的许多控制系统进行仿真研究,而且进行一次仿真的主要准备工作是数字计算机的程序。这比在实际物理模型上安装、接线、调整等准备工作的工作量要小得多,周期短,耗资少。仿真要求抓住事物的本质,在计算机上再现事物的基本特征。仿真过程可以简单分为四步:(1)建立系统的数学模型;(2)建立仿真模型;(3)编制仿真程序;(4)进行仿真实验并输出仿真结果。具体的讲就是,将一个能近似描述实际系统的数学模型进行二次模型化,变成一个仿真模型,然后将他们放到计算机上进行运算的过程就称为仿真。本文用的仿真语言是MATLAB语言。所用的软件版本为MATLAB(R2007a)。2.1.2 MATLAB主要功能简介MATLAB发展至今,已不仅仅是单纯矩阵运算的数学处理软件,其开放式结构吸引了许多优秀人才编写M函数和工具箱,目前已经渗透到了工程计算和设计的各个领域。其中在本文中用到的且与控制系统设计与仿真相关的功能大致有以下各项:(1)数值计算及分析l 向量,矩阵饿运算分析;l 微分方程的求解;l 特殊函数的计算机分析;l 快速傅里叶变换及信号处理矩阵计算;l 数据分析及统计计算。(2)MATLAB的绘图功能l 二维图的绘制;l 特殊坐标图形的绘制与修改。(3)Simulink建模与仿真l Simulink加速器;l 实时工作空间;l 非线性控制系统设计。(4)M文件及M函数的编写与运行2.1.3 Simulink的功能及部分模块介绍Simulink是MATLAB为模块动态系统而提供的一个交互式程序。它允许用户在屏幕上绘制框图来模拟一个系统,并能动态地控制该系统。它采用鼠标驱动方式,能够处理线性、非线性、连续、离散等多种系统。Simulink的存在使MATLAB得功能得到进一步扩展。这种扩展的意义表现在:一是实现了可视化建模,用户通过简单的鼠标操作就可以建立起直观的系统模型,并进行仿真;二是实现了多工作环境间文件互用和数据交换,如Simulink与MATLAB、Simulink与C和Fortran、Simulink与DSP、Simulink与实时硬件工作环境等的信息交换都可以方便地实现;三是把理论研究和工程实际有机地结合在一起。近几年来,在学术界和工作领域,由于Simulink的强大功能和简便的操作,他已经成为在动态系统建模和仿真方面应用最广的软件包之一。概括的说,Simulink是一种可视化动态系统仿真环境。一方面,它使MATLAB得扩展,保留的所有MATLAB的函数的特性:另一方面,它有可视化仿真和编程的特点。借助可视化的特点,使用Simulink可分析非常复杂的控制系统。一般来说,Simulink的功能有两部分,其一是系统建模,其二是系统分析。当然,对于控制系统的设计者来说,这两部分是一个连贯的整体。但是从解决问题的方法上来讲,还是有区别的。因为建立好模型之后,可以在Simulink环境下直接分析,也可以在MATLAB命令窗口下使用MATLAB函数进行分析。在Simulink环境下特别适应于相同的方框图模型,可以直接建立相同的方框图进行仿真。并且,Simulink的命令基本上都由鼠标驱动的。仿真结果可以在Simulink下观察,也可以在MATLAB Workspace中观看。在仿真建立仿真设计图时用到了Simulink元件库,无论是线性系统还是非线性系统,无论是系统建模还是系统仿真,主要都是使用该元件库提供的各种元件模块。因此,在这里就有关的元件作简单地说明。标有“To Workspace”的模块,是输出到工作空间去。标有“Mux”的模块,是多路开关模块。该元件可以将多路的输入向量以某种方式合并后从一路输出,具体得到合并方式可由双击该元件来设置。标有“Demux”的模块,是多路解耦模块。该元件可以将单路的输入向量以某种方式解耦后多路输出,具体的解耦方式可由双击元件来设置。S-function最广泛的用途是定制用户自己的Simulink模块,更具体的讲,它的作用体现在以下几点:(1)用户可以用它来创建新的通用性的Simulink模块;(2)将已存在的C代码合并到仿真中;(3)将一个系统描述成一个数学方程;(4)便于使用图形仿真。在调用模型中的S函数时,Simulink会调用用户定义的S函数方法来实现每一个仿真阶段要完成的任务。这些任务包括:(1)初始化阶段。它是仿真的第一步,先于第一个仿真循环,它初始化S函数,在这个阶段,Simulink完成下面的工作:l 初始化SimStruct包含S函数信息的数据结构;l 确定输入、输出端口的数目和大小;l 确定模块的采样时间;l 分配内存给sizes数组。(2)计算下一个采样点的时间。如果模型使用变步长解法器,那么需要在当前仿真确定下一个采样点的时刻,也即下一个仿真和大小。(3)计算当前主仿真步的输出。在这个调用完成后,模块的所有输出端口都对当前的仿真步有效,也即是说只有在一个模块被更新之后,它才能作为其他模块的有效输入,去影响那些模块的行为。(4)更新模块当前主时间步的离散状态。在这个仿真阶段中,所有的模型块都要进行每个时间步一次的活动为当前时间的仿真循环更新离散状态。在仿真模型建立的同时我们要用到MATLAB当中的S函数。它是一种用程序描述而非控制模块图描述的动态系统,可以使用MATLAB语言来编写,并编译成MATLAB的.m文件格式的文件。S-function运行时由sys参数控制的,所以第一步是先写程序。在MATLAB命令窗口中键入命令edit sfuntempl即可调用模块板程序编辑S函数。第二步就是到非线性模块库中将S-function的系统功能模块复制进来,然后输入程序文件名,以供调用。S-function的设计步骤很简单,只有两步,但是可以实现非常复杂的功能。2.2 S函数的基本结构及封装2.2.1 S函数的概述S函数是 System function 系统函数的简称,是指采用非图形化(即计算机语言,而非 Simulink系统模块)的方式描述的功能模块。在MATLAB中,用户除了可以使用 MATLAB代码编写S函数以外,还可以使用C、C、FORTRAN 或Ada 语言编写S函数,只不过用这些语言编写程序时需要用编译器生成动态连接库(DLL)文件,然后在 Simulink 中直接调用。S函数是由一种特殊的语法构成的,用来描述并实现动态系统的。它采用一种特殊的调用语法,使函数和Simulink求解器进行交互。这种交互与求解器和Simulink仿真模型间的交互相类似:S函数接受来自Simulink求解器的相关信息,并对求解器发出的命令做出适当的响应。S函数作为与其它语言结合的接口,可以使用这个语言所提供的强大功能。例如,使用MATLAB语言编写的S函数称为M文件S函数,它可以充分利用MATLAB所提供的丰富资源,方便地调用各种工具箱函数和图形函数;而使用C 语言编写的S函数被称为CMEX 文件S函数,则可以实现对操作系统和外部设备等的访问,也可以提供与操作系统的接口。另外,S函数可以使用其他多种语言编写,因此可以实现代码的移植,即将已有的代码结合进来,而不需在Simulink中重新实现算法。 S函数中采用非图形化的方式描述系统,其内部采用文本方式输入描述系统的公式、方程,这种方式非常适合复杂动态系统的数学描述,且可以在仿真过程中对仿真进行精确的控制。2.2.2 S函数的基本结构S函数10是有固定格式的,MATLAB语言和C语言编写的S函数的格式是不同的。用MATLAB语言编写的S函数的引导语句为:function sys,x0,str,ts=fun(t,x,u,flag,p1,p2,)其中fun为S函数的函数名,t,x,u分别为时间、状态和输入信号,flag为标志位,标志位的取值不同,S函数执行的任务与返回数据也是不同的:(1)若flag的值为0时,将启动S函数所描述系统的初始化过程,这时将调用一个名为mdlInitializeSizes()子函数,该函数应该对一些参数进行初始设置,如离散状态变量的个数、连续状态变量的个数,模块输入和输出的路数,模块的采样周期个数和采样周期的值、模块状态变量的初值向量x0等。首先通过sizes=simsizes语句获得默认的系统参数变量sizes。得出的sizes实际上是一个结构体变量,其常用成员为:l NumContStates表示S函数描述的模块中连续状态的个数;l NumDiscStates表示离散状态的个数;l NumInputs和NumOutputs分别表示模块输入和输出的个数;l DirFeedthrough为输入信号是否直接在输出端出现,取值可以为0,1;l NumSampleTimes为模块采样周期的个数。按照要求设置好的结构体sizes应该在通过sys=simsizes(sizes)语句赋给sys参数。除了sys外,还应该设置系统的初始状态变量x0、说明变量str和采样周期变量ts,其中ts变量应该为双列的矩阵,其中每一行对应一个采样周期。对连续系统和有单个采样周期的系统来说,该变量为t1,t2,其中t1为采样周期,如果取t1=-1则将继承输入信号的采样周期参数t2为偏移量,一般取为0。(2)若flag的值为1时,将作连续状态变量的更新,将调用mdlDerivatives函数,更新后连续状态变量将由sys变量返回。(3)若flag的值为2时,将作离散状态变量的更新,将调用mdlUpdate()函数,更新后的离散状态变量将由sys变量返回。(4)若flag的值为3时,将求取系统的输出信号,将调用mdlOutputs()函数,将计算得出的输出信号由sys变量返回。(5)若flag的值为4时,将调用mdlGetTimeOfNextVarHit()函数,计算下一步的仿真时刻,并将计算得出的下一步仿真时间由sys变量返回。(6)若flag的值为9时,将终止仿真过程,将调用mdlTerminate()函数,这时不返回任何变量。S函数中目前不支持其他的flag选择。形成S函数的模块后,就可以将其嵌入到系统的仿真模型中进行仿真了。在实际仿真过程中,Simulink会自动将flag设置成0,进行初始化过程,然后将flag的设置为3,计算该模块的输出。一个仿真周期后,Simulink先将flag的值分别设置为1和2,更新系统的连续和离散状态,再将其设置成3来计算模块的输出值,如此一个周期接一个周期地计算,直至仿真结束条件满足,Simulink将把flag的值设置成9,终止仿真过程。2.2.3 S函数模块的封装右键点击S函数模块,选择MASK选项,弹出封装编辑框,在这里有四个栏,分别为图标、参数、初始化、文档。其中参数最为重要。图标即模块上显示的图形,可以编辑自己需要的文字,也可以用图片包装模块。初始化可以对模块参数进行默认设置,文档中可以编写模块说明和帮助链接。而最重要的参数栏中,要把模块对应的S函数的参数列出来,每一个参数有三种形式:编辑、下拉框、复选框。如果是下拉框形式,要编辑对应的选项。如果S函数需要响应不同操作,可以对每一个参数选择编写对应的回调函数。封装编辑好后,右键点击S函数模块选择LOOK UNDER MASK选项,在弹出的对话框中,首先填写原文件,把编译过的文件放置在当前目录下,在对话框中正确填写文件名(不写后缀),然后再把封装时定义的参数变量按顺序写在参数框中,每个参数用逗号隔开,注意变量名必须与封装填写的名称一致,且数目相同。最有一个框不用填写。点击OK。则完成了对S函数的模块封装。2.3 S函数工作原理了解S函数的工作原理对于用户掌握S函数的编写方法是非常有用的,对用户对于 Simulink 的仿真原理的理解也是很有帮助的。本节介绍S函数的工作原理。 在具体介绍S函数的工作原理之前,首先需要回顾一下Simulink模块的工作原理。 Simulink 中的每个模块都有三个基本元素:输入向量、状态向量和输出向量,分别表示为u,x和 y。图1反映了它们之间的关系。在Simulink模块的三个元素中,状态向量是最重要的,也是最灵活的概念。在Simulink中状态向量可以分为连续状态、离散状态或两者的结合。输入、输出及状态的关系可以用状态方程描述:输出方程:y=f0t ,x ,u (1)连续状态方程:dx=fdt ,x ,u (2)离散状态方程:xk+1=fut ,x ,u (3)其中x=dx xk+1 ,如图1所示。状态(x)输入输出yu模块图1 Simulink模块的基本模型Simulink在仿真时将上述方程对应不同的仿真阶段,它们分别是计算模块的输出、更新离散状态、计算连续状态的微分。在仿真开始和结束,还包括初始化和结束仿真两个阶段。在每个阶段,Simulink都反复地调用模块。 由于积分时,对仿真步长有要求,所以此时需要将仿真步长细化。完成一个仿真循环就进入下一个仿真步长,如此循环直至仿真结束。在调用模型中的S函数时,Simulink会调用用户定义的S函数的例程来实现每个仿真阶段要完成的任务。这些任务包括:(1)初始化:仿真开始前,Simulink在这个阶段初始化S函数,完成的主要工作包括: l 初始化包含S函数所有信息的结构体SimStruct; l 确定输入输出端口的数目和大小; l 确定模块的采样时间; l 分配内存和Sizes数组。 (2)计算下一个采样时刻:如果模型使用变步长求解器,那么就需要在当前仿真步长内确定下一个采样点的时间,也即下一个仿真步长的大小。 (3)计算输出:计算所有输出端口的输出值。 (4)更新离散状态:此例程在每个仿真步长处都要执行一次,为当前时间的仿真循环更新离散状态。 (5)数值积分:这个阶段只有模块具有连续状态和非采样过零点时才会存在。如果 S函数存在连续状态,Simulink 就在细化的小时间步长中调用S函数的输出(mdlOutputs)和微分(mdlDerivatives)例程。如果存在非采样过零点,Simulink将调用S函数中的输出(mdlOutputs)和过零检测(mdlZeroCrossngs)例程,以定位过零点。关于仿真的概念:仿真步长(Simulation step)、仿真阶段(Simulation stage)。为了深入了解S函数的工作原理,还需了解一个概念:仿真循环(Simulation loop)。一个仿真循环就是由仿真阶段按一定顺序组成的执行序列。对于每个模块,经过一次仿真循环就是一个仿真步长,而在同一个仿真步长中,模型中各模块的仿真按照事先排好的顺序依次执行。这个过程可以用图 2表示。 从图2中可以看出,在仿真开始时,Simulink首先对模型进行初始化,此阶段不属于仿真循环。在所有模块都初始化后,模块进入仿真循环,在仿真循环的每个阶段,Simulink都要调用模块或者S函数。 数值积分初始化模块计算下一个采样时间点(仅适用变采样速率模块)计算输出更新离散状态计算导数计算输出计算导数检测过零事件仿真结束图2 S函数仿真流程3两关节机械手仿真模型为了验证机械手模型的稳定性,选两关节机器人系统(不考虑摩擦力)进行仿真,其动力学模型为: M+B,+W+= (4)式中 关节角位移量; M惯性矩阵; B,离心力和哥氏加速度项; W重力项; 各种误差和扰动; 控制力矩。两关节机械手仿真模型: M=v+q1+2cos2q1+q2cos2q1+q2cos2q1 (5) B,=-q22sin2-q21+2sin2q21sin20 (6) W=15gcos1+8.75gcos1+28.75gcos1+2 (7)式(5)(7)中,v=13.33, q1=8.98, q2=8.75, g=9.8。误差扰动和系统的初始状态分别为:M0=0.8*M,B0=0.8*B,W0=0.8*W,dM=M0-M,dB=B0-B,dW=W0-W。控制参数取:K1=diag10,10, K2=diag10,10,=1.5 。4 两关节机械手的设计分析机器人技术作为高科技的一个重要研究领域,普遍受到各国政府的重视,已经成为制造业中不可缺少的重要装备和手段,同时也成为衡量一个国家制造业水平和科技水平的重要标志。通常情况下,机械手在几个目标点之间运动,这就需要在实际工作环境中对机械手进行调试,多数情况下都采用手控调试,这就对调试人员有较高的要求,并且由于实际环境的千变万化,很难在短时间内找到最优的轨迹,而机械手运动仿真系统,可以为此提供一个方便的、灵活的手段。本文着重研究了 Matlab/Simulink环境中如何使用S-function模块建立符合要求的机械手模型,正确实现理论轨迹跟踪,继而进行了机械手的动力学模型仿真,将模型仿真中得到的运动轨迹图进行分析验证理论计算的结果;模块仿真,使仿真从单纯的抽象的数字化仿真中走出来,更加直观形象;仿真轨迹的优化,提高了机械手的工作效率;为串联机械手的进一步研究奠定了基础。S函数模块可以描述任意复杂的系统。本文选择了两关节机械手模型,根据其数学模型搭建出仿真模型,并利用MATLAB语言中的S函数模块来描述该系统,以实现位置和速度的跟踪控制。然后利用MATLAB软件对这个非线性系统进行仿真。为了验证该模型的稳定性,根据两关节机械手仿真模型及选取的控制参数,采用S函数编写程序,并在Simulink中搭建仿真模型进行仿真。搭建该机械手仿真模型的选取以下模块:(1)标有“S-function”的模块;(2)标有“Sine Wave”模块;(3)标有“To Workspace”的模块;(4)标有“Mux”的模块;(5)标有“Demux”的模块。搭建好仿真模型后,根据两关节机械手的数学模型及编写好的S函数程序进行封装。之后整个系统就可以由S函数模块来完成整个机械手的的操作。仿真结果如图3、图4所示。图3 关节1和关节2的位置跟踪图4 关节1和关节2的控制输入从图3中我们可以很明显的看出,在仿真开始时刻,轨迹跟踪曲线误差比较大,随后关节1和关节2实际输出轨迹与期望输出轨迹几乎完全重合。说明设计的系统具有良好的跟踪性。从图4中可以看出关节1和关节2控制输入曲线变化规则扰动较小,说明控制器的输出比较稳定。仿真程序的控制主程序:chap4_1.sim,如图5所示。图5 simulink主程序5结论本文针对两关节机械手的轨迹跟踪问题,通过已建立的数学仿真模型,进而用matlab语言中的S函数编制仿真程序进行位置和速度跟踪试验。试验结果验证了,该模型能有效的克服机器人系统中的不确定因素的影响,提高系统对各种扰动、非线性因素的适应能力。该模型具有良好的稳定性,能实现机械手的位置和速度精确的控制。通过仿真结果可以看出这种方法的可行性。结束语从选择毕业论文课题起,通过收集资料、查阅书籍,到最终定稿的全过程,有艰辛、有困惑、有汗水,但更多的是收获知识的快乐,是聆听教诲的顿悟,是获得成功的喜悦,更是发自内心的浓浓的感恩。在同学和老师的帮助下终于完成了计划中所需完成的内容,使我学到了许多书本上无法学到的知识,也使我深刻体会到机器人技术应用领域的广泛。同时也对机器人仿真产生了更大的兴趣。通过这次毕业设计,对我所学的知识进行了总结,让我更深刻的了解到理论知识在实际中的应用。在这次毕业设计中,主要是非线性系统的应用,本课题选择两关节机械手模型进行试验,通过选取的机械手模型,设置控制参数设计出仿真方案,对机械手模型进行轨迹跟踪试验。由于S函数模块可以描述任意复杂的系统,因此整个系统是采用S函数编写程序进行仿真,以实现位置和速度的跟踪控制。通过两关节机械手模型的设计,不仅让我对学过的S函数知识有了很多的巩固,对机械手控制过程有了较深的理解,在设计过程中,我认真学习了机械手系统相关的知识,极大地拓宽了我的知识面。虽然遇到了不少困难,但当我通过自己查资料、向导师请教,当设计出解决方案并成功实现时,那种成就感足以满足鼓励自己加班加点的辛苦。从而使我在大学里学习到的理论知识在根本上得到了一次完整的实践和提高。也为我即将面临的工作奠定了很好的基础。参考文献1 易继楷,侯媛彬. 智能控制技术. 北京:北京工业大学出版社, 19992 杨国军.机械手逆运动学神经网络建模与仿真. 电子工业出版社, 20053 傅会璇. Matlab神经网络应用设计. 北京:机械工业出版社, 20104 吴瑞祥.机器人控制技术。北京:北京航天航空大学出版社, 19955 徐元昌.工业机器人M. 北京:中国轻工业出版社, 19986 蔡自兴.机器人学M. 北京:清华大学出版社, 20007 贾秋玲.基于MATLAB/Simulink系统仿真、分析及设计.西北工业大学出版社, 20068 孙志强.神经网络理论与Matlab实现. 北京:电子工业出版社, 20079 周璐,李翔. MATLAB神经网络仿真与应用. 北京:科学出版社, 200310 薛定宇,张晓华. 控制系统计算机辅助设计-MATLAB语言与应用. 北京:清华大学出版社, 200611 孙福春,朱纪洪. 机器人学导论. 电子工业出版社, 200312 何广平,殷际英. 关节型机器人. 化学工业出版社, 2003 13 王云亮,魏克新.MATLAB语言与自动化控制系统设计. 机械工业出版社, 200214 F Sun, C Fu, H Li, et al. Robot Discrete Adaptive Control Based on Dynamic Inversion using Dynamical Neural Networks15 J M Ahuactzin, K Gupta. A Motion planning based approach for inverse kinematics ofredundant robots: the kinematical roadmap附录S函数控制子程序:chap4_1ctrl.mfunction sys,x0,str,ts = spacemodel(t,x,u,flag) switch flag,case 0, sys,x0,str,ts=mdlInitializeSizes;case 3, sys=mdlOutputs(t,x,u);case 2,4,9 sys=;otherwise error(Unhandled flag = ,num2str(flag);end function sys,x0,str,ts=mdlInitializeSizessizes = simsizes;sizes.NumOutputs = 2;sizes.NumInputs = 6;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = ;str = ;ts = 0 0;function sys=mdlOutputs(t,x,u)qd1=u(1);dqd1=-pi*sin(pi*t);ddqd1=-pi2*cos(pi*t);qd2=u(2);dqd2=pi*cos(pi*t);ddqd2=-pi2*sin(pi*t); dqd=dqd1;dqd2;ddqd=ddqd1;ddqd2; q1=u(3);dq1=u(4);q2=u(5);dq2=u(6);dq=dq1;dq2; e1=qd1-q1;e2=qd2-q2;e=e1;e2;de1=dqd1-dq1;de2=dqd2-dq2;de=de1;de2; v=13.33;q01=8.98;q02=8.75;g=9.8;M=v+q01+2*q02*cos(q2) q01+q02*cos(q2); q01+q02*cos(q2) q01;B=-q02*dq2*sin(q2) -q02*(dq1+dq2)*sin(q2); q02*dq1*sin(q2) 0;W=15*g*cos(q1)+8.75*g*cos(q1+q2); 8.75*g*cos(q1+q2);M0=0.8*M;B0=0.8*B;W0=0.8*W; dM=M0-M;dB=B0-B;dW=W0-W; c1=20;c2=20;C=c1 0;0 c2;s=de+C*e; F=2;if F=1 K1=10 0;0 10; K2=10 0;0 10; tol=M*(ddqd+K1*de+K2*e)+B*dq-w; elseif F=2 temp=abs(dM)*abs(ddqd+C*de)+abs(dw)+abs(dB)*abs(dqd+C*e)+0.10; gama=temp(1) 0;0 temp(2); tol=M0*(ddqd+C*de)+B0*(dqd+C*e)-w0+gama*sign(s);endsys(1)=tol(1);sys(2)=tol(2);被控对象子程序: chap4_1plant.m%S-function for continuous state equationfunction sys,x0,str,ts=s_function(t,x,u,flag) switch flag,%Initialization case 0, sys,x0,str,ts=mdlInitializeSizes;case 1, sys=mdlDerivatives(t,x,u);%Outputs case 3, sys=mdlOutputs(t,x,u);%Unhandled flags case 2, 4, 9 sys = ;%Unexpected flags otherwise error(Unhandled flag =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田螺姑娘考试试题及答案
- Unit 4 The Earth 单元核心素养培优卷(含答案解析)七年级上册英语沪教版
- 2025年公需科目大数据时代的互联网信息安全考试试题及答案
- 2025年高级汽车驾驶员资格证考试题库(含答案)
- 2025年高级会计师资格考试《高级会计实务》试题及答案
- 中考试题压轴题及答案
- 中控初级试题及答案
- 食品营养题库及答案
- 《薪资福利管理办法》
- 两江新区疫情管理办法
- 《美发师的职业道德》课件
- 2023年江苏省宝应县事业单位公开招聘辅警33名笔试题带答案
- 2025德州市禹城市梁家镇社区工作者考试真题
- 中国老年糖尿病诊疗指南(2024版)解读课件
- 2025-2030中国手机无线充电行业市场现状供需分析及投资评估规划分析研究报告
- 《老子与道德经智慧》课件
- 绞磨工考试试题及答案
- 胰岛素皮下注射
- GB 4789.3-2025食品安全国家标准食品微生物学检验大肠菌群计数
- 危货运输企业安全生产管理制度汇编
- 血液透析患者的心理护理
评论
0/150
提交评论