双容水槽液位系统

更新时间:2024-01-25 16:42:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

双容水箱液位控制系统是采用先进的控制算法完成对过程液位的控制的控制系统,它在多种行业的生产加工过程中有广泛应用。本次毕业设计的课题是双容水箱的PID液位控制系统的仿真。本文的主要内容包括:对水箱的特性确定与实验曲线分析,通过实验法建立了液位控制系统的水箱数学模型,设计出了多种控制系统,针对所选液位控制系统选择合适的PID算法。以LabVIEW为开发软件,以MATLAB为编程和仿真软件,建立液位控制系统的实验平台,研究传统PID控制、数字式PID控制以及模糊自适应PID控制的控制效果,对参数的整定及各个参数的控制性能的比较,对所得到的仿真曲线进行分析,总结了参数变化对系统性能的影响。

关键词:双容水槽;PID控制;labVIEW;MATLAB

I

Abstract

Double-Holding water tank level control system is the control system adopts advanced control algorithm to control the process level, with its wide application in various production processes in the industry. This graduation project topic is the simulation of Double-Holding water tank control system of PID. The main content of this paper includes: determining the analysis and experimental curves of water tank, water tank level control system mathematical model was established by using the experimental method, design a variety of control system for the liquid level control system, choose the right PID algorithms. Taking LabVIEW as the development software, MATLAB software programming and simulation, experimental platform for the establishment of liquid level control system, the traditional PID control, digital PID control and fuzzy adaptive PID control, control performance compared to the tuning parameters and each parameter, the curves of simulation analysis, summarizes the influence of the parameters on the system performance.

Keywords: Double-Holding water tank ;PID control; LabVIEW; MATLAB

II

目 录

1 引言 .......................................................................... 1

1.1 课题背景与意义 ........................................................... 1 1.2 课题的研究现状 ........................................................... 1 2 课题内容及任务 ................................................................ 3

2.1 设计内容 ................................................................. 3 2.2 设计任务 ................................................................. 3 3 整体方案设计 .................................................................. 4 4 具体操作步骤 .................................................................. 6

4.1 建立数学模型 ............................................................. 6 4.2 软件操作介绍 ............................................................. 8

4.2.1 LabVIEW简介 ....................................................... 8 4.2.2 MATLAB简介 ....................................................... 11 4.3 传统PID控制器的设计 .................................................... 12

4.3.1 PID控制原理 ...................................................... 12 4.3.2 PID参数整顿方法 .................................................. 15 4.3.3 Labview设计传统PID控制器 ........................................ 16 4.4 数字式PID控制器的设计 .................................................. 17

4.4.1 位置式PID控制算式 ................................................ 18 4.4.2 增量式PID控制算式 ................................................ 19 4.4.3 Labview设计数字式PID控制器 ...................................... 20 4.5 模糊自适应式PID控制器的设计 ............................................ 22

4.5.1 模糊自适应PID控制简介 ............................................ 22 4.5.2 模糊自适应PID控制器的控制原理 .................................... 22 4.5.3 Labview设计模糊自适应PID控制器 .................................. 25 4.6 系统主界面的设计 ........................................................ 26

4.6.1 系统主界面前面板的设计 ............................................ 26 4.6.2 系统主界面程序框图的设计 .......................................... 27 4.7 双容水槽动画演示界面的设计 .............................................. 28

4.7.1 双容水槽动画演示前面板的设计 ...................................... 28 4.7.2 双容水槽动画程序框图的设计 ........................................ 29

5 结论 ......................................................................... 30 6 参考文献 ..................................................................... 31 7 致谢 ......................................................................... 33 附录一 传统PID控制器程序图 ..................................................... 34 附录二 数字式PID控制器程序图 ................................................... 36 附录三 模糊自适应PID控制器程序图 ............................................... 38

中原工学院毕业设计(论文)

1 引言

1.1 课题背景与意义

人们生活以及工业生产经常涉及到液位的控制问题,例如食品加工、饮料、

居民生活用水的供应、溶液过滤等多种行业的生产加工过程, 通常要用到蓄水池。蓄液池中的液位需要维持合适的高度,太满容易溢出造成浪费,过少则无法满足生产需求。因此,需要设计合适的控制器自动调整蓄液池的进出水流量,使得蓄液池内液位保持正常水位,以保证产品的质量和生产效益。这些不同背景的实际问题都可以简化为水箱的液位控制问题。因此液位是工业控制过程中一个非常重要的参数。特别是在动态的状态下,采用合适的方法对液位进行检测、控制,能收到很好的生产效果。水箱液位控制系统的设计应用非常广泛,可以把一个复杂的液位控制系统简化成一个水箱液位控制系统来实现。

随着计算机技术的快速发展和普及,如今测控领域的一个重要发展趋势就是以计算机技术为中心的虚拟仪器。虚拟仪器以透明的方式把计算机资源(如微处理器、内存、显示器等)与仪器硬件(如A/D、D/A、数字I/O、定时器、信号调理等)的测量、控制能力结合在一起,通过软件实现对数据的分析处理、表达以及图形化用户接口[1]。

LabVIEW 是美国NI 公司开发的一种基于图形语言的软件开发平台,集成了大量图形界面的模板, 自身功能强大, 在测试与测量、过程控制与处理、科学研究和分析等方面有广泛的应用。但是, 在实际应用中,对于一些需要进行大量数据运算处理的复杂应用,LabVIEW并不能很好的满足系统对运算速度等方面的要求。MATLAB是一种功能强、效率高、简单学的数学软件, 有可靠的数值计算和符号计算功能、强大的绘图功能、简单易学的语言体系以及为数众多的应用工具。但是MATLAB的数据输入、网络通信和硬件控制等方面都比较繁琐。如果把LabVIEW 与MATLAB相结合使用, 无疑将使虚拟仪器的数据处理及绘图等功能更加强大。因此, 用LabVIEW 与MATLAB之间的混合编程, 在功能上互补, 具有实用价值。

1.2 课题的研究现状

随着计算机、网络通讯技术的发展与应用,使得教学形式和内容发生了变化,也改变了实验教学的模式,国内外的高校越来越重视控制理论实验室的建设,引进

1

中原工学院毕业设计(论文)

先前的实验教学软硬件设备,建立机电一体化的综合实验室,为学生提供了更多实验空间,激发了学生的学习兴趣,使学生的综合能力得到提升。

目前实验系统的教学从模式上可分为两类。一是演示型实验系统教学:在这种实验教学方法中,教师讲解实验内容并作示范动作,学生通过观察教师的演示和实验结果来加深对某个知识点的理解和记忆并作模仿式练习。二是自主、探究性型实验系统教学:自主、探究性实验教学模式的核心思想是,以课题性问题为起点,以实验过程与实验方法为轴心展开教学,力求使学生主动构建知识与技能,提升情感、态度与价值观。学生思考、设计、探索、体验在前,教师的演示、讲解、分析、评论在后。学生可自行选择实验对象,进行系统分析,设计实验方案,进行具体实验操作,完成整个实验过程。在实验过程中出现了故障和错误,学生自行进行分析,不断改进,知道完成任务。这样就培养和提高了学生的动手能力以及分析问题和解决实际问题的能力。在实验过程中学生可以自己提出问题,并相互交流、讨论,促进同学间的互相学习。

LabVIEW作为虚拟仪器开发系统的杰出代表,目前在国内的应用主要在测量测试和过程控制领域,在实验系统教学方面的应用少。而在国外很多高校都将LabVIEW引入控制理论的教学和实验研究。一些发达国家高等院校,为了将抽象的控制问题更形象更直观的展现给学生,使学生更容易接受,配备了机械教学系统如倒立摆、直流电机等直线型和旋转控制对象。我国需要建立控制系统设计、仿真、实验的机电一体化的综合实验室,全方位的满足自动控制的教学要求。

2

中原工学院毕业设计(论文)

2 课题内容及任务

2.1 设计内容

本课题以双容水槽液位控制系统为研究对象,以LabVIEW为开发软件,以MATLAB为编程和仿真软件,建立液位控制系统的实验平台,研究传统PID控制、数字式PID控制以及模糊自适应PID控制效果,并基于过程控制实验系统的双水箱液位系统,在计算机控制系统上对该平台进行应用研究。

2.2 设计任务

(1)完成双容水槽建模; (2)设计传统PID控制器;

(3)设计数字式PID控制器以及模糊自适应PID控制器; (4)扩展装置功能。

3

中原工学院毕业设计(论文)

3 整体方案设计

系统的原理框图如图3-1所示

扰动f1(t) 副调 执行器 扰动f2(t) 输出值C 主对象 主调

— 节器 设定值R 副对象 — 节器 测量与变送器2 测量与变送器1 图3-1系统总体方案图

本课题建立的串级控制系统由主副两个控制回路组成,每一个回路又有自己的调节器和控制对象。主回路中的调节器称主调节器,控制主对象。副回路中的调节器称副调节器,控制副对象。主调节器有自己独立的设定值R,其输出作为副调节器的给定值,副调节器的输出控制执行器,以改变主参数.通过针对双容水箱液位被控过程设计串级控制系统,将努力使系统的输出响应在稳态时系统的被控制量等于给定值,实现无差调节,并且使系统具有良好的动态性能,较块的响应速度。当有扰动f1(t)作用于副对象时,副调节器能在扰动影响主控参数之前动作,及时克服进入副回路的各种二次扰动,当扰动f2(t)作用于主对象时,由于副回路的存在也应使系统的响应加快,使主回路控制作用加强[2]。 (1) 被控参数的选择

应选择被控过程中能直接反映生产过程能够中的产品产量和质量,又易于测量的参数。在双容水箱控制系统中选择下水箱的液位为系统被控参数,因为下水箱的液位是整个控制作用的关键,要求液位维持在某给定值上下。如果其调节欠妥当,会造成整个系统控制设计的失败,且现在对于液位的测量有成熟的技术和设备,包括直读式液位计、浮力式液位计、静压式液位计、电磁式液位计、超声波式液位计等。

4

中原工学院毕业设计(论文)

(2) 控制参数的选择

从双容水箱系统来看,影响液位有两个量,一是通过上水箱流入系统的流量,二是经下水箱流出系统的流量。调节这两个流量都可以改变液位的高低。但当电动调节阀突然断电关断时,后一种控制方式会造成长流水,导致水箱中水过多溢出,造成浪费或事故。所以选择流入系统的流量作为控制参数更合理一些。 (3) 主副回路设计

为了实现液位串级控制,使用双闭环结构。副回路应对于包含在其内的二次扰动以及非线性参数、较大负荷变化有很强的抑制能力与一定的自适应能力。主副回路时间常数之比应在3到10之间,以使副回路既能反应灵敏,又能显著改善过程特性。下水箱容量滞后与上水箱相比较大,而且控制下水箱液位是系统设计的核心问题,所以选择主对象为下水箱,副对象为上水箱,。 (4) 控制器的选择

根据双容水箱液位系统的过程特性和数学模型选择控制器的控制规律。为了实现液位串级控制,使用双闭环结构,主调节器选择比例积分微分控制规律(PID),对下水箱液位进行调节,副调节器选择比例控制率(P),对上水箱液位进行调节,并辅助主调节器对于系统进行控制,整个回路构成双环负反馈系统[3]。

5

中原工学院毕业设计(论文)

4 具体操作步骤

4.1 建立数学模型

图4-1 双容水槽

双容水槽是由两个串联单容水槽构成,如图4-1所示,对其液位的控制具有非线性、延时特性的复杂的不稳定系统。其输入量为调节阀1产生的阀门开度变化?u,而输出量为第二个水槽的液位增量?h2。来水首先进人第一个水箱,然后从第二个水箱流出,与一个水箱相比,由于增加了一个水箱,被控量的响应在时间上更落后一步,即存在容积延迟,从而导致该过程难以控制。

在水流量增量、水槽液位增量及液阻之间,经平衡点线性化后,有如下关系:

?Q1??Q2?C2d?h2 (4-1) dt ?Q1??h1?h,?Q2?2 (4-2) R1R2d?h1 (4-3) dt ?Q2??Q1?C1 ?Q2?Ku?u (4-4)

式中,C1和C2为两液槽的容量关系,R1和R2为两液槽的液阻.经推导得:

C1d?h1?h1??Ku?u (4-5) dtR1整理后可得:在零初始条件下,双容水槽的传递函数为:

6

中原工学院毕业设计(论文)

G(s)??H2(s)K (4-6) ??U(s)T1T2s2?(T1?T2)s?1若双容水槽调节阀1开度变化所引起的流入水量变化还存在纯延迟,则其传递函数为:

G(s)?K??se (4-7) 2T1T2s?(T1?T2)s?1 式4.7中,T1?R1?C2为第一个水槽的时间常数;T2?R2?C2为第二个水槽的时间常数,K为双容水槽的传递函数系数,双容水槽呈二阶特性[4]。

在本设计中将通过实验建模的方法,分别测定被控对象上水箱和下水箱在输入阶跃信号后的液位响应曲线和相关参数。通过磁力驱动泵供水,手动控制电动调节阀的开度大小,改变上水箱/下水箱液位的给定量,从而对被控对象施加阶跃输入信号,记录阶跃响应曲线。如图4-2所示。在测定模型参数中可以通过以下两种方法控制调节阀,对被控对象施加阶跃信号:

(1) 通过智能调节仪表改变调节阀开度,增减水箱的流入水量大小,从而改变水箱液位实现对被控对象的阶跃信号输入。

(2)改变调节阀开度,控制水箱进水量的大小,从而改变水箱液位,实现对被控对象的阶跃信号输入。

施加阶跃信号 供水 电动磁力泵 控制进水量 阶跃响应输出

电动调节阀 上水箱/下水箱 图4-2 水箱模型测定原理图

然后记录阶跃响应参数(间隔2 min采集数据),如表4-3所示

表4-3下水箱阶跃响应数据

0 144 20 182 2 146 22 184 4 149 24 186 6 153 26 188 8 164 28 189 10 168 30 191 12 171 32 192 14 174 34 194 16 177 36 194 18 180 38 194 由于实验测定数据存在误差,直接使用计算法求解水箱模型会使误差增大。所

7

中原工学院毕业设计(论文)

以使用excel软件对实验数据进行处理,根据最小二乘法对响应曲线进行最佳拟合后,再计算水箱模型。将阶跃响应初始点的值作为Y轴坐标零点,后面的数据依次减去初始值处理,作为Y轴上的各阶跃响应数据点,采样时间作为X轴。可得出如图4-4所示。

图4-4 下水箱阶跃响应液位数据

根据试验所测得的数据图像,通过两点法和计算法,可以得到该传递函数的传递系数为:K?2.22,T1?2,T2?4,??9,由此可确定本次课题的传递函数为:

G(s)?2.22?9se (4-8) 28s?6s?1

4.2 软件操作介绍

4.2.1 LabVIEW简介

LabVIEW应用的是G语言软件开发平台,在编程过程中,不需要写文本程序代

码,而是使用流程图的形式编程,因此,LabVIEW容易学习,使用者可以快速掌握,可以直接在工程技术中得以应用。使用LabVIEW软件进行设计和构建测试系统时,可以减少工作时间,降低工作强度,提高工作效率。所有的LabVIEW应用程序,即虚拟仪器(VI),它包括前面板(front panel)、流程图(block diagram)和图标/连结器(icon/connector)三部分部分。

前面板是LabVIEW与用户交流和通讯的界面,其外观和界面模拟了传统仪器操作界面,其操作类似于对普通仪器的操作。前面板上的控件根据输入和输出功能可分为输入控件和显示控件两类,输入控件传递用户操作信息给程序框图,例如按钮、

8

中原工学院毕业设计(论文)

开关、拉杆和旋钮等,显示控件用于显示输出结果,例如图表,数字显示框和指示灯等。流程图提供VI的图形化源程序。在流程图中对VI编程,一控制和操作定义在前面板上的输入和输出功能。流程图中包括前面板上的控件的连线端子,还有一些前面板上没有,但编程必须有的东西,例如函数、解雇和连线等。图标/连结器是用来定义子VI的输入和输出参数,与文本编程语言中的函数的输入输出参数类似[5]。

在LabVIEW的用户界面上,应特别注意其提供的操作模板,包括工具模板、控制模板和函数模板。这些模板集中反映了该软件的功能与特征。

工具模板提供了用于创建、修干和调试VI程序的各种工具。如果该模板没有出现,则可以在“查看”菜单下选择“工具选板”命令以显示该模板。当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。当从Windows菜单下选择了“显示即时帮助”功能后,把工具模板内选定的任一种工具光标放在流程图程序的子程序(Sub VI)或图标上,就会显示相应的帮助信息。

表4-5 工具图标功能表

图标 名称 Operate Value (操作值) Position/Size/Select (选择) Edit Text (编辑文本) Connect Wire (连线) 功 能 用于操作前面板的控制和显示。使用它向数字或字符串控制中键入值时,工具会变成标签工具 用于选择、移动或改变对象的大小。当它用于改变对象的连框大小时,会变成相应形状。 用于输入标签文本或者创建自由标签。当创建自由标签时它会变成相应形状。 用于在流程图程序上连接对象。 用鼠标左键可以弹出对象的弹出式菜单。 Object Shortcut Menu(对象菜单) 使用该工具就可以不需要使用滚动条而在窗口中漫Scroll Windows (窗口漫游) 游。 Set/Clear Breakpoint使用该工具在VI的流程图对象上设置断点。 (断点设置/清除) 控件模板用来给前面板设置各种所需的输出显示对象和输入控制对象。每个图标代表一类子模板。控件选板只有在打开前面板的时候才会出现,如果控件选板不显示,可以用Windows菜单的查看功能打开控件选板,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板。控制模板子模块如表4-6所示。

9

中原工学院毕业设计(论文) 表4-6 控件选板子模块功能表

图标

子模板名称 Numeric (数值量) Boolean (布尔量)

功 能

数值的控制和显示。包含数字式、指针式显示表盘及各种输入框。

逻辑数值的控制和显示。包含各种布尔开关、按钮以及指示灯等。

字符串和路径的控制和显示。 数组和簇的控制和显示。 列表和表格的控制和显示 显示数据结果的趋势图和曲线图。

String & Path (字符串和路径)

Decorations

(装饰) Select a Controls (控制选择) User Controls (用户控制) Classic Controls (经典控制) Activex Array & Cluster(数组和簇) List & Table (列表和表格) Graph (图形显示)

环与枚举的控制和显示。 Ring & Enum

(环与枚举)

I/O 输入/输出功能。于操作OLE、ActiveX等功能。 (输入/输出能)

Refnum 参考数

经典控制,指以前版本软件的面板图标。 用于ActiveX等功能。

用于给前面板进行装饰的各种图形对象。 调用存储在文件中的控制和显示的接口。 用户自定义的控制和显示。

函数选板是创建流程图程序的工具。该模板上的每一个顶层图标都表示一个子模板。函数选板只有在打开程序框图的时候才会出现,若函数选板不出现,则可以用Windows菜单下的查看功能打开函数选板,也可以在流程图程序窗口的空白处点击鼠标右键以弹出功能模板。函数选板的子模块如表4-7所示。

表4-7 函数选板子模块功能表

图标

子模板名称 Structure(结构)

功 能

包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量。

10

中原工学院毕业设计(论文)

Numeric(数值运算) 包括各种常用的数值运算,还包括数制转换、三角函数、

对数、复数等运算,以及各种数值常数。 Boolean(布尔运算)

Cluster(簇)

Comparison(比较)

Analyze(分析)

Mathematics(数学) 包括统计、曲线拟合、公式框节点等功能模块,以及数

值微分、积分等数值计算工具模块。

Application Control 包括动态调用VI、标准可执行程序的功能函数。 (应用控制)

信号发生、时域及频域分析功能模块及数学工具 。

Time & Dialog (时间和对话框)

File I/O

(文件输入/输出) Data Acquisition (数据采集) Waveform(波形)

包括簇的处理函数,以及群常数等。这里的群相当于C语言中的结构。

包括各种比较运算函数,如大于、小于、等于。 包括对话框窗口、时间和出错处理函数等。 包括处理文件输入/输出的程序和函数。

包括数据采集硬件的驱动,以及信号调理所需的各种功能模块。

各种波形处理工具

包括各种逻辑运算符以及布尔常数。

String(字符串运算) 包含各种字符串操作函数、数值与字符串之间的转换函

数,以及字符(串)常数等。

包括数组运算函数、数组转换函数,以及常数数组等。 Array(数组)

应用LabVIEW完成控制系统实验平台开发的关键是要对上述的各种子模块的功能熟练掌握,控件选板的各个子模块在前面板形成类似于实物操作时的各种仪器,而函数选板的各个子模块就类似于实物动作时所遵循的程序语言[6]。

4.2.2 MATLAB简介

MATLAB软件是由美国MathWorks公司开发的,是目前国际上最流行、应用最广泛的科学与工程计算软件,它广泛应用于自动控制、数学运算、信号分析、计算机技术、图形图象处理、语音处理、汽车工业、生物医学工程和航天工业等各行各业,也是国内外高校和研究部门进行许多科学研究的重要工具。

MATLAB最早发行于1984年,经过10余年的不断改进,现今已推出基于Windows 2000/xp的MATLAB 7.0版本。新的版本集中了日常数学处理中的各种功能,包括高

11

中原工学院毕业设计(论文)

效的数值计算、矩阵运算、信号处理和图形生成等功能。在MATLAB环境下,用户可以集成地进行程序设计、数值计算、图形绘制、输入输出、文件管理等各项操作。 MATLAB提供了一个人机交互的数学系统环境,该系统的基本数据结构是复数矩阵,在生成矩阵对象时,不要求作明确的维数说明,使得工程应用变得更加快捷和便利。

MATLAB系统由五个主要部分组成:

(1)MATALB语言体系 MATLAB是高层次的矩阵/数组语言,具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。利用该体系既可以进行小规模编程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。

(2)MATLAB工作环境 对MATLAB提供给用户使用的管理功能的总称,包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。

(3)图形与图像系统 MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。

(4)MATLAB数学函数库 对MATLAB使用的各种数学算法的总称,包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。

(5)MATLAB应用程序接口(API) MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用于程序(动态链接),读写MAT文件的功能。

MATLAB还具有根强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。MATLAB具有丰富的可用于控制系统分析和设计的函数,MATLAB的控制系统工具箱(Control System Toolbox)提供对线性系统分析、设计和建模的各种算法;MATLAB的系统辨识工具箱(System Identification Toolbox)可以对控制对象的未知对象进行辨识和建模。MATLAB的仿真工具箱(Simulink)提供了交互式操作的动态系统建模、仿真、分析集成环境。它用结构框图代替程序智能化地建立和运行仿真,适应线性、非线性系统;连续、离散及混合系统;单任务,多任务离散事件系统[7]。

通过MATLAB中的Simulink工具箱可以动态的模拟所的构造系统的响应曲线,以控制框图代替了程序的编写,只需要选择合适仿真设备,添加传递函数,设置仿真参数便可完成系统的仿真。

4.3 传统PID控制器的设计

4.3.1 PID控制原理

12

中原工学院毕业设计(论文)

理论上模拟PID控制器的理想算式为:

u(t)?Kp[e?

1tde(t)e(t)dt?T] (4-12) D?0Tidt式中u(t):控制器的输出

e(t):偏差设定值R与过程变量值PV之差。

KP :控制器的放大系数。

TI :控制器的积分时间常数。 TD :控制器的微分时间常数。

基于虚拟仪器的控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此,式4.12中的积分项和微分项不能准确计算,只能用数值计算的方法逼近,称为数字PID控制算式。数字PID控制算式通常又分为位置式PID控制算式和增量式PID控制算式[11]。 4.4.1 位置式PID控制算式

在采样时刻t?k?(θ为采样周期)时,式4.12表示的PID控制规律可以通过以下数值公式近似计算:

比例作用: up(k)?kpe(k) (4-13)

积分作用: uI(k)?

微分作用:

uD(k)?KCTDKP??e(i) (4-14) TTi?0?[e(k)?e(k?1)] (4-15)

式(4.13)、式(4.14)、式(4.15)表示的控制算法提供了执行机构的位置u(k),所以称为位置式PID控制算法,实际的位置PID控制器输出为比例作用、积分作用与微分作用之和,即

u(k)?up(k)?ui(k)?ud(k)?Kp{e(k)?

如果采样周期?取得足够小,这种逼近可相当准确,被控过程与连续控制过程

18

Td?[e(k)?e(k?1)]} (4-16)

中原工学院毕业设计(论文)

十分接近[12]。

这种算法的缺点是,由于全量输出,所以每次输出均与过去的状态有关,计算时要对e(k)进行累加,计算机运算工作量大。而且,因为计算机输出的u(k)对应的是执行机构的实际位置,如计算机出现故障,u(k)的大幅度变化,会引起执行机构位置的大幅度变化,这种情况往往是生产实践中不允许的。因而产生了增量式PID控制算式[13]。

4.4.2 增量式PID控制算式

增量式PID控制算式是指数字控制器的输出只是控制器的增量?u(k)。当执行机构需要的是控制量的增量(例如电动阀门)时,可由式(4.16)导出提供增量的PID控制算式。

根据递推原理可得:

u(k?1)?Kp{e(k?1)??Tii?o?e(i)??Tik?1Td?[e(k?1)?e(k?2)]} (4-17)

用式4.16减去式4.17可得:

?u(k)?Kp{e(k)?e(k?1)?e(k)?Td?[e(k)?2e(k?1)?e(k?2)]} (4-18)

式(4.18)称为增量式PID控制算式。可以看出,由于一般计算机控制系统采用恒定的采样周期?,一旦确定了KP、KI、KD ,只要使用前后3次测量值的偏差,即可由式(4.18)求出控制增量。

采用增量式算法时,计算机输出的控制增量?u(k)对应的是本次执行机构位(例如阀门开度)的增量。对应阀门实际位置的控制量,即控制量增量的积累,需要采用一定的方法来解决,例如用有积累作用的元件(如步进电机)来实现;而目前较多的是利用算式u(k)?u(k?1)??u(k)通过执行软件来完成[14]。

就整个系统而言,位置式与增量式控制算法并无本质区别,增量式控制虽然只是算法上作了一点改进,却带来了不少优点。由于计算机输出增量,所以误动作时影响小,必要时可以用逻辑判断的方法去掉。算式中不需要累加,控制增量Δu(k)的确定仅与最近k次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。

19

中原工学院毕业设计(论文)

但是增量式控制也有不足之处,积分截断效应大,有静态误差,溢出的影响大。因此,在选择时不可一概而论,一般认为在以晶闸管作为执行器或在控制精度要求高的系统中,可采用位置控制算法,而在以步进电机或电动阀门作为执行器的系统中,则可采用增量控制算法。而本次课题中的对象正是采用了电动阀门作为执行机构,且要求被控制液位波动小,所以采用了增量式PID控制算法。 4.4.3 Labview设计数字式PID控制器 (1)前面板设计

启动LabVIEW,建立新VI,选择前面板编辑,编辑完成后前面板如图4-16所示。前面板用到的主要控件有XY波形图、数值输入控件、数值输出控件以及布尔开关。

图4-15 数字式PID控制器前面板

数字式PID控制器前面板能够对此次二阶系统进行响应曲线显示,峰值时间、超调量和极值的显示,由图4-15可以看出,此实验系统与上面所述的传统PID型控制器前面板大同小异。数值型输出包括基于单位阶跃响应的峰值时间、超调量和极值指标输出,图形显示包括单位阶跃响应曲线。在前面板的控件选板中选择数值型输出控件,用来显示上述的数值型输出值。在控件选板中选择XY波形图,用来显示上述的曲线。布尔型控件开关用来停止实验系统。

20

中原工学院毕业设计(论文)

比较图4-13和图4-15可以看出,传统的PID控制器在实际的应用中,大多数的工业过程都不同程度的存在着非线性、参数时变性和模糊不确定性,而传统的PID控制主要是控制具有确定模型的线性过程,因此传统PID控制的控制效果就不是十分理想。超调量大,稳定时间长,而且不稳定。而数字式PID控制器就很好的解决 了这个问题,得到的阶跃响应曲线超调量小,稳定时间短,更加稳定。

(2)程序框图设计

数字式PID控制器的程序框图与传统PID控制的程序框图类似,都需要引入MATLAB脚本节点,在MATLAB脚本节点框上添加输入端和输出端,分别对应前面板上需要输入的变量和输出数值的控件,然后在MATLAB脚本节点框中输入程序语句, 控制系统操作运行。程序流程图如图4-16所示,程序框图如图4-17所示。PID控制程序见附录二。

开 始 计算e(n) 计算 a0e(n) 计算a1e(n?1) 计算a0e(n)?a1e(n?1) 计算a2e(n?2) 计算?u(n) 更新e(n?1),e(n?2) 返 回 图4-16 PID控制程序流程图

21

中原工学院毕业设计(论文)

图4-17 数字式PID程序框图

4.5 模糊自适应式PID控制器的设计

4.5.1 模糊自适应PID控制简介

很多人对这个模糊PID控制不是太了解,其实也没那么难理解。所谓模糊PID自适应控制器,即利用模糊逻辑算法并根据一定的模糊规则对PID控制的比例、积分、微分系数进行实时优化,以达到较为理想的控制效果。模糊PID控制共包括参数模糊化、模糊规则推理、参数解模糊、PID控制器等几个重要组成部分。计算机根据所设定的输入和反馈信号,计算实际位置和理论位置的偏差e以及当前的偏差变化ec,并根据模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制器的比例、积分、微分系数[15]。 4.5.2 模糊自适应PID控制器的控制原理

PID参数的模糊自适应是找出PID三个参数Kp、Ki、Kd与e和ec之间的模糊关系,在运行中通过不断的监测e和ec,根据模糊控制原理对三个参数进行在线的整定。PID参数的设定是靠经验及工艺的熟悉,参考测量值与设定值曲线,从而调

22

中原工学院毕业设计(论文)

整Kp、Ki和Kd的大小。模糊控制规则是用于修正PID参数的,模糊控制规则根据过程的阶跃响应情况来考虑求取[16]。规则如下所示:

(1)预选择一个足够短的采样周期让系统工作;

(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下比例放大系数和临界振荡周期﹔

(3)根据下表的具体规则修改PID控制器参数,直至满意为止[17]。

表4-18 模糊控制规则

条件 系统输出过大 系统的上升时间过大 稳态时系统输出波动 系统输出对干扰信号敏感 结果 减小Kd 增大Ki(优先);增大Kp 增大Kd 减小Kd 根据表4-

18所述的模糊控制规则,采用如下的PID参数的调节规则,如表4-19、表4-20、表4-21所示。

表4-19 Kp规则调节表

e ec NB NB NM NS ZO PS PM PB PB PB PM PM PS PS ZO NM PB PB PM PM PS ZO ZO NS PM PM PS PS ZO NS NM ZO PM PS ZO ZO NS NM NM PS PS PS ZO NS NS NM NM PM ZO ZO NS NM NM NM NB PB ZO NS NS NM NM NB NB 23

中原工学院毕业设计(论文)

表4-20 KI规则调节表

e ec NB NB NM NS ZO PS PM PB NB NB NB NM NM ZO ZO NM NB NB NM NM NS ZO ZO NS NM NM NS NS ZO PS PS ZO NM NS NS ZO PS PS PM PS NS NS ZO PS PS PM PM PM ZO ZO PS PM PM PB PB PB ZO ZO PS PM PB PB PB 表4-21 Kd规则调节表

e ec NB NB NM NS ZO PS PM PB NB NB NB NM NM ZO ZO NM NB NB NM NM NS ZO ZO NS NM NM NS NS ZO PS PS ZO NM NS NS ZO PS PS PM PS NS NS ZO PS PS PM PM PM ZO ZO PS PM PM PB PB PB ZO ZO PS PM PB PB PB PID三个参数的模糊规则库建立好以后,就可以根据模糊控制理论进行参数的

自调整。将系统误差e和误差变化率ec变化范围定义为模糊上的论域:

e,ec={-3,-2,-1,0,1,2,3}

24

中原工学院毕业设计(论文)

在模糊控制规律中,e和ec的语言变量值取“负大”(NB),“负中”(NM),“负小”(NS),“零”(ZO),“正小”(PS),“正中”(PM),“正大”(PB)共7个值[18]。

4.5.3 Labview设计模糊自适应PID控制器 (1)前面板设计

启动LabVIEW,建立新VI,选择前面板编辑,编辑完成后前面板如图4-22所示。前面板用到的主要控件有XY波形图、数值输入控件、数值输出控件以及布尔开关。由于模糊自适应PID控制是在运行中通过不断的监测e和ec,根据模糊控制原理对三个参数Kp、Ki、Kd进行在线的整定,所以在前面板中不再需要Kp、Ki、

Kd三个数值输入控件,只需要三个数值输出控件显示峰值时间、超调量和极值,图形显示仍然用XY波形图[19]。

图4-22 模糊自适应PID控制器前面板

前面板能够对二阶系统进行阶跃响应曲线显示及超调量和极值的显示,由图4-22可以看出,此实验系统数值型输出包括基于单位阶跃响应的峰值时间、超调量和极值指标输出,图形显示包括单位阶跃响应曲线。在前面板的控件选板中选择数值型输出控件,用来显示上述的数值型输出值。在控件选板中选择XY波形图,用来

25

中原工学院毕业设计(论文)

显示上述的曲线。布尔型控件开关用来停止实验系统。 (2)程序框图设计

模糊自适应PID控制器的程序框图也与普通PID控制和数字式的程序框图类似,都需要引入MATLAB脚本节点,在MATLAB脚本节点框上添加输入端和输出端,分别对应前面板上需要输入的变量和输出数值的控件,然后在MATLAB脚本节点框中输入程序语句,控制系统操作运行。程序框图如图4-23所示。模糊自适应PID控制程序见附录三。

图4-23 模糊自适应PID控制器程序框图

比较图4-13、图4-15和图4-22可以看到,在同样的阶跃响应下,与传统PID

控制和数字式PID控制相比,模糊自适应PID控制系统的上升时间和调节时间大大缩小,超调量明显减小,大大提高了系统的动态性能。

4.6 系统主界面的设计

4.6.1 系统主界面前面板的设计

系统研究的主界面是将前面所述的三种PID控制器操作界面,放到一个主界面中,操作的时候通过主界面的按钮选择进入任意一个PID控制器,方便快捷。可

26

中原工学院毕业设计(论文)

以将主界面单独做为一个VI,将三种PID控制器做成子VI,通过属性节点与主界面的VI相连接,以达到设计效果[20]。做好的主界面前面板如图4-24所示。

图4-24 主界面前面板

主界面前面板主要有四个按钮,其中左边的按钮三个代表三种不同的PID控制器,右下角的是“退出”按钮,中间部分的文字是对本次整个实验平台的研究方法和功能介绍。

4.6.2 系统主界面程序框图的设计

系统的主界面设计中,利用Labview中提供的edit menu菜单,先将要实现的功能作为菜单选项的内容,以便在运行时调用;然后在程序框图中对各项菜单的调用通过case结构进行选择,使各项菜单对应于各项子VI,在各子VI中File\\VI Properties的execution pions中选定show front panel when called选项,这样在运行中,当选择了菜单中的某些内容时,该子VI就被选中调用。菜单中包括系统操作(读取、存储、打印)、多通道显示和信号分析以及帮助等,程序分别调用相应功能的子VI程序,完成相应操作[21]。

这次系统主界面程序框图设计没有用到MATLAB脚本节点,相对前面三种PID控制器的程序框图设计起来稍显简单。主界面的程序框图如图4-25所示。

27

中原工学院毕业设计(论文)

7 致谢

本次课题研究是在我的导师王老师的多次指导下完成的。在本次课题研究过程中,我遇到了很多的困难和难题。在完成毕业设计过程中,王老师不辞辛劳,多次与我就课题中许多核心问题作深入细致地探讨,给我提出切实可行的指导性建议,并细心全面地修改了我的论文。从论文的选题到结构安排,从内容到文字润饰,都凝聚了她大量的心血。王老师不仅学识渊博,而且对学生很负责任,经常在百忙之中抽出时间给我们指导。王老师这种一丝不苟的负责精神,使我深受感动。更重要的是王老师在指导我的毕业设计和论文的过程中,始终践行着“授人以鱼,不如授之以渔”的原则。她常教导我要志存高远,严格遵守学术道德和学术规范,为以后的继续深造打好坚实的基础。在此,请允许我向尊敬的王老师表示真挚的谢意!

毕业设计即将结束,也就意味着大学四年的生活即将结束。在四年的学习和生活中,谢谢我周围的朋友和同学,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。完成毕业设计和论文的过程是无疑枯燥而又充满挑战性的,感谢和我一起做毕业设计的同学们,我们在一起学习,讨论,相互帮助。也正是因为毕业设计我们之间的友谊更加坚固,在一起度过了快乐而充实的三个月。

33

中原工学院毕业设计(论文)

附录一 传统PID控制器程序图

% PID Control Ts=20; Tlay plant a=P;

b=ki; c=kd; d=100;

tol=9; kp=2.22;

Tp=8,6,1;

sysP=tf([kp],[Tp,1],'inputdelay',tol); %Plant dsysP=c2d(sysP,Ts,'zoh'); [numP,denP]=tfdata(dsysP,'v'); M=3;

if M==2|M==3 %精确模型 kp1=kp; Tp1=Tp; tol1=tol; end

sysHO=tf([kp1],[Tp1,1]); %Model without delay dsysHO=c2d(sysHO,Ts,'zoh'); [numHO,denHO]=tfdata(dsysHO,'v');

sysHP=tf([kp1],[Tp1,1],'inputdelay',tol1); %Model with delay dsysHP=c2d(sysHP,Ts,'zoh'); [numHP,denHP]=tfdata(dsysHP,'v');

u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0; e1_1=0;

34

中原工学院毕业设计(论文)

e2=0.0; e2_1=0.0; ei=0; xm_1=0.0;

ym_1=0.0; y_1=0.0; A=zeros(1,d); B=zeros(1,d); for k=1:1:d

time(k)=k*Ts; %坐标时间长度

yd(k)=1.0; %产生阶跃信号 A(k)=yd(k);

y(k)=-denP(2)*y_1+numP(2)*u_5; B(k)=y(k);

%Prediction model

xm(k)=-denHO(2)*xm_1+numHO(2)*u_1; %GHO(z):没有延时 ym(k)=-denHP(2)*ym_1+numHP(2)*u_5; %GHP(z):有延时

if M==1 %No Precise Model: PI+Smith,不准确的模型:PI+Smith e1(k)=yd(k)-y(k); e2(k)=e1(k)-xm(k)+ym(k); ei=ei+Ts*e2(k); u(k)=a*e2(k)+b*ei; e1_1=e1(k);

elseif M==2 %Precise Model: PI+Smith e2(k)=yd(k)-xm(k); ei=ei+Ts*e2(k); u(k)=a*e2(k)+b*ei; e2_1=e2(k);

elseif M==3 %PID控制器 e1(k)=yd(k)-y(k); ei=ei+Ts*e1(k);

35

中原工学院毕业设计(论文)

ed=(yd(k)-y(k))/Ts; u(k)=a*e1(k)+b*ei+c*ed; e1_1=e1(k); end

%----------Return of smith parameters------------ xm_1=xm(k); ym_1=ym(k);

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_1=y(k); end

附录二 数字式PID控制器程序图

%Digital PID Controller % clear all; % close all; kp=o; ki=p; kd=q; ts=20;

sys=tf(2.22,[8,6,1],'inputdelay',9); dsys=c2d(sys,ts,'zoh'); [num,den]=tfdata(dsys,'v');

u_1=0.0;u_2=0.0;u_3=0.0; y_1=0;y_2=0;y_3=0;

x=[0,0,0]';

error_1=0; error_2=0;

36

中原工学院毕业设计(论文)

C=zeros(1,1000); D=zeros(1,1000); for k=1:1:1000 time(k)=k*ts;

yd(k)=1.0; C(k)=yd(k);

du(k)=o*x(1)+q*x(2)+p*x(3); u(k)=u_1+du(k);

if u(k)>=10 u(k)=10; end if u(k)<=-10 u(k)=-10; end

y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; D(k)=y(k); error=yd(k)-y(k);

u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=y(k);

x(1)=error-error_1; êlculating P x(2)=error-2*error_1+error_2; êlculating D x(3)=error; êlculating I

error_2=error_1; error_1=error; end % figure(1);

% plot(time,yd,'r',time,y,'k:','linewidth',2); % xlabel('time(s)');ylabel('yd,y');

37

中原工学院毕业设计(论文)

% legend('Ideal position signal','Position tracking');

附录三 模糊自适应PID控制器程序图

%模糊自适应PID控制 % clear all; % close all; a=newfis('fuzzpid');

a=addvar(a,'input','e',[-10,10]); a=addmf(a,'input',1,'NB','trimf',[-4 -3 -2]); a=addmf(a,'input',1,'NM','trimf',[-3 -2 -1]); a=addmf(a,'input',1,'NS','trimf',[-2 -1 0]); a=addmf(a,'input',1,'Z','trimf',[-1 0 1]); a=addmf(a,'input',1,'PS','trimf',[0 1 2]); a=addmf(a,'input',1,'PM','trimf',[1 2 3]); a=addmf(a,'input',1,'PB','trimf',[2 3 4]);

a=addvar(a,'input','ec',[-10,10]); a=addmf(a,'input',2,'NB','trimf',[-4 -3 -2]); a=addmf(a,'input',2,'NM','trimf',[-3 -2 -1]); a=addmf(a,'input',2,'NS','trimf',[-2 -1 0]); a=addmf(a,'input',2,'Z','trimf',[-1 0 1]); a=addmf(a,'input',2,'PS','trimf',[0 1 2]); a=addmf(a,'input',2,'PM','trimf',[1 2 3]); a=addmf(a,'input',2,'PB','trimf',[2 3 4]);

a=addvar(a,'output','kp',[-3,3]); a=addmf(a,'output',1,'NB','trimf',[-4 -3 -2]); a=addmf(a,'output',1,'NM','trimf',[-3 -2 -1]); a=addmf(a,'output',1,'NS','trimf',[-2 -1 0]); a=addmf(a,'output',1,'Z','trimf',[-1 0 1]); a=addmf(a,'output',1,'PS','trimf',[0 1 2]); a=addmf(a,'output',1,'PM','trimf',[1 2 3]);

38

%参数e %参数ec %参数kp 中原工学院毕业设计(论文)

a=addmf(a,'output',1,'PB','trimf',[2 3 4]);

a=addvar(a,'output','ki',[-3,3]); %参数ki a=addmf(a,'output',2,'NB','trimf',[-4 -3 -2]); a=addmf(a,'output',2,'NM','trimf',[-3 -2 -1]); a=addmf(a,'output',2,'NS','trimf',[-2 -1 0]); a=addmf(a,'output',2,'Z','trimf',[-1 0 1]); a=addmf(a,'output',2,'PS','trimf',[0 1 2]); a=addmf(a,'output',2,'PM','trimf',[1 2 3]); a=addmf(a,'output',2,'PB','trimf',[2 3 4]);

a=addvar(a,'output','ki',[-3,3]); a=addmf(a,'output',3,'NB','trimf',[-4 -3 -2]); a=addmf(a,'output',3,'NM','trimf',[-3 -2 -1]); a=addmf(a,'output',3,'NS','trimf',[-2 -1 0]); a=addmf(a,'output',3,'Z','trimf',[-1 0 1]); a=addmf(a,'output',3,'PS','trimf', [0 1 2]); a=addmf(a,'output',3,'PM','trimf',[1 2 3]); a=addmf(a,'output',3,'PB','trimf',[2 3 4]);

rulelist=[1 1 7 1 5 1 1;%模糊规则 1 2 7 1 3 1 1; 1 3 6 2 1 1 1; 1 4 6 2 1 1 1; 1 5 5 3 1 1 1; 1 6 4 4 2 1 1; 1 7 4 4 5 1 1;

2 1 7 1 5 1 1; 2 2 7 1 3 1 1; 2 3 6 2 1 1 1; 2 4 5 3 2 1 1; 2 5 5 3 2 1 1;

39

%参数kd 中原工学院毕业设计(论文)

2 6 4 4 3 1 1; 2 7 3 4 4 1 1;

3 1 6 1 4 1 1; 3 2 6 2 3 1 1; 3 3 6 3 2 1 1; 3 4 5 3 2 1 1; 3 5 4 4 3 1 1; 3 6 3 5 3 1 1; 3 7 3 5 4 1 1;

4 1 6 2 4 1 1; 4 2 6 2 3 1 1; 4 3 5 3 3 1 1; 4 4 4 4 3 1 1; 4 5 3 5 3 1 1; 4 6 2 6 3 1 1; 4 7 2 6 4 1 1;

5 1 5 2 4 1 1; 5 2 5 3 4 1 1; 5 3 4 4 4 1 1; 5 4 3 5 4 1 1; 5 5 3 5 4 1 1; 5 6 2 6 4 1 1; 5 7 2 7 4 1 1;

6 1 5 4 7 1 1; 6 2 4 4 5 1 1; 6 3 3 5 5 1 1; 6 4 2 5 5 1 1; 6 5 2 6 5 1 1; 6 6 2 7 5 1 1;

40

中原工学院毕业设计(论文)

6 7 1 7 7 1 1;

7 1 4 4 7 1 1; 7 2 4 4 6 1 1; 7 3 2 5 6 1 1; 7 4 2 6 6 1 1; 7 5 2 6 5 1 1; 7 6 1 7 5 1 1; 7 7 1 7 7 1 1]; a=addrule(a,rulelist);

a=setfis(a,'DefuzzMethod','centroid'); writefis(a,'fuzzpid');

% a=readfis('fuzzpid'); % figure(1); % plotmf(a,'input',1); % figure(2); % plotmf(a,'input',2); % figure(3);

% plotmf(a,'output',1); % figure(4);

% plotmf(a,'output',2); % figure(5); % plotfis(a);

%fuzzy fuzzpid; % showrule(a) % ruleview fuzzpid; % close all; % clear all;

warning off;

41

中原工学院毕业设计(论文)

a=readfis('fuzzpid'); %读取设定的的模糊控制器 ts=20;%采样时间 tol=9;

sys=tf([2.22],[8,6,1],'inputdelay',tol);%,构造系统传递函数 dsys=c2d(sys,ts,'zoh');%离散化 [num,den]=tfdata(dsys,'v');%得到系数 u1=0;u2=0; y1=0;y2=0; x=[0,0,0]; e1=0;ec1=0;

kp0=0.15;ki0=0.005;kd0=0; for t=1:1:50; time(t)=t*ts; r(t)=1;

fpid=evalfis([e1,ec1],a);%模糊推理 kp(t)=kp0+fpid(1);%得到新的参数 ki(t)=ki0+fpid(2); kd(t)=kd0+fpid(3);

u(t)=kp(t)*x(1)+ki(t)*x(2)+kd(t)*x(3);%PID输出 +kd(t)*x(3)

y(t)=-den(2)*y1-den(3)*y2+num(1)*u(t)+num(2)*u1+num(3)*u2;%系统输出 e(t)=r(t)-y(t);%计算误差 u2=u1;u1=u(t);%更新数据 y2=y1;y1=y(t); x(1)=e(t);%对应kp x(2)=x(2)+e(t)*ts;%对应ki x(3)=e(t)-e1;%对应kd ec1=e(t)-e1;%重新计算ec e1=e(t);%重新计算ec end % figure(1);

% plot(time,y,'g',time,r,'r'); % xlabel('times(s)');ylabel('r,y'); % legend('实际曲线','理想曲线');

42

中原工学院毕业设计(论文)

% figure(2);

% plot(time,kp,'g',time,ki,'r',time,kd,'b')

% legend('kp值变化趋势','ki值变化趋势','kd值变化趋势'); % clear all; % close all; Ts=20;

Tlay plant a=0.07 b=0.002 kp=2.22; Tp=8; tp1=6; tol=9;

sysP=tf([kp],[Tp,tp1,1],'inputdelay',tol); %Plant dsysP=c2d(sysP,Ts,'zoh'); [numP,denP]=tfdata(dsysP,'v'); M=3;

%Prediction model

if M==1 %No Precise Model: PI+Smith kp1=kp*1.10; Tp1=Tp*1.10; tol1=tol*1.0;

elseif M==2|M==3 %Precise Model: PI+Smith kp1=kp; Tp1=Tp; tol1=tol; end

sysHO=tf([kp1],[Tp1,1]); %Model without delay dsysHO=c2d(sysHO,Ts,'zoh'); [numHO,denHO]=tfdata(dsysHO,'v');

43

中原工学院毕业设计(论文)

sysHP=tf([kp1],[Tp1,1],'inputdelay',tol1); %Model with delay dsysHP=c2d(sysHP,Ts,'zoh'); [numHP,denHP]=tfdata(dsysHP,'v');

u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0; e1_1=0; e2=0.0; e2_1=0.0; ei=0;

xm_1=0.0; ym_1=0.0; y_1=0.0; C=zeros(1,300); D=zeros(1,300); for k=1:1:300

time(k)=k*Ts; %坐标时间长度 yd(k)=1.0; %产生阶跃信号 C(k)=yd(k);

y(k)=-denP(2)*y_1+numP(2)*u_5; D(k)=y(k); %Prediction model

xm(k)=-denHO(2)*xm_1+numHO(2)*u_1; %GHO(z):没有延时 ym(k)=-denHP(2)*ym_1+numHP(2)*u_5; %GHP(z):有延时

if M==1 %No Precise Model: PI+Smith,不准确的模型:PI+Smith e1(k)=yd(k)-y(k); e2(k)=e1(k)-xm(k)+ym(k); ei=ei+Ts*e2(k); u(k)=a*e2(k)+b*ei; e1_1=e1(k);

elseif M==2 %Precise Model: PI+Smith

44

中原工学院毕业设计(论文)

e2(k)=yd(k)-xm(k); ei=ei+Ts*e2(k); u(k)=a*e2(k)+b*ei; e2_1=e2(k);

elseif M==3 %Only PI e1(k)=yd(k)-y(k); ei=ei+Ts*e1(k); u(k)=a*e1(k)+b*ei; e1_1=e1(k); end

%----------Return of smith parameters------------ xm_1=xm(k); ym_1=ym(k);

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_1=y(k); end % figure(1);

% plot(time,yd,'r',time,y,'g','linewidth',1); % xlabel('time(s)');ylabel('yd,y'); % legend('理想曲线','实际曲线');

45

本文来源:https://www.bwwdw.com/article/tq9w.html

Top