为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于MATLAB的自动控制原理虚拟实验平台开发毕业论文

2019-01-23 20页 doc 1MB 34阅读

用户头像 个人认证

不系舟红枫

从教近30年,经验丰富,教学水平较高

举报
基于MATLAB的自动控制原理虚拟实验平台开发毕业论文 本 科 生 毕 业 论 文(或设计) (申请学士学位) 论文题目 基于MATLAB的自动控制原理虚拟实验 平台开发 目录 1摘要 Abstract 1 21 绪论 21.1 本文研究背景 21.2 本文的选题意义 1.3 本文的任务和要求 3 1.3.1 本文任务 3 1.3.2 本文要求 3 2 自动控制原理虚拟实验平台总体概述及其实现工具介绍 3 2.1 MATLAB工具介绍 3 2.2 Simulink工具简单...
基于MATLAB的自动控制原理虚拟实验平台开发毕业论文
本 科 生 毕 业 论 文(或设计) (申请学士学位) 论文目 基于MATLAB的自动控制原理虚拟实验 平台开发 目录 1摘要 Abstract 1 21 绪论 21.1 本文研究背景 21.2 本文的选题意义 1.3 本文的任务和要求 3 1.3.1 本文任务 3 1.3.2 本文要求 3 2 自动控制原理虚拟实验平台总体概述及其实现工具介绍 3 2.1 MATLAB工具介绍 3 2.2 Simulink工具简单介绍 4 2.3 GUI简单介绍与可视化接口环境 4 2.3.1 GUI概念介绍 4 2.3.2 GUI图形用户界面的打开 5 2.4 自动控制原理简单介绍 7 3 虚拟实验平台总体概述 7 3.1 虚拟实验平台设计原则 7 3.2 虚拟实验平台设计界面模块结构及功能 7 3.2.1 平台模块结构 7 3.2.2 平台功能 8 4 自动控制原理实验在虚拟实验平台的实现 9 4.1 平台界面的总体要求 9 4.2 主界面的设计 9 4.3 线型系统时域分析界面 13 4.3.1 时域分析法的介绍 13 4.3.2 时域分析界面的设计 14 4.4 线型系统根轨迹分析界面 17 4.4.1 根轨迹法的介绍 18 4.4.2 根轨迹界面的设计 18 4.5 线性系统频域分析界面 19 4.5.1 频域法的介绍 19 4.5.2 频域分析界面的设计 20 4.6 控制系统校正实验界面 22 4.6.1 控制系统校正介绍 22 4.6.2 控制系统校正实验界面的设计 22 5 结论 25 参考文献 26 附录1 27 致谢 55 基于MATLAB的自动控制原理虚拟实验平台开发 摘要:自动控制原理是高等工科院校自动化专业非常重要的一门专业基础课。随着现代科学技术的飞速发展和人类社会工业化的推进,自动控制原理和技术已经在宇宙航空、机器人操作、环境治理、核能研究等高科技领域的应用越来越广泛,成为了人类社会和人们生活中不可或缺的一部分。在理论的学习中,由于理论概念太过抽象、计算量大等难题,给现代教学和学生学习带来了诸多的不便,而实验课对相关的实验课程和理论作出严谨的科学演示、分析以及论证,大大地提高了学生对自动控制理论的理解,但传统实验课由于受到实验资源不足、设施简单、仪器误差较大等原因,为教学实施带来了影响,因此,我们利用MATLAB中的图形用户界面设计功能(GUI)建立虚拟实验平台来研究自动控制原理,不仅提高了实验教学的效率,改善了实验精度,而且大大提高了学生的学习热情和增强了处理问题的能力。 关键词:自动控制原理,MATLAB,虚拟实验平台,GUI Virtual Experiment Platform Development of Automatic Control Principe Based on MATLAB Abstract: Automatic control theory is a very important professional basic course of automation major in engineering colleges.With the rapid development of modern science and the industrialization of technology and human society , automatic control theory and technology has been applied in the field of high technology, robot, aerospace, nuclear energy and other environmental governance research more widely, which has become an integral part of human society and life.In the theoretical study, the theory is too abstract,which brings a lot of inconvenience to the modern teaching and learning. The the related experimental courses and theory take many analysis and demonstration, which greatly enhance the students' understanding of the theory of automatic control.Due to the experimental resources, simple facilities, instrument error and other reasons, the traditional experimental teaching impact the implementation of teaching.We study the principle of automatic control of the virtual experiment platform based on graphical user interface designed in MATLAB, which not only improves the efficiency of experiment teaching and the accuracy of the experiment, but also greatly enhance the enthusiasm of students and the ability to deal with problems. Keywords: Automatic Control Theory ,MATLAB ,Virtual Experimental Platform ,GUI 1 绪论 1.1 本文研究背景 对于大学生而言自动控制原理是大学阶段的自动控制工程、机器自动控制操作、物流设备工程等专业的重要的专业基础课程,涉及到自动控制系统的模型建立、系统分析、系统设计的相关基本理论和相关技术设计。它的典型特点是概念比较抽象,数字含量巨大,计算相当复杂,从而导致学生比较难于理解和消化,实验是理解和消化相关课程内容的非常重要的途径。目前相当多的大学高校的实验教学仍处于传统模拟实验阶段,通过利用集成封闭的传统实验箱,将相应的有源网络模块整个连接成了典型环节和系统,然后施加典型信号,通过示波器仔细观察实验结果。然而对于这种实验方法仍存在明显不足,比如说(1)实验室的实验箱集成度很高,从而让学生对实验目的和实验出现盲目性,所以很容易导致损坏仪器设备。(2)学生的理论性知识和实验动手操作是互相分开的,导致了学生缺乏主动性学习和创造性性学习。(3)因为元件的非线性等一些元素,导致了实验结果与理论知识差异较大,相距甚远。 为了改变这种现象,我们通过利用MATLAB中的具有可视化编程能力的图形用户界面(简称GUI)和控制系统工具箱中的有关的丰富的库等,开发出了基于MATLAB的自动控制原理虚拟实验平台。 1.2 本文的选题意义 自动控制原理虚拟实验平台就是把真实的相关的自动控制环节、系统和数学建模有机地结合的一个实验操作平台。学生不仅可以在平台上修改相关的实验参数、改变相关的输入信号、观察相应的响应情况,同时还可以观察数学模型的具体的变化情况。 MATLAB是面对科学计算的高性能可视化编程仿真软件,GUI是一种的图形用户界面。通过MATLAB/GUI设计和开发自动控制原理虚拟实验平台,不但能很好地解决传统实验存在的问题,加深对自动控制原理理论课程内容的理解,更能使学生摆脱复杂的数学公式,对新知识产生浓厚的探索兴趣。 在设计过程中,我通过查阅相关的资料,增强了自己的自我学习能力和思考能力,同时通过向老师和同学的虚心求教,增强了自己的沟通能力。 1.3 本文的任务和要求 1.3.1 本文任务 本次毕业设计研究的任务是基于MATLAB的自动控制原理虚拟实验平台的实现,简单的要求是用MATLAB中的GUI建成一个可视化的图形开发平台,在这个平台上去实现自动控制原理各个实验要求和实验功能,验证实验原理。 1.3.2 本文要求 通过自动控制原理虚拟实验平台实现线型系统的时域分析、线性系统的根轨迹分析、线型系统的频域分析、控制系统的串联校正实验,然后重点介绍线性系统的时域分析的具体的原理、方法、实现的功能、实验操作过程以及仿真图形。 2 自动控制原理虚拟实验平台总体概述及其实现工具介绍 2.1 MATLAB工具介绍 我们在设计自动控制原理虚拟实验平台的时候需要用到MATLAB设计工具,以此搭建我们所想要的虚拟实验平台,为了对后面更好地的设计与实验,我们需要了解MATLAB的发展历史以及它的功能,掌握软件的实际操作原理。 在20世纪80年代以来,为了研究某种问题,各种计算机语言接连出现,当然,在数学研究当中,为了更好地更方便地数值计算、科学研究、工程计算等其他方面,MATLAB软件应运而生。MATLAB是由美国人MathWorks公司推出,是MATrix LABoratory的缩写,中文名称是矩阵实验室。自推广以来,得到了社会上的普遍认同以及广泛的应用,发展至今推出了各种版本,里面的功能越来越丰富和强大,同时它的语言易于掌握,所以深受各大高等学校的喜爱以及科学研究人员的使用,尤其在欧美高校,MATLAB软件的使用成为了学生的必备的学习技能。 毋庸置疑,MATLAB的功能相当强大,可以用于数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真以及图形处理,同时具有内容强大的工具箱进行设计开发。MATLAB是一个具有很强的开放性软件,除了可以利用的内部函数外,我们可以自己对里面的源文件进行修改或者可以加入自己编写好的文件进行设计使用。 2.2 Simulink工具简单介绍 Simulink是Math Works软件公司在1990年推出来的,它是实现控制系统进行构造模型、仿真设计和分析的软件包,简单来说就是MATLAB软件功能的一种拓展,它提供了不同功能的基本系统模块,我们只要知道这些模块的输入、输出以及它的功能,而不必知道各种模块的里面具体的功能与实现,只要通过各种模块的调用与连接就能构造出我们所需要的系统模型,文件存储形式以.mdl形式存取,最后我们可以基于此进行方针与分析。对于简单的控制系统来说,我们可以利用相关的函数和相关的线性方程进行求解,但对更为复杂的系统来说,我们之前的方法就不可以实现了,所以则必须使用Simulink进行仿真与分析。 2.3 GUI简单介绍与可视化接口环境 2.3.1 GUI概念介绍 由菜单、窗口、对话框等各种图形元素构成的用户界面被叫做图形用户界面,英文名称是Graphical User Interface,简称GUI。它是计算机与用户进行信息交流的窗口和平台,在自动控制原理虚拟实验平台设计当中它赋予着主要设计工作。对于GUI操作应该是易于理解的便于操作的,当我们点击某项操作的时候,用户图形界面就已经开始了它的功能操作。MATLAB作为一款强大的科学计算软件,同时也提供了图形用户界面设计的功能,它包括了三类图形用户界面对象,包括用户界面控件对象、下拉式菜单对象和快捷菜单对象。根据我们所想要的图形用户界面对象,我们可以设计出界面非常友好、操作相当方便的图形用户界面。 在MATLAB软件中,为GUI开发提供了一个非常方便且高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集,所有GUI设计都被MATLAB支持在这个集成的环境中。GUIDE将所有设计好的GUI设计模型保存在一个.fig文件当中,并且同时生成了.m文件,对于.fig文件设计,它包括了GUI图形窗口以及图形窗口对象,对于.m文件而言,它包括了GUI设计、控制函数及其定义为子函数的用户控件回调函数。GUIDE在GUI设计过程中直接自动生成了.m文件框架,它所具有的优点如下: (a).m文件在.fig文件生成的同时就已经生成了一些必要的代码。 (b)管理图形对象句柄并执行回调函数的子程序。 (c)支持自动插入回调函数原型。 (d)提供了管理全局变量的便利途径。 2.3.2 GUI图形用户界面的打开 在MATLAB中打开GUI可以以下的操作方法 (1) 选择菜单栏上的“File”选项,再选择“New”选项,最后得到“GUI”命令。 (2) 在命令窗口(commend Windows)当中输入“Guide”命令或者输入“Guide Filename”,同样可以打开可视化接口。 (3) 选择菜单栏上的“GUIDE”快速启动按钮,可以直接打开界面。 MATLAB软件为GUI图形用户界面设计总共准备了4种模板,包括Blank GUI(默认)、GUI with Uicontrols(带控件对象的GUI模板)、GUI with Axes and Menu(带坐标轴与菜单的GUI模板)与Modal Question Dialog(带模式问话对话框的GUI模板)。如下图 图2-1 GUI的初始化界面 如果没有设计好的可视化图形文件,我们要选择空白的可视化文件,即Blank GUI(空白),然后点击OK按钮,就会显示出GUI设计窗口,如下图2-2。 图2-2 GUI设计窗口 从GUI设计窗口可以看出,共有五个设计工具,它们分别是: (a) 对象属性查看器(Property):可以查看每个对象的属性值,同时可以修改设置对象的属性值。 (b) 菜单编辑器(Menu Editor):对下拉式菜单进行创建、设计和修改。 (c) 位置调整工具(Alignment Tool):多个对象通过该工具左右、上下进行位置进行调整。 (d) 对象浏览器(Object Browser):可以观察当前设计阶段的各个句柄图形对象。 (e) Tab顺序编辑器(Tab Order Editor):通过该工具,设置当按下键盘上的Tab键时,对象被选中的先后顺序。 通过控件的布局,相应的生成了m函数文件,对于空间的性能,我们可以通过在回调函数里面进行相应的修改,以达到自己的要求,通过这样的方法可以很方便的设计出友好的,简洁的,功能强大的图形界面。 2.4 自动控制原理简单介绍 随着计算机技术的飞快的发展和广泛的应用,自动控制原理理论和技术在宇宙航空、机器人控制、导弹制导卫星发射和核能等高科技领域方面的应用越来越广泛。同时自动控制原理技术的应用范围现在已扩展到生物、医学、环境等生活中的其他领域,成为人们生活当中不可或缺的一部分。随着人类社会的进步和人们生活水平的提高,自动控制原理技术必将在人类的未来当中对于人类去认识自然改造自然发挥着难以想象的作用。所以对于一个工程技术人员,学习自动控制原理有关的知识有必要的。同时大学阶段的学习已经把自动控制原理当作一门专业基础课程,尤其是电气自动化、电力系统、船舶与海洋工程等相关的专业都已经开设了这门课程。 自动控制原理的主要内容包括控制系统数学模型、时域分析法、根轨迹分析法、频域分析发以及控制系统校正与综合等方面知识。它们大都将在这个虚拟实验平台得以实现与研究分析。 3虚拟实验平台总体概述 3.1 虚拟实验平台设计原则 本次所设计的虚拟实验平台是基于MATLAB7.0以上的版本所开发出来的,在整个设计当中,为了更好地让大家看清整个的设计流程,我们是采用的自上而下、由上一级转到下一级而设计。在设计过程中,我们首先要确定一个总体框架,然后我们再确定好我们要研究的几个实验原理项目作为这个框架的子系统,之后在各个实验原理上设计两三个对应这个实验原理的功能实现、认证以及分析,在编程设计方面,我们要由下而上去设计,设计好每个部分的编程代码,最后实现一个整体虚拟实验平台的开发 3.2 虚拟实验平台设计界面模块结构及功能 3.2.1 平台模块结构 该虚拟实验平台设虚拟实验平台有四大部分构成,包括线型系统时域分析、线性系统频域分析、线型系统根轨迹分析以及控制系统串联校正,如下结构图: 图3-1 虚拟实验平台结构图 3.2.2平台功能 该虚拟实验平台的功能是以根据生活中关于科学研究、教学活动、学生实验探究为目的所完成的,所以该平台的功能要设计成集成的、多样化的一个实验平台,具体的功能如下: (a)虚拟实验平台输入参数形式多样化:如传递函数输入的形式,可以任意改变分子分母的参数。 (b)虚拟实验平台绘图功能:通过参数的设定,我们可以得到我们所想要的响应曲线或是波形图等其他仿真图形。 (c)虚拟实验平台分析功能:比如在时域分析中我们可以得到阶跃响应性能指标(峰值时间、超调量、调节时间),在频域分析中我们可以得到谐振频率、谐振峰值、频带、零频。 (d)控制系统校正功能:对所需要的校正的控制系统进行超前校正和滞后校正,可以得到校正前后的bode图和阶跃响应曲线以及各种性能指标。 4 自动控制原理实验在虚拟实验平台的实现 4.1 平台界面的总体要求 我们在设计我们所需要的界面基本上都会选择GUI作为优选工具,以达到事半功倍的效果。该设计的虚拟实验平台包括三级界面,第一级界面就是我们的主界面,由主界面可以进入到第二级界面,包括线性系统时域分析界面、线性系统频域分析界面、线性系统根轨迹分析界面控制系统校正实验界面。每个第二级界面都可以进入到实现它的某种功能的第三级界面,对于线型系统时域分析界面来说,它的所实现的波形图就在该界面,所以不需要再进入下一级界面面,对于线性系统频域界面来说,下一级界面包括了奈奎斯特曲线以及伯德图,对于线性系统根轨迹分析界面来说,下一级界面有开环零极点对根轨迹的影响等,对于控制系统的串联校正实验界面来说,包括了基于频域法的超前校正及基于频域法的滞后校正界面。所以对于界面设计来说,我们是由上而下来设计的。 4.2 主界面的设计 我们设计的主界面能够让用户很快地了解该虚拟实验平台的大概的功能,并且可以通过简单的操作在图形用户界面上进行程序的编写。该界面有四个窗口空间组成组成,在各自的窗口中我们可以通过图形用户界面可以很方便的了解自动控制原理的几个典型的实验模型,下面我们来介绍主界面的设计,具体步骤如下: 首先我们点击MATLAB界面工具栏上的快速启动图标,可以直接启动一个GUIDE的集成开发环境的对话框,或者在file菜单中点击new,在点击GUI也是可以,当然了直接在命令窗口(Command Window)上输入GUIDE命令也是可以的,最好的启动方式还是第一种方法。选择空白操作界面,保存文件名dianxinghuanjie.fig,则打开了一个设计界面,同时也自动生成了dianxinghuanjie.m文件。我们在GUIDE的设计编辑区内(Layout Area)内从工具栏上拖入一个静态文本框(Static Text),静态文本是在对话框中显示我们所需要的说明性文字,双击该控件,我们可以打开一个对象属性框,或者可以通过单击该控件点击对象属性查看器(Property Inspector)也可以打开,选择String属性,该属性的取值是字符串,它定义了控件对象的说明性文字,写入“自动控制原理虚拟实验平台”用来给用户提供必要的提示,但用户不能在程序的执行过程种中来修改文字说明, 如果要改变字体的大小粗细,可以点击FontWeight属性,它定义了字体的粗细,点击FontSize属性,它定义了字体的大小,属性的取值是数值,点击ForegroundColor属性,定了控件对象的说明性文字的颜色,其默认颜色是黑色,利用上述的方法,再点击一个静态文本框,写入“欢迎使用”。 然后选择坐标轴(Axes)控件,它是用来显示图形和图像,在这里我们要添加一张图片,我们用imshow函数来实现,在之后生成的M文件里添加imshow(’Inco\Incol.png’)这个语句,选择面板控件(Panel),再双击属性查看器,修改属性Title为“实验选择”,再调整标题文字方向位于正上中央,在拖入四个按钮控件(Push Button),按钮控件是最常用的控件对象,它的主要特征是在矩形框上加上文字说明,一个按钮只代表一种操作。之后在String的属性下分别改成线型系统时域分析、线型系统频域分析、线性系统根轨迹分析、控制系统校正实验。 对于上面四个控件按钮我们也可以再进行菜单的建立,我们可以通过GUI设计窗口的工具栏上的Menu Editor 命令按钮打开,还可以在菜单栏中点击“Tool”,再点击“Menu Edior”(菜单编辑器)。如下图4-1,该图是已经编辑好的菜单编辑器。 图4-1 设置菜单后的菜单编辑器 通过该图形我们可以看到,菜单编辑器的左上角的第一个按钮的作用是用来创建一级菜单项,第二个按钮是用来使用来创建一级菜单的子菜单,要想创建这个子菜单,我们必须要先点击一级菜单项后,选中左上角的第二个按钮来创建。我们可以发现,创建某个菜单项后,图框的右边就会显示该菜单的相关的属性,我们可以在这里设置好我们的属性,我们先创建四个一级菜单,分别在右边Label属性中修改为实验一、实验二、实验三和实验四,再在各自的子菜单中的属性项里修改为线性系统时域分析、线型系统根轨迹分析、线性系统频域分析和控制系统的串联校正实验。同时也分别在各自的Tag属性中修改,分别为One、Time、Two、Rlocus、Three、Frequency、Four、Modify。Tag属性是用来定义控件的标识值,取值为字符串,在任何程序中都可以通过该标识值来控制该控件。同时我们必须在各自对应的Callback属性中进行修改。 (1)菜单实验一的Callback属性: dianxinghuanjie('One_Callback',hObject,eventdata,guidata(hObject)) 子菜单线性系统时域分析的Callback属性: dianxinghuanjie('Time_Callback',hObject,eventdata,guidata(hObject)) (2)菜单实验二的Callback属性: dianxinghuanjie('Two_Callback',hObject,eventdata,guidata(hObject)) 子菜单线性系统根轨迹分析属性: dianxinghuanjie('Rlocus_Callback',hObject,eventdata,guidata(hObject)) (3)菜单实验三的Callback属性: dianxinghuanjie('Three_Callback',hObject,eventdata,guidata(hObject)) 子菜单线性系统频域分析属性: dianxinghuanjie('Frequency_Callback',hObject,eventdata,guidata(hObject)) (4)菜单实验四的Callback属性: dianxinghuanjie('Four_Callback',hObject,eventdata,guidata(hObject)) 子菜单控制系统校正实验的Callback属性: dianxinghuanjie('Modify_Callback',hObject,eventdata,guidata(hObject)) 最后我们再一次保存设计好的dianxinghuanjie.fig文件,选择工具栏上的运行按钮,同时也自动生成了dianxinghuanjie.m文件。得到主界面图形,如图4-2: 图4-2 主界面图 4.3 线性系统时域分析界面 4.3.1 时域分析法的介绍 时域分析法是以拉普拉斯变换为工具,利用传递函数直接在时间域上研究自动控制系统的一种方法。它通过响应曲线来分析控制系统的一些性能,具有直接而全面的优点,但仍有一些不足,比如在分析的过程当中计算量较大,尤其是对于高阶系统。时域响应指的是系统在外部的输入(设定值输入或是扰动输入)作用下的输出过程,典型的时域响应有单位阶跃响应、单位脉冲响应、单位斜坡响应、单位加速度响应、单位正弦响应。 本时域分析法的设计以典型输入的单位脉冲输入、单位阶跃输入以及单位斜坡输入为主的输入,来观察各个的响应曲线进行分析,通过阶跃响应性能指标(包括峰值时间、调节时间、上升时间、超调量)来研究问题和分析问题,主要针对一阶或二阶系统。对于分子与分母参数的设定是任意的随机的,这更加使问题研究的深入与透彻。 4.3.2 时域分析界面的设计 根据设计需要,我们需要在布局编辑区里添加八个静态文本框(Static Text),两个按钮(Push Button),也要修改自己String属性,同时还要添加两个文本编辑框(Edit Text)、五个单选按钮(Radio Button)、六个面板控件(Panel)和一个坐标轴(Axes),整体的模块布局就可以了,完成各部件的属性的设置,保存为Time_reponse.fig文件中。为了实现控件的功能,我们需要编写相应的程序代码。右键单击任一图形对象,在弹出的快捷菜单中点击View Callbacks,在点击Callback命令,这时将自动打开一个M文件,这个时候就可以在各控件相应的回调函数区内修改对应的程序代码。下面是部分程序代码: function radiobutton4_Callback(hObject, eventdata, handles) set(hObject,'Value',1); set(handles.radiobutton5,'Value',0); set(handles.radiobutton3,'Value',0); num=str2num(get(handles.edit1,'String')); %获取控件Tag属性为edit1的控件里面的数值作为分子 den=str2num(get(handles.edit2,'String')); %获取控件Tag属性为edit2的控件里面的数值作为分母 load('data\Ddata.mat'); if (fla==0) G=tf(num,den); [y,t]=step(G); %开环阶段响应 axes(handles.axes2) plot(t,y,'Linewidth',2) elseif(fla==1) G=tf(num,den); [y,t]=step(feedback(G,1)); %闭环阶段响应 axes(handles.axes2) plot(t,y,'Linewidth',2) hold on [Y,k]=max(y); tp=fix(t(k)*100)/100; %求峰值时间 plot([tp tp],[0 Y],'--r','Linewidth',1.5); plot([0 tp],[Y Y],'--r','Linewidth',1.5); plot(tp,0,'o', 'MarkerEdgeColor','k', 'MarkerFaceColor','k','MarkerSize',6); %画出峰值时间点 str0=num2str(tp); str=[str0,'s']; set(handles.text7,'String',str) C=dcgain(feedback(G,1)); %求系统稳态值 M=fix(1000*(Y-C)/C)/10; str0=num2str(M); str=[str0,'%']; set(handles.text8,'String',str) %求超调量 n=1; while y(n)<0.1*C %通过循环,求取输出第一次到达终值的10%的时间 n=n+1; end m=k; while y(n)>0.9*C %通过循环,求取输出第一次到达终值的90%的时间 m=m-1; end risetime=fix(100*(t(m)-t(n)))/100; %求上升时间 str0=num2str(risetime); str=[str0,'s']; set(handles.text6,'String',str) %显示上升时间 i=length(t); while (y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end Settingtime=fix(100*t(i))/100; %求调节时间 str0=num2str(Settingtime); str=[str0,'s']; set(handles.text12,'String',str) %显示调节时间 plot(Settingtime,0,'o', 'MarkerEdgeColor','k', 'MarkerFaceColor','m','MarkerSize',6); %显示调节时间 %的时间点 hold off [F,h]=findpeaks(y); che=length(F); if(che>=2) rate=fix(100*(F(1)-C)/(F(2)-C))/100;%求衰减比 str0=num2str(rate); str=[str0,'%']; set(handles.text14,'String',str) %显示衰减比 else set(handles.text14,'String','ÎÞË¥¼õ±È') %求衰减比 end end grid on xlabel('Time(s)') ylabel('Y(t)') 完成回调函数后,我们点击运行一下,得到线性系统时域分析图,从图中我们可以看到阶跃响应曲线,以及系统的性能指标,如图4-3: 图4-3 线型系统时域分析图 4.4 线型系统根轨迹分析界面 4.4.1根轨迹法的介绍 根轨迹分析法是一种求系统闭环极点的图解方法,它由开环传递函数来求取闭环特征根的轨迹的规律,不用求解高阶系统的特征根。当改变增益值或增加开环零极点时,可以利用根轨迹法预测其对闭环零点位置的影响。根据开环系统的零点和极点,通过一个或几个参数的变化,来研究系统极点变化情况。在MATLAB中采用函数pzmap()绘制系统零点,输入“rlocus(GH)”可得到我们需要的根轨迹图。 4.4.2根轨迹界面的设计与分析 界面设计包括三个部分的参数的输入,一个是开环增益的参数的参数的输入,一个是零点参数的输入,另一个是极点参数的输入,通过这些参数的输入,我们可以得到根轨迹一些性能的分析。最后再对其余的控件进行布局,最后点击保存在Rlocus.fig文件中,同时生成了Rlocus.m文件,再在Rlocus.m文件中相应的回调函数程序区内修改和添加相应的程序,最后点击运行,得到线型系统根轨迹分析图,如图4-4,我们可以看到闭环系统单位阶跃响应曲线。 图4-4 线型系统根轨迹分析图 然后我们点击一下开环根轨迹按钮,得到开环根轨迹曲线,如图4-5:然后我们可以改变一些参数,来继续观察开环根轨迹曲线。 图4-5 开环根轨迹曲线 当我们改变参数,我们会得出一些根轨迹的性能结论分析。我们会发现,当加入开环零点,则会改变渐近线的条数和渐近线的倾角;当增加开环零点的个数,相当于增加微分作用,使得根轨迹向左移动或是弯曲,这样的好处是大大的提高了控制系统的相对稳定性,同时我们可以发现,当增加的开环零点越来越接近坐标轴的原点的时候,它的微分作用就会越来越强,表明了控制系统的相对稳定性非常的好;当加入开环极点的时候,则会改变渐近线的条数的渐近线的倾角,增加开环极点的个数,等于是增强了积分的作用,从而导致了根轨迹向右移动或者是弯曲,从而降低了控制系统的稳定性。 4.5 线型系统频域分析界面 4.5.1 频域法的介绍 对于频域分析法来说,它是一种利用频域特性来研究控制系统的一种图解方法,以传递函数为基础,反映了控制系统对正弦输入的响应性能。在频域法中其基本思想是将控制系统中的各个变量看做成信号来处理,而且这些信号都是由正弦信号合成的,同时它们的频率是不同的。要研究频域法的特性可以通过频域特性曲线进行研究,包括曲线的形状及其特征量。而频域特性是指稳态输出与输入之比在正弦信号的作用下相对频域的有关特性。 4.5.2 频域分析界面的设计 我们可以作出伯德图和奈奎斯特曲线以及单位阶跃响应曲线来分析频域特性,进行模块布局,保存在Frequency.fig文件中,在同时生成的m文件中对各个控件的回调函数进行相应的修改,并点击运行,得到线型系统频域分析界面,如图4-6,点击伯德图控件,得到伯德图,如图4-7,点击奈奎斯特控件图标,如图4-8,改变传递函数输入的参数进行频域特性分析。 图4-6 线型系统频域分析图 图4-7 伯德图 图4-8 奈奎斯特曲线 4.6 控制系统校正实验界面 4.6.1 控制系统校正介绍 在实际的社会生活中,我们往往对一个系统设计的过程中,为了达到某些性能指标和设计要求,需要进行参数的选择或是对原有的控制系统进行元件的添加,这就是我们所要研究的控制系统的校正问题。控制系统校正根据校正装置的特性可以分为超前校正、滞后校正、滞后-超前校正、串联校正以及反馈校正。 4.6.2控制系统校正实验界面的设计 在我们的控制系统校正实验中,我们主要研究基于频率法的串联超前校正以及串联滞后校正,通过单位阶跃响应曲线、伯德图来具体研究。先进性模块布局,保存在Modify.fig文件中,自动生成了Modify.m文件,并在相应的回调函数内修改程序,最终点击运行,得到控制系统校正实验界面图,如图4-9,可以看到系统校正前后的伯德图,点击超前校正控件按钮,得到校正前后系统阶跃响应曲线,如图4-10,点击之后滞后校正控件按钮,得到校正前后系统阶跃响应曲线,如图4-11。同时我们改变参数的输入,并加以分析。 图4-9 控制系统校正实验图 图4-10 超前校正前后系统阶跃响应曲线 图4-11 滞后校正前后系统阶跃响应曲线 5 结论 经过几个月的努力,我最终完成了基于MATLAB的自动控制原理虚拟实验平台的开发,对自动控制原理的几个实验都较好的进行了仿真,通过仿真图形的分析,加深了对自动控制原理的深入的了解,被MATLAB的强大功能所吸引,已经较为熟练地掌握了MATLAB的一些功能操作,对MATLAB的程序语言更为的熟悉与了解。 在设计开发的过程中遇到了很多的困难,但这份曲折的过程锻炼了我的独立思考的能力与分析能力, 让我明白了解决一个问题必须要首先要了解它的基本原理,只有这样处理问题才能事半功倍,达到预期的效果,同时也提高了我与他人的沟通能力,谦虚地向别人求教,也很感谢我的指导老师。设计虽然完成了但同时也发现了自己能力的不足,在今后人生道路上会更加的努力。 参考文献 [1]冯程,初俊博,汪微槟.基于Matlab的虚拟实验平台在大学生科技创新活动中的应用[J].科技风,2015(02) [2]刘金颂,张庆阳,苏晓峰,杨蕾.Matlab软件在自动控制原理实验中的应用[J].实验技术与管理,2014(06) [3]李东,冯乔,李敏.高职院校电类课程虚拟实验系统的项目实施[J]电子世界,2014(03) [4]张佳.基于小型光电跟踪系统的PID控制实验[J].实验室研究与探索,2013(11) [5]刘中,袁少强,张军香.自动控制原理实验课的改革与实践[J].实验室研究与探索,2013(11) [6]王焕然,徐颖秦.自动控制原理虚拟实验平台的设计与开发[J].电力系统及其自动化学报.2010(04) [7]彭道刚,杨平,金光远.基于VB和MATLAB的自动控制原理CAI软件设计[J].上海电力学院学报,2006(02) [8]蒋珉,马天河,刘彬,程成.自动控制原理的MATLAB软件实验平台[J].电气电子教学学报,2004(01) [9]张巍,蔡启仲,罗文广.MATLAB在自动控制原理实验方面的应用[J].广西工学院学报.1999(04) [10]李农庄,候国莲,张建华.MATLAB环境下的自动控制原理教学软件开发[J].现代电力.1999(03) 附录1:虚拟实验平台总源程序 %主界面的源程序 function varargout = dianxinghuanjie(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @dianxinghuanjie_OpeningFcn, ... 'gui_OutputFcn', @dianxinghuanjie_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function dianxinghuanjie_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; movegui(gcf,'center') axes(handles.axes1) imshow('Inco\Inco1.png') guidata(hObject, handles); function varargout = dianxinghuanjie_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function Time_Callback(hObject, eventdata, handles) close(gcf) Time_Reponse; function One_Callback(hObject, eventdata, handles) function Two_Callback(hObject, eventdata, handles) function Three_Callback(hObject, eventdata, handles) function Four_Callback(hObject, eventdata, handles) function Rlocus_Callback(hObject, eventdata, handles) close(gcf) Rlocus; function Frequency_Callback(hObject, eventdata, handles) close(gcf) Frequency; function Modify_Callback(hObject, eventdata, handles) close(gcf) Modify function OK_Callback(hObject, eventdata, handles) close(gcf) Time_Reponse; function pushbutton3_Callback(hObject, eventdata, handles) close(gcf) Rlocus; function pushbutton4_Callback(hObject, eventdata, handles) close(gcf) Frequency; function pushbutton5_Callback(hObject, eventdata, handles) close(gcf) Modify; %线型系统时域分析界面的源程序 function varargout = Time_Reponse(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Time_Reponse_OpeningFcn, ... 'gui_OutputFcn', @Time_Reponse_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Time_Reponse_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); movegui(gcf,'center'); set(handles.radiobutton1,'Value',0); set(handles.radiobutton2,'Value',1); fla=1; %标志,用来确定系统是开环还是闭环,fla=1是闭环,fla=0是开环 save('data\Ddata','fla'); G=tf(num,den); C=dcgain(feedback(G,1)); %求阶跃响应的终值 Step=1; %单位阶跃输入 essp=Step-C; %位置误差 str=num2str(essp); %将数字转换为字符 set(handles.text18,'String',str); %显示稳态误差 set(handles.radiobutton4,'Value',1); set(handles.radiobutton5,'Value',0); set(handles.radiobutton3,'Value',0); [y,t]=step(feedback(G,1)); %闭环阶跃响应 axes(handles.axes2) plot(t,y,'Linewidth',2) hold on [Y,k]=max(y); tp=fix(t(k)*100)/100; %求峰值时间 plot([tp tp],[0 Y],'--r','Linewidth',1.5); plot([0 tp],[Y Y],'--r','Linewidth',1.5); plot(tp,0,'o', 'MarkerEdgeColor','k', 'MarkerFaceColor','k','MarkerSize',6); %画出峰值时间的时间点 str0=num2str(tp); str=[str0,'s']; set(handles.text7,'String',str); C=dcgain(feedback(G,1)); %求系统稳态值 M=fix(1000*(Y-C)/C)/10; str0=num2str(M); str=[str0,'%']; set(handles.text8,'String',str) %求超调量 n=1; while y(n)<0.1*C %通过循环,求取输出第一次到达终值的10%的时间 n=n+1; end m=k; while y(n)>0.9*C %通过循环,求取输出第一次到达终值的90%时间 m=m-1; end risetime=fix(100*(t(m)-t(n)))/100; %求上升时间 str0=num2str(risetime); str=[str0,'s']; set(handles.text6,'String',str) %显示上升时间 i=length(t); while (y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end Settingtime=fix(100*t(i))/100; %求调节时间 str0=num2str(Settingtime); str=[str0,'s']; set(handles.text12,'String',str) %显示调节时间 plot(Settingtime,0,'o', 'MarkerEdgeColor','k', 'MarkerFaceColor','m','MarkerSize',6); %显示调节时间的时间点 hold off [F,h]=findpeaks(y); che=length(F); if(che>=2) rate=fix(100*(F(1)-C)/(F(2)-C))/100;%求衰减比 str0=num2str(rate); str=[str0,'%']; set(handles.text14,'String',str) %显示衰减比 else set(handles.text14,'String','ÎÞË¥¼õ±È') %求衰减比 end grid on xlabel('Time(s)') ylabel('Y(t)') guidata(hObject, handles); function varargout = Time_Reponse_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function radiobutton1_Callback(hObject, eventdata, handles) set(hObject,'Value',1); set(handles.radiobutton2,'Value',0); fla=0; %系统为开环 save('data\Ddata','fla'); %保存数据 set(handles.radiobutton5,'Value',0); set(handles.radiobutton4,'Value',0); set(handles.radiobutton3,'Value',0); axes(handles.axes2) cla; function radiobutton2_Callback(hObject, eventdata, handles) set(hObject,'Value',1); set(handles.radiobutton1,'Value',0); fla=1; save('data\Ddata','fla'); set(handles.radiobutton5,'Value',0); set(handles.radiobutton4,'Value',0); set(handles.radiobutton3,'Value',0); axes(handles.axes2) cla; function text2_CreateFcn(hObject, eventdata, handles) function radiobutton3_Callback(hObject, eventdata, handles) set(hObject,'Value',1); set(handles.radiobutton4,'Value',0); set(handles.radiobutton5,'Value',0); num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); load('data\Ddata'); if (fla==0) %判断系统是不是开环 G=tf(num,den); [y,t]=impulse(G); %脉冲响应 axes(handles.axes2) plot(t,y,'Linewidth',2) %画图 elseif(fla==1) G=tf(num,den); [y,t]=impulse(feedback(G,1)); %画闭环为,脉冲响应 axes(handles.axes2) plot(t,y,'Linewidth',2) %画图 end grid on xlabel('Time(s)') ylabel('Y(t)') function radiobutton4_Callback(hObject, eventdata, handles) set(hObject,'Value',1); set(handles.radiobutton5,'Value',0); set(handles.radiobutton3,'Value',0); num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); load('data\Ddata.mat'); if (fla==0) G=tf(num,den); [y,t]=step(G); %开环阶跃响应 axes(handles.axes2) plot(t,y,'Linewidth',2) elseif(fla==1) G=tf(num,den); [y,t]=step(feedback(G,1)); %闭环阶跃响应 axes(handles.axes2) plot(t,y,'Linewidth',2) hold on [Y,k]=max(y); tp=fix(t(k)*100)/100; %求峰值时间 plot([tp tp],[0 Y],'--r','Linewidth',1.5); plot([0 tp],[Y Y],'--r','Linewidth',1.5); plot(tp,0,'o', 'MarkerEdgeColor','k', 'MarkerFaceColor','k','MarkerSize',6); %画峰值时间的时间点 str0=num2str(tp); str=[str0,'s']; set(handles.text7,'String',str) C=dcgain(feedback(G,1)); %求系统稳态值 M=fix(1000*(Y-C)/C)/10; str0=num2str(M); str=[str0,'%']; set(handles.text8,'String',str) %求超调量 n=1; while y(n)<0.1*C %通过循环,求取输出第一次到达终值的10%的时间 n=n+1; end m=k; while y(n)>0.9*C %通过循环,求取输出第一次到达终值的10%的时间 m=m-1; end risetime=fix(100*(t(m)-t(n)))/100; %求上升时间 str0=num2str(risetime); str=[str0,'s']; set(handles.text6,'String',str) %显示上升时间 i=length(t); while (y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end Settingtime=fix(100*t(i))/100; %求调节时间 str0=num2str(Settingtime); str=[str0,'s']; set(handles.text12,'String',str) %显示调节时间 plot(Settingtime,0,'o', 'MarkerEdgeColor','k', 'MarkerFaceColor','m','MarkerSize',6); %显示调节时间的时间点 hold off [F,h]=findpeaks(y); che=length(F); if(che>=2) rate=fix(100*(F(1)-C)/(F(2)-C))/100;%求衰减比 str0=num2str(rate); str=[str0,'%']; set(handles.text14,'String',str) %显示衰减比 else set(handles.text14,'String','ÎÞË¥¼õ±È') %求衰减比 end end grid on xlabel('Time(s)') ylabel('Y(t)') function radiobutton5_Callback(hObject, eventdata, handles) set(hObject,'Value',1); set(handles.radiobutton4,'Value',0); set(handles.radiobutton3,'Value',0); num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); load('data\Ddata.mat'); tm=0:0.5:10; u=tm; if (fla==0) %开环情况 G=tf(num,den); [y,t]=lsim(G,u,tm); %求斜坡响应 axes(handles.axes2) plot(t,y,'Linewidth',2)%画斜坡响应曲线 elseif(fla==1) G=tf(num,den); [y,t]=lsim(feedback(G,1),u,tm); axes(handles.axes2) plot(t,y,'Linewidth',2) end hold on plot(tm,u,'r--','Linewidth',2); xlabel('Time(s)') ylabel('Y(t)') hold off grid on function axes1_CreateFcn(hObject, eventdata, handles) function text6_CreateFcn(hObject, eventdata, handles) function text7_CreateFcn(hObject, eventdata, handles) function axes2_CreateFcn(hObject, eventdata, handles) function text8_CreateFcn(hObject, eventdata, handles) function text12_CreateFcn(hObject, eventdata, handles) function text14_CreateFcn(hObject, eventdata, handles) function pushbutton3_Callback(hObject, eventdata, handles) close(gcf) dianxinghuanjie; function pushbutton4_Callback(hObject, eventdata, handles) axes(handles.axes2); cla; %清除坐标系 set(handles.radiobutton5,'Value',0); set(handles.radiobutton4,'Value',0); set(handles.radiobutton3,'Value',0); function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %线性系统根轨迹分析界面的源程序 function varargout = Rlocus(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Rlocus_OpeningFcn, ... 'gui_OutputFcn', @Rlocus_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Rlocus_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; movegui(gcf,'center') axes(handles.axes1) imshow('Inco\Inco2.png') axes(handles.axes2) imshow('Inco\Inco3.png') axes(handles.axes3) imshow('Inco\Inco4.png') axes(handles.axes4) imshow('Inco\Inco5.png') axes(handles.axes5) imshow('Inco\Inco6.png') z=str2num(get(handles.edit1,'String')); p=str2num(get(handles.edit2,'String')); K=str2num(get(handles.edit3,'String')); num=[1,z(1)]; den=[1,p(1)]; for i=2:length(z) num=conv(num,[1,z(i)]); end for i=2:length(p) den=conv(den,[1,p(i)]); end Gc=K*tf(num,den); axes(handles.axes6); [y,t]=step(feedback(Gc,1)); plot(t,y,'LineWidth',2) title('±Õ»·ÏµÍ³µ¥Î»½×Ô¾ÏìÓ¦') grid on guidata(hObject, handles); function varargout = Rlocus_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton1_Callback(hObject, eventdata, handles) z=str2num(get(handles.edit1,'String')); p=str2num(get(handles.edit2,'String')); K=str2num(get(handles.edit3,'String')); num=[1,z(1)]; den=[1,p(1)]; for i=2:length(z) num=conv(num,[1,z(i)]); end for i=2:length(p) den=conv(den,[1,p(i)]); end Gc=K*tf(num,den); axes(handles.axes6); [y,t]=step(feedback(Gc,1)); plot(t,y,'LineWidth',2) title('±Õ»·ÏµÍ³µ¥Î»½×Ô¾ÏìÓ¦') grid on function pushbutton2_Callback(hObject, eventdata, handles) z=str2num(get(handles.edit1,'String')); p=str2num(get(handles.edit2,'String')); K=str2num(get(handles.edit3,'String')); num=[1,z(1)]; den=[1,p(1)]; for i=2:length(z) num=conv(num,[1,z(i)]); end for i=2:length(p) den=conv(den,[1,p(i)]); end Gc=K*tf(num,den); figure rlocus(Gc); title('¿ª»·¸ù¹ì¼£') grid on function pushbutton3_Callback(hObject, eventdata, handles) z=str2num(get(handles.edit1,'String')); p=str2num(get(handles.edit2,'String')); K=str2num(get(handles.edit3,'String')); num=[1,z(1)]; den=[1,p(1)]; for i=2:length(z) num=conv(num,[1,z(i)]); end for i=2:length(p) den=conv(den,[1,p(i)]); end Gc=K*tf(num,den); G=feedback(Gc,1); figure rlocus(G); title('¿ª»·¸ù¹ì¼£') grid on function pushbutton4_Callback(hObject, eventdata, handles) close(gcf); dianxinghuanjie; %线性系统频域分析界面的源程序 function varargout = Frequency(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Frequency_OpeningFcn, ... 'gui_OutputFcn', @Frequency_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Frequency_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; movegui(gcf,'center') axes(handles.axes1) imshow('Inco\Inco7.png') axes(handles.axes2) imshow('Inco\Inco8.png') axes(handles.axes3) imshow('Inco\Inco9.png') num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); axes(handles.axes4); [y,t]=step(feedback(G,1)); plot(t,y,'LineWidth',2); grid on title('±Õ»·ÏµÍ³µ¥Î»½×Ô¾ÏàÓ¦') [Gm,Pm,Wcg,Wcp]=margin(G); set(handles.text3,'String',num2str(Pm)); set(handles.text5,'String',num2str(Gm)); num=str2num(get(handles.edit1,'String')); guidata(hObject, handles); function varargout = Frequency_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton1_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); axes(handles.axes4); [y,t]=step(feedback(G,1)); plot(t,y,'LineWidth',2); grid on title('±Õ»·ÏµÍ³µ¥Î»½×Ô¾ÏàÓ¦') function pushbutton2_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); figure; margin(G); grid on [Gm,Pm,Wcg,Wcp]=margin(G); set(handles.text3,'String',num2str(Pm)); set(handles.text5,'String',num2str(Gm)); function pushbutton3_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); figure; nyquist(G); grid on function pushbutton5_Callback(hObject, eventdata, handles) close(gcf); dianxinghuanjie; %控制系统校正实验界面 function varargout = Modify(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Modify_OpeningFcn, ... 'gui_OutputFcn', @Modify_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Modify_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); axes(handles.axes1) margin(G); grid on [Gm,Pm,Wcg,Wcp]=margin(G); set(handles.edit3,'String',num2str(Pm)); set(handles.edit4,'String',num2str(Gm)); set(handles.edit5,'String',num2str(Wcg)); set(handles.edit6,'String',num2str(Wcp)); guidata(hObject, handles); function varargout = Modify_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit7_Callback(hObject, eventdata, handles) function edit7_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit8_Callback(hObject, eventdata, handles) function edit8_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit9_Callback(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit10_Callback(hObject, eventdata, handles) function edit10_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit11_Callback(hObject, eventdata, handles) function edit11_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit12_Callback(hObject, eventdata, handles) function edit12_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton1_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); [Gm,Pm,Wcg,Wcp]=margin(G); deg=str2num(get(handles.edit7,'String')); %期望的相角裕度 pha=(deg-Pm)*pi/180; %超前网络需提供的超前角度 a=(1+sin(pha))/(1-sin(pha)); M1=1/sqrt(a); [mag,phase,w]=bode(G); Wc=spline(mag,w,M1); T=1/(Wc*sqrt(a)); %计算超前网络的时间常数 Tf=a*T; Gc=tf([Tf,1],[T,1]); axes(handles.axes1) cla; margin(G); grid on hold on margin(Gc); %画校正网络伯德 margin(Gc*G);%校正后系统的伯德图 hold off figure hold on [y1,t1]=step(feedback(G,1)); %校正前系统闭环阶跃响应 plot(t1,y1,'LineWidth',2); [y2,t2]=step(feedback(G*Gc,1));%校正后系统闭环阶跃响应 plot(t2,y2,'r','LineWidth',2); grid on hold off title('УÕýÇ°ºóϵͳ½×Ô¾ÏìÓ¦ÇúÏß') %%以下为显示校正环节参数的程序 a=Gc.num{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit11,'String',str); a=Gc.den{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit12,'String',str); function pushbutton2_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); [Gm,Pm,Wcg,Wcp]=margin(G); deg=str2num(get(handles.edit7,'String')); %期望的相角裕度 pha=-180+deg+10; [mag,phase,w]=bode(num,den); Wc=spline(phase,w,pha); M1=spline(phase,mag,pha); b=1/M1; T=10/(b*Wc); Gc=tf([b*T 1],[T 1]); axes(handles.axes1) cla; margin(G); hold on margin(Gc); margin(G*Gc); grid on hold off figure hold on [y1,t1]=step(feedback(G,1)); %校正前系统闭环阶跃响应 plot(t1,y1,'LineWidth',2); [y2,t2]=step(feedback(G*Gc,1));%校正后系统闭环 plot(t2,y2,'r','LineWidth',2); grid on hold off title('校正前后系统阶跃响应曲线') a=Gc.num{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit11,'String',str); a=Gc.den{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit12,'String',str); function pushbutton3_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); axes(handles.axes1) margin(G); grid on [Gm,Pm,Wcg,Wcp]=margin(G); set(handles.edit3,'String',num2str(Pm)); set(handles.edit4,'String',num2str(Gm)); set(handles.edit5,'String',num2str(Wcg)); set(handles.edit6,'String',num2str(Wcp)); function pushbutton4_Callback(hObject, eventdata, handles) close(gcf) dianxinghuanjie; function text1_CreateFcn(hObject, eventdata, handles) %控制系统校正实验界面的源程序 function varargout = Modify(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Modify_OpeningFcn, ... 'gui_OutputFcn', @Modify_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Modify_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); axes(handles.axes1) margin(G); grid on [Gm,Pm,Wcg,Wcp]=margin(G); set(handles.edit3,'String',num2str(Pm)); set(handles.edit4,'String',num2str(Gm)); set(handles.edit5,'String',num2str(Wcg)); set(handles.edit6,'String',num2str(Wcp)); guidata(hObject, handles); function varargout = Modify_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit7_Callback(hObject, eventdata, handles) function edit7_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit8_Callback(hObject, eventdata, handles) function edit8_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit9_Callback(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit10_Callback(hObject, eventdata, handles) function edit10_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end unction edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit11_Callback(hObject, eventdata, handles) function edit11_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit12_Callback(hObject, eventdata, handles) function edit12_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton1_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); [Gm,Pm,Wcg,Wcp]=margin(G); deg=str2num(get(handles.edit7,'String')); pha=(deg-Pm)*pi/180; a=(1+sin(pha))/(1-sin(pha)); M1=1/sqrt(a); [mag,phase,w]=bode(G); Wc=spline(mag,w,M1); T=1/(Wc*sqrt(a)); Tf=a*T; Gc=tf([Tf,1],[T,1]); axes(handles.axes1) cla; margin(G); grid on hold on margin(Gc);margin(Gc*G); hold off figure hold on [y1,t1]=step(feedback(G,1)); plot(t1,y1,'LineWidth',2); [y2,t2]=step(feedback(G*Gc,1)); plot(t2,y2,'r','LineWidth',2); grid on hold off title('УÕýÇ°ºóϵͳ½×Ô¾ÏìÓ¦ÇúÏß') a=Gc.num{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit11,'String',str); a=Gc.den{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit12,'String',str); function pushbutton2_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); [Gm,Pm,Wcg,Wcp]=margin(G); deg=str2num(get(handles.edit7,'String')); pha=-180+deg+10; [mag,phase,w]=bode(num,den); Wc=spline(phase,w,pha); M1=spline(phase,mag,pha); b=1/M1; T=10/(b*Wc); Gc=tf([b*T 1],[T 1]); axes(handles.axes1) cla; margin(G); hold on margin(Gc); margin(G*Gc); grid on hold off figure hold on [y1,t1]=step(feedback(G,1)); plot(t1,y1,'LineWidth',2); [y2,t2]=step(feedback(G*Gc,1)); plot(t2,y2,'r','LineWidth',2); grid on hold off title('УÕýÇ°ºóϵͳ½×Ô¾ÏìÓ¦ÇúÏß') a=Gc.num{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit11,'String',str); a=Gc.den{1}; a=fix(10000*a)/10000; str0=[]; for i=1:length(a) str0=[str0 ' ' num2str(a(i))]; end str=['[',str0,']']; set(handles.edit12,'String',str); function pushbutton3_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'String')); den=str2num(get(handles.edit2,'String')); G=tf(num,den); axes(handles.axes1) margin(G); grid on [Gm,Pm,Wcg,Wcp]=margin(G); set(handles.edit3,'String',num2str(Pm)); set(handles.edit4,'String',num2str(Gm)); set(handles.edit5,'String',num2str(Wcg)); set(handles.edit6,'String',num2str(Wcp)); function pushbutton4_Callback(hObject, eventdata, handles) close(gcf) dianxinghuanjie; function text1_CreateFcn(hObject, eventdata, handles) 致谢 首先我要感谢我的导师吴正怀老师。一开始在选择论文导师的时候,我毅然决然的选择了吴老师,在平时的学习生活当中,他是一位和蔼可亲的老师。在论文的写作的过程中,我真的很感谢我的导师吴老师,感谢他对我的谆谆教诲,每每我在论文写作的过程中,遇到难题始终无法解开的时候,都是吴老师给我耐心的解答,虽然有时候自己还是不明白,吴老师仍抽出时间仔仔细细地为我讲解。虽然论文写作过程中遇到了一些难题,但我最终还是圆满的完成了任务。吴老师不仅仅是给我学术上的悉心教导,也对我的人生观、价值观产生了很大的影响,让我明白了学习是学到老活到老,在工作当中更应该踏踏实实地勤勤恳恳地工作,在做人方面更应该脚踏实地,一步一个脚印,不要做事急攻心切,而要静下心来把它做好。所以我真的学到了很多,当然我也要感谢我的同学,感谢他们对我的帮助和关心。 同时,我要感谢我们学院给我们授课的各位老师,他们在各自己的工作岗位上默默无闻、兢兢业业,对我们每一位学生的关心都是无微不至的,让我学到了很多的专业知识,用在了自己今后的工作岗位上,也更是从他们的身上学到了为人处世的基本道理,最后我还要感谢我的母校滁州学院,因为我的母校,我已经茁壮成长,因为我的母校,我为自己而感到骄傲,在今后的道路上,我希望母校为我而骄傲,我会一直在我的人生的道路上继续努力的前行着,让自己的人生丰富多彩。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 注 意 事 项 1.设计(论文)的内容包括: 1)封面(按教务处制定的封面格式制作) 2)原创性声明 3)中文摘要(300字左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入) 6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时) 2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。 3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。 4.文字、图表要求: 1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写 2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画 3)毕业论文须用A4单面打印,论文50页以上的双面打印 4)图表应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序 1)设计(论文) 2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订 3)其它 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 二〇一〇年九月二十日   毕业设计(论文)使用授权声明 本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 二〇一〇年九月二十日 基本要求:写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。 毕业论文的基本教学要求是: 1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。 毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。 毕业论文在进行编写的过程中,需要经过开题报告、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。 撰写意义:1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。大学生在毕业前都必须完成毕业论文的撰写任务。申请学位必须提交相应的学位论文,经答辩通过后,方可取得学位。可以这么说,毕业论文是结束大学学习生活走向社会的一个中介和桥梁。毕业论文是大学生才华的第一次显露,是向祖国和人民所交的一份有份量的答卷,是投身社会主义现代化建设事业的报到书。一篇毕业论文虽然不能全面地反映出一个人的才华,也不一定能对社会直接带来巨大的效益,对专业产生开拓性的影响。但是,实践证明,撰写毕业论文是提高教学质量的重要环节,是保证出好人才的重要措施。 2.通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。党中央要求,为了适应现代化建设的需要,领导班子成员应当逐步实现“革命化、年轻化、知识化、专业化”。这个“四化”的要求,也包含了对干部写作能力和写作水平的要求。 3.提高大学生的写作水平是社会主义物质文明和精神文明建设的需要。在新的历史时期,无论是提高全族的科学文化水平,掌握现代科技知识和科学管理方法,还是培养社会主义新人,都要求我们的干部具有较高的写作能力。在经济建设中,作为领导人员和机关的办事人员,要写指示、通知、总结、调查报告等应用文;要写说明书、广告、解说词等说明文;还要写科学论文、经济评论等议论文。在当今信息社会中,信息对于加快经济发展速度,取得良好的经济效益发挥着愈来愈大的作用。写作是以语言文字为信号,是传达信息的方式。信息的来源、信息的收集、信息的储存、整理、传播等等都离不开写作。 论文种类:毕业论文是学术论文的一种形式,为了进一步探讨和掌握毕业论文的写作规律和特点,需要对毕业论文进行分类。由于毕业论文本身的内容和性质不同,研究领域、对象、方法、表现方式不同,因此,毕业论文就有不同的分类方法。 按内容性质和研究方法的不同可以把毕业论文分为理论性论文、实验性论文、描述性论文和设计性论文。后三种论文主要是理工科大学生可以选择的论文形式,这里不作介绍。文科大学生一般写的是理论性论文。理论性论文具体又可分成两种:一种是以纯粹的抽象理论为研究对象,研究方法是严密的理论推导和数学运算,有的也涉及实验与观测,用以验证论点的正确性。另一种是以对客观事物和现象的调查、考察所得观测资料以及有关文献资料数据为研究对象,研究方法是对有关资料进行分析、综合、概括、抽象,通过归纳、演绎、类比,提出某种新的理论和新的见解。 按议论的性质不同可以把毕业论文分为立论文和驳论文。立论性的毕业论文是指从正面阐述论证自己的观点和主张。一篇论文侧重于以立论为主,就属于立论性论文。立论文要求论点鲜明,论据充分,论证严密,以理和事实服人。驳论性毕业论文是指通过反驳别人的论点来树立自己的论点和主张。如果毕业论文侧重于以驳论为主,批驳某些错误的观点、见解、理论,就属于驳论性毕业论文。驳论文除按立论文对论点、论据、论证的要求以外,还要求针锋相对,据理力争。 按研究问题的大小不同可以把毕业论文分为宏观论文和微观论文。凡届国家全局性、带有普遍性并对局部工作有一定指导意义的论文,称为宏观论文。它研究的面比较宽广,具有较大范围的影响。反之,研究局部性、具体问题的论文,是微观论文。它对具体工作有指导意义,影响的面窄一些。 另外还有一种综合型的分类方法,即把毕业论文分为专题型、论辩型、综述型和综合型四大类: 1.专题型论文。这是分析前人研究成果的基础上,以直接论述的形式发表见解,从正面提出某学科中某一学术问题的一种论文。如本书第十二章例文中的《浅析领导者突出工作重点的方法与艺术》一文,从正面论述了突出重点的工作方法的意义、方法和原则,它表明了作者对突出工作重点方法的肯定和理解。2.论辩型论文。这是针对他人在某学科中某一学术问题的见解,凭借充分的论据,着重揭露其不足或错误之处,通过论辩形式来发表见解的一种论文。3.综述型论文。这是在归纳、总结前人或今人对某学科中某一学术问题已有研究成果的基础上,加以介绍或评论,从而发表自己见解的一种论文。4.综合型论文。这是一种将综述型和论辩型两种形式有机结合起来写成的一种论文。如《关于中国民族关系史上的几个问题》一文既介绍了研究民族关系史的现状,又提出了几个值得研究的问题。因此,它是一篇综合型的论文。 写作步骤:毕业论文是高等教育自学考试本科专业应考者完成本科阶段学业的最后一个环节,它是应考者的 总结 性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际 问题 的能力。从文体而言,它也是对某一专业领域的现实问题或 理论 问题进行 科学 研究 探索的具有一定意义的论说文。完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。 首先是选择课题。选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。 教育部自学考试办公室有关对毕业论文选题的途径和要求是“为鼓励理论与工作实践结合,应考者可结合本单位或本人从事的工作提出论文题目,报主考学校审查同意后确立。也可由主考学校公布论文题目,由应考者选择。毕业论文的总体要求应与普通全日制高等学校相一致,做到通过论文写作和答辩考核,检验应考者综合运用专业知识的能力”。但不管考生是自己任意选择课题,还是在主考院校公布的指定课题中选择课题,都要坚持选择有科学价值和现实意义的、切实可行的课题。选好课题是毕业论文成功的一半。 第一、要坚持选择有科学价值和现实意义的课题。科学研究的目的是为了更好地认识世界、改造世界,以推动社会的不断进步和发展 。因此,毕业论文的选题,必须紧密结合社会主义物质文明和精神文明建设的需要,以促进科学事业发展和解决现实存在问题作为出发点和落脚点。选题要符合科学研究的正确方向,要具有新颖性,有创新、有理论价值和现实的指导意义或推动作用,一项毫无意义的研究,即使花很大的精力,表达再完善,也将没有丝毫价值。具体地说,考生可从以下三个方面来选题。首先,要从现实的弊端中选题,学习了专业知识,不能仅停留在书本上和理论上,还要下一番功夫,理论联系实际,用已掌握的专业知识,去寻找和解决工作实践中急待解决的问题。其次,要从寻找科学研究的空白处和边缘领域中选题,科学研究。还有许多没有被开垦的处女地,还有许多缺陷和空白,这些都需要填补。应考者应有独特的眼光和超前的意识去思索,去发现,去研究。最后,要从寻找前人研究的不足处和错误处选题,在前人已提出来的研究课题中,许多虽已有初步的研究成果,但随着社会的不断发展,还有待于丰富、完整和发展,这种补充性或纠正性的研究课题,也是有科学价值和现实指导意义的。 第二、要根据自己的能力选择切实可行的课题。毕业论文的写作是一种创造性劳动,不但要有考生个人的见解和主张,同时还需要具备一定的客观条件。由于考生个人的主观、客观条件都是各不相同的,因此在选题时,还应结合自己的特长、兴趣及所具备的客观条件来选题。具体地说,考生可从以下三个方面来综合考虑。首先,要有充足的资料来源。“巧妇难为无米之炊”,在缺少资料的情况下,是很难写出高质量的论文的。选择一个具有丰富资料来源的课题,对课题深入研究与开展很有帮助。其次,要有浓厚的研究兴趣,选择自己感兴趣的课题,可以激发自己研究的热情,调动自己的主动性和积极性,能够以专心、细心、恒心和耐心的积极心态去完成。最后,要能结合发挥自己的业务专长,每个考生无论能力水平高低,工作岗位如何,都有自己的业务专长,选择那些能结合自己工作、发挥自己业务专长的课题,对顺利完成课题的研究大有益处。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 年 月 日   毕业设计(论文)使用授权声明 本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 年 月 日 基本要求:写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。 毕业论文的基本教学要求是: 1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。 毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。 毕业论文在进行编写的过程中,需要经过开题报告、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。 撰写意义:1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。大学生在毕业前都必须完成毕业论文的撰写任务。申请学位必须提交相应的学位论文,经答辩通过后,方可取得学位。可以这么说,毕业论文是结束大学学习生活走向社会的一个中介和桥梁。毕业论文是大学生才华的第一次显露,是向祖国和人民所交的一份有份量的答卷,是投身社会主义现代化建设事业的报到书。一篇毕业论文虽然不能全面地反映出一个人的才华,也不一定能对社会直接带来巨大的效益,对专业产生开拓性的影响。但是,实践证明,撰写毕业论文是提高教学质量的重要环节,是保证出好人才的重要措施。 2.通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。党中央要求,为了适应现代化建设的需要,领导班子成员应当逐步实现“革命化、年轻化、知识化、专业化”。这个“四化”的要求,也包含了对干部写作能力和写作水平的要求。 3.提高大学生的写作水平是社会主义物质文明和精神文明建设的需要。在新的历史时期,无论是提高全族的科学文化水平,掌握现代科技知识和科学管理方法,还是培养社会主义新人,都要求我们的干部具有较高的写作能力。在经济建设中,作为领导人员和机关的办事人员,要写指示、通知、总结、调查报告等应用文;要写说明书、广告、解说词等说明文;还要写科学论文、经济评论等议论文。在当今信息社会中,信息对于加快经济发展速度,取得良好的经济效益发挥着愈来愈大的作用。写作是以语言文字为信号,是传达信息的方式。信息的来源、信息的收集、信息的储存、整理、传播等等都离不开写作。 论文种类:毕业论文是学术论文的一种形式,为了进一步探讨和掌握毕业论文的写作规律和特点,需要对毕业论文进行分类。由于毕业论文本身的内容和性质不同,研究领域、对象、方法、表现方式不同,因此,毕业论文就有不同的分类方法。 按内容性质和研究方法的不同可以把毕业论文分为理论性论文、实验性论文、描述性论文和设计性论文。后三种论文主要是理工科大学生可以选择的论文形式,这里不作介绍。文科大学生一般写的是理论性论文。理论性论文具体又可分成两种:一种是以纯粹的抽象理论为研究对象,研究方法是严密的理论推导和数学运算,有的也涉及实验与观测,用以验证论点的正确性。另一种是以对客观事物和现象的调查、考察所得观测资料以及有关文献资料数据为研究对象,研究方法是对有关资料进行分析、综合、概括、抽象,通过归纳、演绎、类比,提出某种新的理论和新的见解。 按议论的性质不同可以把毕业论文分为立论文和驳论文。立论性的毕业论文是指从正面阐述论证自己的观点和主张。一篇论文侧重于以立论为主,就属于立论性论文。立论文要求论点鲜明,论据充分,论证严密,以理和事实服人。驳论性毕业论文是指通过反驳别人的论点来树立自己的论点和主张。如果毕业论文侧重于以驳论为主,批驳某些错误的观点、见解、理论,就属于驳论性毕业论文。驳论文除按立论文对论点、论据、论证的要求以外,还要求针锋相对,据理力争。 按研究问题的大小不同可以把毕业论文分为宏观论文和微观论文。凡届国家全局性、带有普遍性并对局部工作有一定指导意义的论文,称为宏观论文。它研究的面比较宽广,具有较大范围的影响。反之,研究局部性、具体问题的论文,是微观论文。它对具体工作有指导意义,影响的面窄一些。 另外还有一种综合型的分类方法,即把毕业论文分为专题型、论辩型、综述型和综合型四大类: 1.专题型论文。这是分析前人研究成果的基础上,以直接论述的形式发表见解,从正面提出某学科中某一学术问题的一种论文。如本书第十二章例文中的《浅析领导者突出工作重点的方法与艺术》一文,从正面论述了突出重点的工作方法的意义、方法和原则,它表明了作者对突出工作重点方法的肯定和理解。2.论辩型论文。这是针对他人在某学科中某一学术问题的见解,凭借充分的论据,着重揭露其不足或错误之处,通过论辩形式来发表见解的一种论文。3.综述型论文。这是在归纳、总结前人或今人对某学科中某一学术问题已有研究成果的基础上,加以介绍或评论,从而发表自己见解的一种论文。4.综合型论文。这是一种将综述型和论辩型两种形式有机结合起来写成的一种论文。如《关于中国民族关系史上的几个问题》一文既介绍了研究民族关系史的现状,又提出了几个值得研究的问题。因此,它是一篇综合型的论文。 写作步骤:毕业论文是高等教育自学考试本科专业应考者完成本科阶段学业的最后一个环节,它是应考者的 总结 性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际 问题 的能力。从文体而言,它也是对某一专业领域的现实问题或 理论 问题进行 科学 研究 探索的具有一定意义的论说文。完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。 首先是选择课题。选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。 教育部自学考试办公室有关对毕业论文选题的途径和要求是“为鼓励理论与工作实践结合,应考者可结合本单位或本人从事的工作提出论文题目,报主考学校审查同意后确立。也可由主考学校公布论文题目,由应考者选择。毕业论文的总体要求应与普通全日制高等学校相一致,做到通过论文写作和答辩考核,检验应考者综合运用专业知识的能力”。但不管考生是自己任意选择课题,还是在主考院校公布的指定课题中选择课题,都要坚持选择有科学价值和现实意义的、切实可行的课题。选好课题是毕业论文成功的一半。 第一、要坚持选择有科学价值和现实意义的课题。科学研究的目的是为了更好地认识世界、改造世界,以推动社会的不断进步和发展 。因此,毕业论文的选题,必须紧密结合社会主义物质文明和精神文明建设的需要,以促进科学事业发展和解决现实存在问题作为出发点和落脚点。选题要符合科学研究的正确方向,要具有新颖性,有创新、有理论价值和现实的指导意义或推动作用,一项毫无意义的研究,即使花很大的精力,表达再完善,也将没有丝毫价值。具体地说,考生可从以下三个方面来选题。首先,要从现实的弊端中选题,学习了专业知识,不能仅停留在书本上和理论上,还要下一番功夫,理论联系实际,用已掌握的专业知识,去寻找和解决工作实践中急待解决的问题。其次,要从寻找科学研究的空白处和边缘领域中选题,科学研究。还有许多没有被开垦的处女地,还有许多缺陷和空白,这些都需要填补。应考者应有独特的眼光和超前的意识去思索,去发现,去研究。最后,要从寻找前人研究的不足处和错误处选题,在前人已提出来的研究课题中,许多虽已有初步的研究成果,但随着社会的不断发展,还有待于丰富、完整和发展,这种补充性或纠正性的研究课题,也是有科学价值和现实指导意义的。 第二、要根据自己的能力选择切实可行的课题。毕业论文的写作是一种创造性劳动,不但要有考生个人的见解和主张,同时还需要具备一定的客观条件。由于考生个人的主观、客观条件都是各不相同的,因此在选题时,还应结合自己的特长、兴趣及所具备的客观条件来选题。具体地说,考生可从以下三个方面来综合考虑。首先,要有充足的资料来源。“巧妇难为无米之炊”,在缺少资料的情况下,是很难写出高质量的论文的。选择一个具有丰富资料来源的课题,对课题深入研究与开展很有帮助。其次,要有浓厚的研究兴趣,选择自己感兴趣的课题,可以激发自己研究的热情,调动自己的主动性和积极性,能够以专心、细心、恒心和耐心的积极心态去完成。最后,要能结合发挥自己的业务专长,每个考生无论能力水平高低,工作岗位如何,都有自己的业务专长,选择那些能结合自己工作、发挥自己业务专长的课题,对顺利完成课题的研究大有益处。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 _1492525266.vsd � 虚拟实验平台 时域分析� 频域分析� 根轨迹分析� 控制校正 典型输入下的响应曲线� 开环零极点对根轨迹的影响 二阶系统的响应性能指标 频域法中的奈奎斯特曲线 频域法中的伯德图及特性� 基于频域法的滞后校正� 基于频域法的超前校正� 根轨迹的绘制与分析�
/
本文档为【基于MATLAB的自动控制原理虚拟实验平台开发毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索