系统仿真的MATLAB实现.

合集下载

非线性-二阶系统的MATLAB仿真设计

非线性-二阶系统的MATLAB仿真设计

非线性-二阶系统的MATLAB仿真设计
介绍
本文档旨在介绍如何使用MATLAB进行非线性二阶系统的仿
真设计。

非线性系统在现实世界中广泛存在,因此了解其行为和性
能对于工程师和研究人员来说至关重要。

步骤
步骤1: 定义系统模型
首先,我们需要定义二阶非线性系统的模型。

在MATLAB中,可以使用差分方程或状态空间模型来表示系统。

确保将系统的非线
性特性准确地考虑在内。

步骤2: 设定仿真参数
在进行仿真之前,需要设定仿真的时间范围和步长。

这会影响
仿真的精度和计算时间。

根据系统的特性和需求,选择适当的仿真
参数。

步骤3: 编写仿真代码
使用MATLAB编写仿真代码,将系统模型和仿真参数整合在
一起。

在仿真代码中,可以使用MATLAB的函数和工具箱来实现
系统的数值模拟。

步骤4: 运行仿真
运行仿真代码,并观察系统在仿真时间内的行为。

通过分析仿
真结果,可以评估系统的稳定性、响应时间和稳态误差等性能指标。

步骤5: 分析和优化
根据仿真结果进行系统分析,找出系统存在的问题或改进的空间。

可以通过调整模型参数、改变系统结构或应用控制策略等方式
进行系统优化。

结论
通过MATLAB的仿真设计,可以更好地理解和分析非线性二
阶系统的行为。

这为工程师和研究人员提供了一个强大的工具,用
于系统设计和性能优化。

请注意,本文档仅为提供仿真设计的基本步骤,并不涉及具体的系统模型或实际应用。

具体问题需要根据实际情况进行进一步研究和分析。

matlab实验4simulink系统仿真

matlab实验4simulink系统仿真
7.3.2 信号线的操作
1. 模块间连线 先将光标指向一个模块的输出端,待光标变为十字符后,按下鼠标键并拖动,直到另 一模块的输入端。
6
Matlab实验讲义
2. 信号线的分支和折曲 (1) 分支的产生 将光标指向信号线的分支点上,按鼠标右键,光标变为十字符,拖动鼠标直到分支线 的终点,释放鼠标;或者按住 Ctrl 键,同时按下鼠标左键拖动鼠标到分支线的终点,如图 7.10 所示。
7.2.2 Simulink 的模型窗口
模型窗口由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
菜单 工具栏
模型浏览器
模型框图
状态栏
图7.5 双窗口模型窗口
1. 状态栏
3
Matlab实验讲义
2. 工具栏 模型窗口工具栏如图 7.6 所示。
创建并编译生成exe文件
展示父系统 打开调试器
开始仿真 结束仿真
(4) 用鼠标单击所需要的输入信号源模块“Sine Wave”(正弦信号),将其拖放到的空白 模型窗口“untitled”,则“Sine Wave”模块就被添加到 untitled 窗口;也可以用鼠标选中“Sine Wave”模块,单击鼠标右键,在快捷菜单中选择“add to 'untitled'”命令,就可以将“Sine Wave”模块添加到 untitled 窗口,如图 7.2 所示。
显示库链接 显示/隐藏阴影效果 设置不同的采样时间序列的颜色 粗线表示多信号构成的向量信号线 注明向量信号线的信号数 标明端口数据的类型 显示存储类型 数据浏览器 Simulink调试器 用户定义数据类型设计器 线性化分析工具
7.3 模型的创建
7.3.1 模块的操作
1. 对象的选定 (8) 选定单个对象 选定对象只要在对象上单击鼠标,被选定的对象的四角处会出现小黑块编辑框。 (9) 选定多个对象 如果选定多个对象,可以按下 Shift 键,然后再单击所需选定的模块;或者用鼠标拉出 矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图 7.7 所示。

matlab系统仿真

matlab系统仿真

第七章系统仿真的MATLAB实现由于计算机技术的高速发展,我们可以借助计算机完成系统的数字仿真。

综前所述,数字仿真实质上是根据被研究的真实系统的模型,利用计算机进行实验研究的一种方法。

仿真的主要过程是:建立模型、仿真运行和分析研究仿真结果。

仿真运行就是借助一定的算法,获得系统的有关信息。

MATLAB是一种面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络和图像处理等学科的处理功能于一体,具有极高的编程效率。

MATLAB是一个高度集成的系统,MATLAB提供的Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统,能够在连续时间域、离散时间域或者两者的混合时间域里进行建模,它同样支持具有多种采样速率的系统。

在过去几年里,Simulink已经成为数学和工业应用中对动态系统进行建模时使用得最为广泛的软件包。

MATLAB仿真有两种途径:(1)MATLAB可以在SIMULINK窗口上进行面向系统结构方框图的系统仿真;(2)用户可以在MATLAB的COMMAND窗口下,用运行m文件,调用指令和各种用于系统仿真的函数,进行系统仿真。

这两种方式可解决任意复杂系统的动态仿真问题,前者编辑灵活,而后者直观性强,实现可视化编辑。

下面介绍在MATLAB上实现几类基本仿真。

7.1 计算机仿真的步骤在学习计算机仿真以前,让我们先总结一下计算机仿真的步骤。

计算机仿真,概括地说是一个“建模—实验—分析”的过程,即仿真不单纯是对模型的实验,还包括从建模到实验再到分析的全过程。

因此进行一次完整的计算机仿真应包括以下步骤:(1)列举并列项目每一项研究都应从说明问题开始,问题由决策者提供或由熟悉问题的分析者提供。

(2)设置目标及完整的项目计划目标表示仿真要回答的问题、系统方案的说明。

项目计划包括人数、研究费用以及每一阶段工作所需时间。

(3)建立模型和收集数据模型和实际系统没有必要一一对应,模型只需描述实际系统的本质或者描述系统中所研究部分的本质。

《MATLAB与控制系统仿真》实验报告

《MATLAB与控制系统仿真》实验报告

《MATLAB与控制系统仿真》实验报告一、实验目的本实验旨在通过MATLAB软件进行控制系统的仿真,并通过仿真结果分析控制系统的性能。

二、实验器材1.计算机2.MATLAB软件三、实验内容1.搭建控制系统模型在MATLAB软件中,通过使用控制系统工具箱,我们可以搭建不同类型的控制系统模型。

本实验中我们选择了一个简单的比例控制系统模型。

2.设定输入信号我们需要为控制系统提供输入信号进行仿真。

在MATLAB中,我们可以使用信号工具箱来产生不同类型的信号。

本实验中,我们选择了一个阶跃信号作为输入信号。

3.运行仿真通过设置模型参数、输入信号以及仿真时间等相关参数后,我们可以运行仿真。

MATLAB会根据系统模型和输入信号产生输出信号,并显示在仿真界面上。

4.分析控制系统性能根据仿真结果,我们可以对控制系统的性能进行分析。

常见的性能指标包括系统的稳态误差、超调量、响应时间等。

四、实验步骤1. 打开MATLAB软件,并在命令窗口中输入“controlSystemDesigner”命令,打开控制系统工具箱。

2.在控制系统工具箱中选择比例控制器模型,并设置相应的增益参数。

3.在信号工具箱中选择阶跃信号,并设置相应的幅值和起始时间。

4.在仿真界面中设置仿真时间,并点击运行按钮,开始仿真。

5.根据仿真结果,分析控制系统的性能指标,并记录下相应的数值,并根据数值进行分析和讨论。

五、实验结果与分析根据运行仿真获得的结果,我们可以得到控制系统的输出信号曲线。

通过观察输出信号的稳态值、超调量、响应时间等性能指标,我们可以对控制系统的性能进行分析和评价。

六、实验总结通过本次实验,我们学习了如何使用MATLAB软件进行控制系统仿真,并提取控制系统的性能指标。

通过实验,我们可以更加直观地理解控制系统的工作原理,为控制系统设计和分析提供了重要的工具和思路。

七、实验心得通过本次实验,我深刻理解了控制系统仿真的重要性和必要性。

MATLAB软件提供了强大的仿真工具和功能,能够帮助我们更好地理解和分析控制系统的性能。

如何使用MATLABSimulink进行动态系统建模与仿真

如何使用MATLABSimulink进行动态系统建模与仿真

如何使用MATLABSimulink进行动态系统建模与仿真如何使用MATLAB Simulink进行动态系统建模与仿真一、引言MATLAB Simulink是一款强大的动态系统建模和仿真工具,广泛应用于各个领域的工程设计和研究中。

本文将介绍如何使用MATLAB Simulink进行动态系统建模与仿真的方法和步骤。

二、系统建模1. 模型构建在MATLAB Simulink中,可以通过拖拽模块的方式来构建系统模型。

首先,将系统的元件和子系统模块从库中拖拽到模型窗口中,然后连接这些模块,形成一个完整的系统模型。

2. 参数设置对于系统模型的各个组件,可以设置对应的参数和初始条件。

通过双击模块可以打开参数设置对话框,可以设置参数的数值、初始条件以及其他相关属性。

3. 信号连接在模型中,各个模块之间可以通过信号连接来传递信息。

在拖拽模块连接的同时,可以进行信号的名称设置,以便于后续仿真结果的分析和显示。

三、系统仿真1. 仿真参数设置在进行系统仿真之前,需要设置仿真的起止时间、步长等参数。

通过点击仿真器界面上的参数设置按钮,可以进行相关参数的设置。

2. 仿真运行在设置好仿真参数后,可以点击仿真器界面上的运行按钮来开始仿真过程。

仿真器将根据设置的参数对系统模型进行仿真计算,并输出仿真结果。

3. 仿真结果分析仿真结束后,可以通过查看仿真器界面上的仿真结果来分析系统的动态特性。

Simulink提供了丰富的结果显示和分析工具,可以对仿真结果进行绘图、数据处理等操作,以便于对系统模型的性能进行评估。

四、参数优化与系统设计1. 参数优化方法MATLAB Simulink还提供了多种参数优化算法,可以通过这些算法对系统模型进行优化。

可以通过设置优化目标和参数范围,以及定义参数约束条件等,来进行参数优化计算。

2. 系统设计方法Simulink还支持用于控制系统、信号处理系统和通信系统等领域的特定设计工具。

通过这些工具,可以对系统模型进行控制器设计、滤波器设计等操作,以满足系统性能要求。

使用Matlab进行复杂系统的建模与仿真技巧

使用Matlab进行复杂系统的建模与仿真技巧

使用Matlab进行复杂系统的建模与仿真技巧使用 Matlab 进行复杂系统的建模与仿真技巧概述:在当今科技高速发展的时代,越来越多的系统趋于复杂化。

因此,建立准确的模型以进行系统建模和仿真是至关重要的。

Matlab 是一款功能强大的科学计算软件,它提供了丰富的工具和函数以便于系统建模和仿真的研究。

本文将介绍使用Matlab 进行复杂系统建模和仿真的一些技巧和方法。

第一部分: 建立系统模型1.1 了解系统特性在开始建模之前,必须对所研究的系统有一个清晰的了解。

这包括系统的输入、输出、状态和参数等。

通过对系统特性的分析,可以帮助我们确定建立适合的模型类型和仿真方法。

1.2 选择合适的模型类型根据系统的特性,选择合适的模型类型是至关重要的。

在 Matlab 中,常用的模型类型包括线性模型、非线性模型、离散模型和连续模型等。

根据系统的特点选择适合的模型类型能够更好地反映系统的行为和响应。

1.3 系统建模方法系统建模是根据实际情况将系统抽象成一个数学模型的过程。

在 Matlab 中,可以使用不同的建模方法,如物理建模、数据建模和基于状态空间法的建模等。

根据系统的特征选择合适的建模方法能够提高模型的准确性和可靠性。

第二部分: 数学工具与仿真技巧2.1 使用符号计算工具Matlab 提供了符号计算工具箱,可以对数学表达式进行符号计算,如求解方程、导数和积分等。

使用符号计算工具能够简化复杂系统的数学推导和计算。

2.2 优化算法与工具在系统建模过程中,通常需要优化模型参数以使模型与实际系统更好地匹配。

Matlab 提供了各种优化算法和工具,如遗传算法、模拟退火算法和最小二乘法等,可以帮助我们自动化地调整参数并优化模型。

2.3 频域分析与控制设计频域分析是研究系统在不同频率下的响应特性的方法。

Matlab 提供了丰富的频域分析工具,如傅里叶变换、频谱分析和波特图等,可以帮助我们更好地理解系统的频率响应,并设计相应的控制系统。

经典-三阶系统的MATLAB仿真设计

经典-三阶系统的MATLAB仿真设计

经典-三阶系统的MATLAB仿真设计概述本文档介绍了如何使用MATLAB进行经典-三阶系统的仿真设计。

三阶系统是一种常见的线性系统,具有三个独立的输入和输出。

步骤1. 定义系统模型- 使用MATLAB的Control System Toolbox中提供的函数来定义三阶系统的传递函数。

- 传递函数的形式为:G(s) = (b0 * s^2 + b1 * s + b2) / (a0 * s^3 + a1 * s^2 + a2 * s + a3)。

- 修改传递函数中的系数(b0, b1, b2, a0, a1, a2, a3)以适应你的具体系统。

2. 设计控制器- 根据系统的性能要求,选择适当的控制器类型和参数。

- 可以选择PID控制器、模糊控制器或者其他控制器类型。

- 使用MATLAB的Control System Toolbox中提供的函数来设计和调整控制器参数。

- 调整控制器参数以达到所需的系统响应。

3. 进行仿真- 使用MATLAB的Simulink来建立系统的仿真模型。

- 将定义好的系统模型和设计好的控制器连接到仿真模型。

- 设置仿真时间和仿真步长。

- 运行仿真并观察系统的响应。

4. 优化控制器参数- 根据仿真结果,对控制器参数进行优化。

- 可以使用MATLAB的优化工具箱中提供的优化算法来寻找最佳控制器参数。

- 不断进行仿真和参数优化,直到系统的响应符合要求。

总结通过使用MATLAB进行经典-三阶系统的仿真设计,我们可以方便地设计和优化控制器参数,从而实现所需的系统性能。

根据具体的系统要求,可以使用不同的控制器类型和算法来实现最优的控制效果。

通过不断的仿真和参数优化,我们可以有效地改进系统的响应和稳定性。

某温度控制系统的MATLAB仿真

某温度控制系统的MATLAB仿真

某温度控制系统的MATLAB仿真1. 简介温度控制是很多工业过程中的一个重要环节,能够保证工业生产过程的稳定性和产品质量。

本文将介绍一个基于MATLAB的温度控制系统的仿真,包括系统的建模和控制算法的实现。

2. 温度控制系统建模温度控制系统一般由一个加热元件和一个温度传感器组成。

加热元件通过对电流或电压的控制来控制温度,温度传感器用于测量当前温度的值。

本文以一个简化的一维加热系统为例进行仿真。

2.1 系统参数设置首先,我们需要设置温度控制系统的一些参数,包括加热元件的功率、温度传感器的灵敏度和环境温度等。

这些参数可以在MATLAB中定义,如下所示:P = 100; % 加热元件功率K = 0.5; % 温度传感器灵敏度T_ambient = 25; % 环境温度2.2 系统动力学建模接下来,我们需要建立温度控制系统的动力学模型。

假设加热元件和温度传感器之间存在一定的传热延迟,我们可以使用一阶惯性模型进行建模。

系统的状态方程可以表示为:T_dot = (P - K * (T - T_ambient)) / C其中,T_dot为温度的变化率,T为温度的值,C为系统的热容量。

根据系统的动力学特性,我们可以选择合适的参数来建立系统模型。

3. 控制算法设计在温度控制系统中,我们需要设计一个控制算法来将温度稳定在设定的目标温度附近。

常用的控制算法包括比例控制、比例积分控制和模糊控制等。

本文选取比例积分控制(PI控制)作为控制算法进行仿真。

3.1 PI控制器设计PI控制器由一个比例项和一个积分项组成,其输出可以表示为:u(t) = K_p * (e(t) + (1 / T_i) * \\int_{0}^{t} e(\\tau) d\\tau)其中,e(t)为温度误差,K_p为比例系数,T_i为积分时间常数。

比例系数和积分时间常数的选择是控制器设计中的关键。

3.2 控制律实现在MATLAB中,我们可以使用控制系统工具箱来实现PI控制器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章系统仿真的MATLAB实现由于计算机技术的高速发展,我们可以借助计算机完成系统的数字仿真。

综前所述,数字仿真实质上是根据被研究的真实系统的模型,利用计算机进行实验研究的一种方法。

仿真的主要过程是:建立模型、仿真运行和分析研究仿真结果。

仿真运行就是借助一定的算法,获得系统的有关信息。

MATLAB是一种面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络和图像处理等学科的处理功能于一体,具有极高的编程效率。

MATLAB是一个高度集成的系统,MATLAB提供的Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统,能够在连续时间域、离散时间域或者两者的混合时间域里进行建模,它同样支持具有多种采样速率的系统。

在过去几年里,Simulink已经成为数学和工业应用中对动态系统进行建模时使用得最为广泛的软件包。

MATLAB仿真有两种途径:(1)MATLAB可以在SIMULINK窗口上进行面向系统结构方框图的系统仿真;(2)用户可以在MATLAB的COMMAND窗口下,用运行m文件,调用指令和各种用于系统仿真的函数,进行系统仿真。

这两种方式可解决任意复杂系统的动态仿真问题,前者编辑灵活,而后者直观性强,实现可视化编辑。

下面介绍在MATLAB上实现几类基本仿真。

7.1 计算机仿真的步骤在学习计算机仿真以前,让我们先总结一下计算机仿真的步骤。

计算机仿真,概括地说是一个“建模—实验—分析”的过程,即仿真不单纯是对模型的实验,还包括从建模到实验再到分析的全过程。

因此进行一次完整的计算机仿真应包括以下步骤:(1)列举并列项目每一项研究都应从说明问题开始,问题由决策者提供或由熟悉问题的分析者提供。

(2)设置目标及完整的项目计划目标表示仿真要回答的问题、系统方案的说明。

项目计划包括人数、研究费用以及每一阶段工作所需时间。

(3)建立模型和收集数据模型和实际系统没有必要一一对应,模型只需描述实际系统的本质或者描述系统中所研究部分的本质。

因此,最好从简单的模型开始,然后进一步建立更复杂的模型。

(4)编制程序和验证利用数学公式、逻辑公式和算法等来表示实际系统的内部状态和输入/输出的关系。

建模者必须决定是采用通用语言如MATLAB、FORTRAN、C还是专用仿真语言来编制程序。

在本教材中,我们选择的是MATLAB和其动态仿真工具Simulink。

(5)确认确认指确定模型是否精确地代表实际系统。

它不是一次完成,而是比较模型和实际系统特性的差异,不断对模型进行校正的迭代过程。

(6)实验设计确定仿真的方案、初始化周期的长度、仿真运行的长度以及每次运行的重复次数。

(7)生产性运行和分析通常用于估计被仿真系统设计的性能量度。

利用理论定性分析、经验定性分析或系统历史数据定量分析来检验模型的正确性,利用灵敏度分析等手段来检验模型的稳定性。

(8)文件清单和报表结果(9)实现图7.1是计算机仿真的程序图。

图7.1 计算机仿真程序流图7.2 基于数值积分法的连续系统仿真7.2.1 数值积分法的MATLAB实现MATLAB的工具箱提供了各种数值积分方法函数,这些函数是ODE23、ODE45、ODE113和ODE15s。

这些函数均是m文件,还有一个函数是ode1.C,是直接用C语言编写的。

函数ode23( )是用Runge-Kutta法求解微分方程。

它是一种采用三阶积分算法、二阶误差估计、变积分步长的低阶积分算法,调用格式为[T, Y] = ode23 ( 'F', TSPAN, YO, OPTIONS )其中,F为系统模型文件名,模型为y' = f( t, y )形式;TSPAN = [ T o TFINAL] 为积分计算时间,初值为T o ,终值为TFINAL ; YO 为系统输出初始值;OPTIONS 选项积分计算相对允差 'RelTol' 和绝对允差 'AbsTol',当缺省时,Reltol =1e-3, AbsTol =1e-6T 为计算点时间向量,Y 为微分方程的解。

函数ode45( )也是用Runge-Kutta 法求解微分方程,它是变步长的一种中等阶次积分算法,调用格式为[T, Y] = ode45 ( 'F' , TSPAN, YO, OPTIONS )各项含义同上。

函数ode113( )是变阶的Adams-Bashforth-Moulton ,用变阶方法解微分方程,采用多步法,调用格式为[T, Y] = ode113 ( 'F', TSPAN, YO, OPTIONS )各项含义同上。

函数odel5s( )采用改进的Gear 法解微分方程,调用格式为 [T, Y] = odel5s ( 'F', TSPAN, YO, OPTIONS ) 各项含义同上。

MATLAB 还提供了解微分方程函数ode23s 。

函数ode1.C 是用Euler 法求解微分方程。

在SIMULINK 中,系统仿真有变步距和固定步距两种工作方式。

在变步距仿真中,可选用ode45、ode23、ode113、ose15s 和ode23s 。

在固定步距仿真中,可选用材ode5、ode4、ode3、ode2和ode1。

ode5是5阶Runge-Kutta 法,ode4是4阶Runge-Kutta 法,odel 是Euler 法。

【例7.1】求微分方程1 x 10,t 0 5,x x0=≤≤+= 。

用MATLAB 编写程序: 建立一个m 函数文件dfun.mfuncion y =dhfn ( t ,x ) y =sqrt ( 3*x )+5 ;在MATLAB COMMAND 窗口下运行 % MATLAB PROGRAM 7-1 [ t, x ]=ode23 ( 'dfun',[0 l0],1) ; Plot ( t ,x ) ;7.2.2 基于数值积分法的连续系统的数字仿真对于一个n 阶微分方程表示的连续系统,也可以用具有n 个状态变量的状态空间表达式来描述:DU CX YBU AX X+=+=状态方程BU AX X += 实际上是n 个一阶微分方程组成的方程组。

如果应用四阶Runge-Kutta 法进行仿真计算。

则该式可以改写为h)BU(t )hK A(X K ))2h BU(t K 2h A(X K )2h BU(t )K 2h A(X K BU AX K )K 2K 2K (K 6hX X k 3k 4k 2k 3k 1k 2k k 14321k 1k +++=+++=+++=+=++++=+式中,K 1,K 2,K 3,K 4均为n 维列向量。

系统输出为y k =CX k +DU( t k )类似地,可将各种数值积分方法用于连续系统的仿真中。

【例7.2】用MATLAB编写图7.2所示液压控制系统的仿真程序。

图7.2 系统方框图用MATLAB编写仿真程序,采用四阶Runge-Kutta法:% MATLAB PROGRAM 7-2% ****** Input system data ***** %调入数据文件hynat;% Input system function; %调入系统模型ypfun1 = ' valve ';ypfun = ' hysys ';% Initialization %初始化yref = 5000; % Referent value of system outputx0 = [0 0]; % Initial value of servo valvey0 = [0 0 0]; % Initial value of hydraulic cylinderu0 = 0;t0 = 0; % Start time of simulationtfinal = 1; % End time of simulationtsamp = 0.01; % Sample periodh = 0.001; % Simulation step sizeY1imit = 512;Ilimit = 40;max_epoch = fix ( tfinal / h )-1;t = t0;u1 = u0;x = x0';y = y0;tout = zeros ( max_epoch, 1 );uout = zeros ( max_epoch, 1);yd = zeros ( max_epoch, 1 );yout = zeros ( max_epoch, legth ( y ) );i = 1;tout ( i ) = t;uout ( i ) = 1;yd ( i ) = Kf * y ( l );yout ( i, : ) = y';% The main loopfor i = 1 : max_epoch% Compute output of valvesvl = feval ( ypfun1, t, u, x, av, bv );sv2 = fcval (ypfun1, t+h/2, u, x+h*sv1/2, av, hv ); %模块valve仿真sv3 = feval (ypfun1, t+h/2, u, x+h*sv2/2, av, hv );sv4 = feval (ypfun1, t+h, u, x+h*sv3, av, hv);x = x+h*(svl+2*sv2+2*sv3+sv4)/6;vo = cv*x;% Compute output of cylinderxl = feval (ypfun, t, vo, y, a, b);s2 = feval (ypfun, t+h/2, vo, y+h*s1/2, a, h); %模块hysya 仿真s3 = feval (ypfun, t+h/2, vo, y+h*s2/2, a, b);s4 = feval (ypfun, t+h u, vo, y+h*s3, a, b);y = y+h* (sl+2*s2+2*s3+s4)/6;i=i+lt=t+h;tout(i) =t;uout(i) =u;yd(i)=Kf*y(l);yout(i, :) = y';% Discrete control process %离散控制量计算if abs (round (t/tsamp)-t/tsamp)<le-9ye = yref-y(l)*Kf;ul=Kd*ye;% Saturation blockif ul>Ylimitxl=ylimit ;else if ul<-ylimitxl =-Ylimit;else xl = ul;endend% D/A conversionx2 = Kda*xl;% Amplifier gainx3=Ka*x2;% V/I conversionu4=Kvi*x3;% limit of currentif u4>Ilimitx4=Ilimit;else if u4<-Ilimitx4=-Ilimit;else x4 =u4;endendu = Kq*x4;end % for discrete section end % for main loop% save data to file %存储仿真数据hout = [tout uout yout];save hout.dat hout -ascii;plot (tout, yd, ' y');gird;m 函数文件valve .mfunction xd = valve (t, u, x, av, bv)xd = av*x+hv*u;m 函数文件hysys. Mfunction yd=hysys(t, u, y, a, b)yd = a* y+h*u上例的仿真结果如图7.3所示。

相关文档
最新文档