数字PID控制算法仿真研究

更新时间:2024-02-01 02:15:01 阅读量: 教育文库 文档下载

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

数字PID控制算法仿真研究

摘要

PID控制是最早发展起来的控制策略之一,由于其算法简单,鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其用于可简历精确数学模型的确定性控制系统。而实际生产过程往往具有非线性、时变不确定性,难以建立精确的数学模型,应用常规PID控制器不能达到理想的控制效果。为了达到使PID控制能适应复杂的工况和高指标的控制要求,人们对PID控制进行了改进,出现了各种新型PID控制器,对于复杂对象,其控制效果超过常规PID控制。

本文介绍了PID控制技术的研究进展。分析了传统的模拟和数字PID控制算法,并对传统的PID控制算法进行微分项和积分项的改进,仿真研究了几种比较普遍运用的方法,包括积分分离PID控制算法、抗积分饱和PID控制算法、不完全微分PID控制算法、微分先行PID控制算法等。并在研究先进控制算法的基础上,将模糊控制与PID控制结合,实现模糊PID控制,利用模糊推理方法实现对PID参数的在线自整定。最后,根据现实情况,从系统的性能指标出发,针对实际控制对象,选择合适的PID控制算法,并用Matlab与Simulink软件进行仿真及研究,结果表明系统的控制效果良好。

关键词:PID;改进型PID;模糊PID;MATLAB/Simulink;仿真

I

大学本科毕业设计(论文)

Abstract

The PID control is a development to get up at the earliest stage of control one of the strategies.Because it's calculate way be simple.Drive extensive application at the industry process control.Particularly used for can mathematics model of the resume precision really settle sex control system.But the actual production line usually hasn't line,the hour change indetermination.Hard establishment the mathematics model of the precision.Application normal regulations PID the controller can't attain ideal of control effect.For attaining to make PID control ability orientation complications of work condition and Gao index sign of control request.People carried on an improvement to the PID control. Appeared various new PID controller.For complications object, it's control effect is far far above the normal regulations PID control.

In this paper,we will introduce the development history and the research progress of PID control technology,analysis the traditional analog and digital PID control algorithm.and improve the differential and integral of traditional PID control algorithm. Simulation and study several methods we used commom. Include Integral separation PID control algorithm,Anti-windup PID control algorithm, not fully differential PID control algorithm and first differential, when limited to weaken the integral PID control algorithm. And advanced control algorithms based on fuzzy control and PID control combined with fuzzy PID control, fuzzy reasoning method to achieve PID parameters online self-tuning. Finally, in accordance with reality, starting from the system of performance indicators for the actual control object, select the appropriate PID control algorithm, using Matlab and Simulink software to simulate and study.The results of Matlab simulation indicate that the control effect is good.

Keywords: PID; Improved PID; fuzzy PID; MATLAB/Simulink; Simulation

II

数字PID控制算法仿真研究

目录

摘要 ............................................................... I Abstract .......................................................... II 1绪论 .............................................................. 1 1.1设计目的意义 ................................................. 1 1.2国内外研究现状 ............................................... 1 1.3论文主要任务 ................................................. 3 2典型数字PID控制仿真研究 .......................................... 4 2.1 PID控制简介 ................................................. 4 2.2模拟PID控制算法 ............................................. 4 2.3数字PID控制算法 ............................................. 5 2.3.1 位置式PID控制算法 ...................................... 5 2.3.2 增量式PID控制算法 ...................................... 6 2.4数字PID控制算法仿真 ......................................... 7 2.5 连续系统的数字PID仿真控制 ................................. 10 3改进型数字PID控制器的算法仿真研究 ............................... 14 3.1积分项的改进 ................................................ 14 3.1.1积分分离 ................................................ 14 3.1.2抗积分饱和 .............................................. 17 3.2 微分项的改进 ............................................... 19 3.2.1不完全微分PID控制算法 .................................. 19 3.2.2微分先行PID控制算法 .................................... 21 3.3模糊自适应整定PID控制 ...................................... 23 3.3.1 模糊自适应整定PID控制原理 ............................. 23 3.3.2 PID参数在线整定原则 .................................... 24 3.3.3 仿真程序及分析 ......................................... 25 4数字PID应用仿真研究 ............................................. 27 4.1并联式双容液位过程 .......................................... 27 4.2 汽车速度控制系统的设计与仿真 ............................... 29 5结论与展望 ....................................................... 33 5.1 结论 ....................................................... 33 5.2 展望 ....................................................... 33 谢辞 .............................................................. 34 参考文献 .......................................................... 35 附录 .............................................................. 37 附录一 ......................................................... 37 附录二 ......................................................... 38 附录三 ......................................................... 39 附录四 ......................................................... 40 附录五 ......................................................... 42 附录六 ......................................................... 43 附录七 ......................................................... 44

数字PID控制算法仿真研究

1绪论

1.1设计目的意义

PID控制器具有结构简单、容易实现、控制效果好、鲁棒性强等特点,是迄今为止最稳定的控制方法之一。它所涉及的参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用,尤其适用于可建立精确数学模型的确定性系统。

然而实际工业生产过程中,许多被控过程机理复杂,具有高度非线性、时变不确定性和纯滞后等特点。在噪声、负载扰动等因素的影响下,过程参数甚至模型结构均会随时间和工作环境的变化而变化。常规PID控制器参数往往整定不良、性能欠佳,对运行工况的适应性很差。这就要求在PID控制中,不仅PID参数的整定不依赖于对象数学模型,并且PID参数能够在线调整,以满足实时控制的要求。

从实际需要出发,对数字PID控制算法进行仿真研究,得到一种好的数字PID控制算法,不仅可以减少操作人员的负担,还可以使系统处于最佳运行状态。因此,对数字PID控制器的仿真及研究具有重要的实际意义。

随着微处理机技术的发展和数字智能式控制器的实际应用,自动整定技术已经变成了现实,适应了复杂的工况和高指标的控制要求。同时,随着现代控制理论(诸如智能控制、数字PID的改进和模糊控制技术等)研究和应用的发展与深入,为控制复杂无规则系统开辟了新途径。它们是传统控制发展的高级阶段,主要用来解决那些传统方法难以解决的控制对象参数在大范围变化的问题。

近年来,智能控制无论是理论上还是应用技术上均得到了长足的发展,随之不断涌现将智能控制方法和常规PID控制方法融合在一起的新方法,形成了许多形式的智能PID控制器。它吸收了智能控制与常规PID控制两者的优点。首先,它具备自学习、自适应、自组织的能力,能够自动辨识被控过程参数、自动整定控制参数、能够适应被控过程参数的变化;其次,它又具有常规PID控制器结构简单、鲁棒性强、可靠性高、为现场工程设计人员所熟悉等特点。正是这两大优势,使得智能PID控制成为众多过程控制的一种较理想的控制装置。

1.2国内外研究现状

经过50多年的努力,在PID控制器的参数调整方面取得了很多成果。诸如预估PID控制

1

大学本科毕业设计(论文)

(Predictive PID)、自适应PID控制(adaptive PID)、自校正PID控制(self-tuning PID)、模糊PID控制(Fuzzy PID)、神经网络HD控制(Neura PID)、非线性PID控制(Nonlinear PID)等高级控制策略来调整和优化PID参数。

(1)国外研究现状

日本的Inoue提出一种重复控制,用于伺服重复轨迹的高精度控制,它原理来源于内模原理,加到被控对象的输入信号处偏差外,还叠加一个“过去的偏差”,把过去的偏差反映到现在,和“现在的偏差”一起加到被控对象的控制,偏差重复利用,这种控制方法不仅适用于跟踪周期性输入信号,也可抑制周期性干扰。

由卡尔曼提出的卡尔曼滤波理论,采用时域上的递推算法在数字计算机上进行数据滤波处理,该滤波器对控制干扰和测量噪声具有很好的滤波作用。

由美国Michigan大学的Holland教授提出的遗传算法,是他提出的模拟自然界遗传机制和生物进化论而形成的一种并行随机搜索最优化方法。它将优胜劣汰,适者生存的进化论原理引入优化参数形成的编码串联群体中,按所选择的适配值函数通过遗传中的复制,交叉及变异对个体进行筛选,使适配值高的的个体被保留下来,组成新群体,新群体有继承上一代信息,优于上一代,周而复始知道得到满意值,这种算法简单,可并行处理,得到全局最优解。

对于工业控制中许多被控对象的纯滞后性质,Smith提出一种纯滞后补偿模型,与PID控制器并接一个补偿环节,该补偿环节称为预估器,实际上的预估模型是反向并联在控制器上的,smith控制方法前提是必须确切地知道被控对象的数学模型,再此基础上能得到精确地预估模型,得到很好的控制效果。

(2)国内研究现状

中国工程院院士柴天佑针对常规解耦控制理论与方法难于对具有不确定性的多变量强耦合的复杂工业过程进行有效控制的难题,他首先在国际上提出多变量自适应解耦控制的研究方向,打破传统解耦控制思想,提出了基于控制器设计与直接对闭环系统解耦相结合的在线解耦控制策略, 系统地提出了20余种多变量自适应解耦控制算法,建立了算法的稳定性和收敛性分析,结合电力、冶金等行业的具有多变量强耦合、强非线性、参数时变、生产条件与运行工况变化大、常规控制系统难于投入运行的复杂工业过程开展了应用研究,将所提出的自适应解耦控制方法成功应用于冶金多段加热炉、余热锅炉、合金钢棒材连轧机立式活套、大型风洞、化工精馏塔等,取得了显著的应用成效。

浙江大学何芝强在PID控制器参数整定方法及其应用研究一文中,阐述了常用的

2

数字PID控制算法仿真研究

经典PID控制器参数整定方法,并用MATLAB/SIMULINK工具对这些方法做了一定的仿真。在此基础上,针对SISO(Single Input and Single Output)最小模型系统,提出了两种实用的PID控制器参数整定方法。主要的工作概括如下:在对基于给定相角裕度PID控制器参数整定方法(PM法)进行深入研究的基础上,提出了一种更为实用的PID控制器参数整定新方法,并详细地推导了相应的PID控制器参数整定公式。该方法解除了PM法中相角裕度和滞环宽度之间存在的固定函数关系,能够根据对象特性的不同,灵活地选取继电特性参数,从而得到品质更好的等幅振荡,使得PID控制系统具有更佳的闭环控制效果,并具有比PM法更好的实用性。 针对实际中常用的飞升曲线法难以确定最大斜率处和利用系统信息较少的不足,提出了一种基于曲线拟合的PID控制器参数整定方法。该方法利用对象的飞升曲线进行多项式拟合,较好地解决了常用飞升曲线法的不足,并充分利用对象飞升曲线的中段信息,在实用中避免多次实验,从而能省时、省力地完成PID控制器参数整定工作。而且,该方法能够通过MATLAB编程方便地实现,具有一定的实用价值。

随着现代工业的发展,人们面临的被控对象越来越复杂,对于控制系统的精度性能和可靠性的要求越来越高,这对PID控制技术提出了严峻的挑战,但是PID控制技术并不会过时,它必将和先进控制策略相结合向高精度、高性能、智能化的方向发展。

1.3论文主要任务

首先,掌握Matlab语言和Simulink仿真技术,学习几种常规型PID,例如:位置式、增量式、串级PID等。在学习传统PID控制算法的基础上,提出改进型的PID控制算法并进行仿真研究,要求推理论证、分析设计、关键点探讨、仿真及其结果分析;讨论改进后的PID控制算法相比传统PID控制算法的优点。

其次,针对PID控制算法的局限性,研究一种高级PID控制算法——模糊PID,把规则的条件、操作用模糊集表示,并把有关信息作为知识存入计算机知识库中,然后计算机根据控制系统的实际响应情况,运用模糊推理,实现对PID的参数最佳调整及仿真。

最后,根据现实情况,从系统的性能指标出发,针对实际控制对象,选择合适的PID控制算法,并用Matlab/Simulink软件进行仿真及研究。

3

大学本科毕业设计(论文)

2典型数字PID控制仿真研究

2.1 PID控制简介

PID(比例-积分-微分)控制是一种简单而又优秀的控制方法,在生产过程自动化控制的发展历程中,PID控制是一种历史最悠久、生命力最强的基本控制方法。在PID中因将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。

PID控制具有以下优点:

(1)原理简单,使用方便。PID参数可以根据过程的动态特性及时整定。 (2)适应性强。按照PID控制规律进行工作的控制器早已商品化,使得其应用范围十分广泛。虽然很多被控对象是非线性或时变的,但是通过适当的简化,可以将其变成基本线性和动态特性不随时间变化的系统,这样就可以通过PID控制了。

(3)鲁棒性强。其控制品质对被控对象特性的变化不太敏感。

同时,PID控制也具有其缺点:PID在控制时变、非线性、耦合及参数和结构不确定的复杂过程中,效果不是很好。虽然PID控制具有以上缺点,但是其仍因其自身的优点而得到了最广泛的应用,PID控制规律仍是应用最普遍的控制规律。并且,在当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。

2.2模拟PID控制算法

在模拟控制系统中,控制器最常用的控制规律是PID控制。模拟PID控制系统原理框图如图2.1所示。系统由模拟PID控制器和被控对象组成。

比例 微分 rin(k) + + 被控对象 yout(t) - 积分 + 图2.1模拟PID控制系统原理框图

PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成

4

数字PID控制算法仿真研究

控制偏差:

e(t)=rin(t)-yout(t) (2.1) PID的控制规律为:

1?u(t)?KP?e(t)?T?TDde(t)?

?dt??t0e(t)dt?(2.2)

或写成传递函数的形式:

G(s)?U(s)1?KP(1??TDs) E(s)TIs(2.3)

式中,KP为比例系数,TI为积分时间常数,TD为微分时间常数。

简单说来,PID控制器各校正环节的作用如下:

(1)比例环节:成比例的反映控制系统的偏差信号e(t),控制器立即就产生控制作用,使被PID控制的对象朝着使偏差减小的方向变化。其控制作用的强弱取决于比例系数KP的大小,KP值越大则调节时间越短,系统的静态偏差越小。但需注意的是KP过大会导致系统的超调量增大或产生震荡现象,最终使系统的动态性能变差。

(2)积分环节:主要用于消除静差,提高系统的无差度。并且只要系统存在偏差,积分作用就会不断增加。积分的强弱取决于积分时间常数TI的大小,TI越大则积分作用越弱,反之则越强。当TI较大时,积分作用较弱,系统不易产生震荡,但时间较长;当TI较小时,积分作用较强,这时时间较短,但系统有可能产生震荡。 (3)微分环节:反映偏差信号的变化速度,并能在偏差信号变得太大之前,引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。微分作用的强弱由微分时间常数TD的大小决定,TD越大则抑制偏差变化的作用越强,反之则越小。同时TD的大小对系统的稳定性也有很大的影响。

2.3数字PID控制算法

计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此,连续PID控制算法不能直接使用,需要采用离散化方法。在计算机PID控制中,使用的是数字PID控制器。

2.3.1 位置式PID控制算法

按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后项差分近似代替微分,即:

5

大学本科毕业设计(论文)

??t=kT(k=0,1,2?)??tkk?e(t)dt??e(jT)?T?e(j)??j?0j?00??de(t)?e(kT)-e(k-1)T?e(k)-e(k-1)?dtTT?????? (2.4) ?????可得到离散PID表达式为:

?Tu(k)?KP?e(k)?TI??e(i)?TDi?0ke(k)?e(k?1)? (2.5)

?T?式中,T为采用周期,k为采用序号,e(i)是采样时刻i时的偏差信号,e(k)是第k次采样时刻的偏差信号。

位置式PID控制系统如图2.2所示。

rin(k) + - e(k) yout(k) PID 位置算法 u 调节阀 被控对象

图2.2 位置式PID控制系统

2.3.2 增量式PID控制算法

由于位置式算法的输出是全量输出,误动作影响大;且需要对偏差e(i)进行累加,容易产生大的累加误差,这在需要很高精度的倒立摆控制过程中是不允许出现的。因此,我们可以采用增量型PID控制算法。

根据式(2.5)不难写出u(k-1)的表达式:

?T u(k?1)?KP?e(k?1)?TI?e(k?1)?e(k?2)?e(i)?TD?? (2.6)

Ti?0?k?1将式(2.5)和式(2.6)相减,即得到数字PID增量型控制算式:

?u(k)?u(k)?u(k?1)?KP?e(k)?e(k?1)??KIe(k)?KD?e(k)?2e(k?1)?e(k?2)? (2.7)

增量式控制算法的优点是误动作小,便于实现无扰动切换。当计算机出现故障时,可以保持原值,比较容易通过加权处理获得比较好的控制效果。但是由于其积分截断

6

数字PID控制算法仿真研究

效应大,有静态误差,溢出影响大。所以在选择时不可一概而论。

增量式PID控制系统如图2.3(a)所示。图2.3(b)给出了数字PID增量型控制算法的流程图。

rin(k) + - ek) PID 增量算法 Δu 步进电机 被控对象 yout(k)

(a) 增量式PID控制系统

离线计算 q0 q1 q2 置e(k-1)=e(k-2)=0 被 控 对 象 将A/D结果赋给y(k) A/D 求e(k)=r(k)-y(k) 按式计算控制增量Δu(k) 将Δu(k)输出给D/A D/A e(k-2)=e(k-1) e(k-1)=e(k) 采样时刻 到否? 否 到 (b) 数字PID增量型控制算法流 图2.3增量型控制系统及算法流程

2.4数字PID控制算法仿真

图2.4为数字PID控制算法仿真实验的示意图。

在MATLAB中,可以创建任何数学模型已知的物理系统的Simulink模型。然而,如果系统很复杂,采用基本方法创建的模型将变得很庞大,以至于会给仿真运行与分

7

大学本科毕业设计(论文)

析带来困难。为此。在建立Simulink模型时,常常将系统分解成若干个具有独立功能的子系统。同时,还应用Simulink提供的封装(Mask)技术,根据需要将一些常用的子系统封装成模块,这些模块的用法类似于标准的Simulink模块。采用封装技术,可以将Simulink子系统封装成一个模块,并且可以像使用Simulink内部模块一样使用它。这样可以讲子系统内部结构隐藏起来,访问时只出现一个参数设置对话框,所需要的参数用这个对话框来输入。

图2.4数字PID控制算法仿真实验示意图

图2.5为PID控制器系统结构框图,图2.6为封装后的PID控制器。

(1)改变比例增益

图2.5PID控制器系统结构框图 图 2.6 封装后的PID控制器

图2.7 KP=10 KI=0 KD=0

8

数字PID控制算法仿真研究

图2.8 KP=30 KI=0 KD=0 图2.9 KP=60 KI=0 KD=0

分析结果:当只改变比例,积分和微分都不变的情况下,比例系数越大,调节作用越强,控制也越迅速及时,系统的静态偏差也越小,调节精度越高,调节时间及峰值时间变短。但是 KP过大会导致系统的超调量增大,并且容易产生震荡现象,最终使系统的动、静态性能变差。

(2)改变积分增益

图2.10 KP=10 KI=8 KD=8

图2.11 KP=10 KI=10 KD=8 图2.12 KP=10 KI=20 KD=8

分析结果:当系统中只改变积分,而比例和微分都不变时,可以减少或消除静态误差,提高系统的无差度,但响应慢。当KI较小时,积分作用较弱,系统不易产生

9

大学本科毕业设计(论文)

震荡,但调节时间较长;当KI较大时,积分作用较强,但系统有可能产生震荡,产生超调,甚至积分饱和,使系统稳定性变差。并且,积分作用一般不单独适应。

(3)改变微分增益

图2.13 KP=10 KI=20 KD=8

图2.14 KP=10 KI=20 KD=8 图2.15 KP=10 KI=20 KD=12

分析结果:当系统中只改变微分,而比例和积分都不变时,改善了系统的稳定性能和动态性能,但是,它的响应比较慢。同时,加快系统的动作速度,减少调节时间。Kd越大则抑制偏差变化的作用越强。同时Kd的大小对系统的稳定性也有很大的影响,Kd越大,调节时间和峰值时间变长,并且系统越容易振荡,降低系统的抗干扰性能。微分作用也不能单独使用。

2.5 连续系统的数字PID仿真控制

(1)仿真方法一

采用MATLAB语句形式进行仿真。被控对象为一个电机模型,传递函数:

10

数字PID控制算法仿真研究

G(S)?Js21?Bs (2.8)

式中,J=0.0067 ,B=0.10。

采用M函数的形式,利用ODE45的方法求解连续对象方程,输入指令信号为rin(k)=0.50sin(2πt),采用PID控制方法设计控制器,其中kp=20.0,kd=0.50。

PID正弦跟踪结果如图2.16所示。

图2.16 PID正弦跟踪

(2)仿真方法二

采用Simulink进行仿真。被控对象为三阶传递函数,采用Simulink模块与M函数相结合的形式,利用ODE45的方法求解连续对象方程,主程序由Simulink模块实现,控制器由M函数实现。输入指令信号为一个采样周期1ms的正弦信号。采用PID方法设计控制器,其中kp=0.4,ki=1.0,kd=0.0。误差的初始化是通过时钟功能实现的,从而在M函数中实现了误差的积分和微分。

仿真程序如图2.17所示。

图2.17 Simulink仿真程序图

PID正弦跟踪结果如图2.18所示。

11

大学本科毕业设计(论文)

图2.18 PID正弦跟踪结果

(3)仿真方法三

利用S函数实现离散控制器的设计及仿真结果的输出。在S函数中,采用初始化、更新函数和输出函数,即mdlInitializeSizes函数、mdlUpdataes函数和mdlOutputs函数。采用sizes结构,选择一个输出,两个输入,其中一个输入为误差信号,另一个输入为误差信号上一时刻的值。S函数嵌入在Simulink程序中,采样时间为1ms。其中kp=0.4,ki=1.0,kd=0.0

仿真程序如图2.19所示。仿真结果如图2.20所示。

图2.19 基于S函数的Simulink仿真程序图

图2.20 PID正弦跟踪

仿真结束后,在MATLAB工作空间会得到ScopeData变量。为此,可以利用保存

12

数字PID控制算法仿真研究

在MATLAB工作空间中的仿真数据(即示波器数据)ScopeData绘制出所需的图形。

图2.21 M文件编辑器及内容

程序运行结果如图2.22所示。

图2.22 仿真结果

通过本次连续系统的数字PID控制仿真研究,可以看到,利用计算机控制技术对被控对象进行仿真研究,所得的跟踪结果与数字PID控制仿真完全一样。说明计算机控制技术是连续系统控制的一种,两者关系紧密,计算机控制只是将连续化的对象进行了A/D,D/A转换采样,最终有效地模拟了跟踪输出。

13

大学本科毕业设计(论文)

3改进型数字PID控制器的算法仿真研究

如果单纯地用数字PID控制器去模仿模拟控制器,不会获得更好的效果。因此必须发挥计算机运算速度快、逻辑判断功能强、编程灵活等优势,才能在控制性能上超过模拟控制器。

3.1积分项的改进

在普通PID控制中,引入积分环节的目的主要是为了消除静差,提高控制精度。但在过程的启动、结束或大幅度增减设定时,短时间内系统输出有很大的偏差,会造成PID运算的积分积累,致使控制量超过执行机构可能允许的最大动作范围对应的极限控制量,引起系统较大的振荡,这在生产中是绝对不允许的。

3.1.1积分分离

积分分离控制基本思路是,当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使系统稳定性降低,超调量增大;当被控量接近给定量时,引入积分控制,以便消除静差,提高控制精度。

具体实现的步骤是:

(1)根据实际情况,人为设定阈值ε>0;

(2)当∣e (k)∣>ε时,采用PD控制,可避免产生过大的超调,又使系统有较快的响应;

(3)当∣e (k)∣≤ε时,采用PID控制,以保证系统的控制精度。 积分分离控制算法可表示为

j ? 0 (3.1)式中,T为采样时间,β项为积分项的开关系数

?

?1error(k)????? (3.2) ??0error(k)??根据积分分离式PID控制算法得到其程序框图下图3.1所示。

u(k)?kpe(k)??ki?e(j)T?kd(e(k)?e(k?1))/Tk

14

数字PID控制算法仿真研究

开始 参数初始化 采入rin(k)及yout(k) 计算偏差值error(k) error(k) ≤ε? 是 PID控制 否 PID控制 控制器输出 参数更新 返回

图3.1 积分分离式PID控制算法程序框图

设被控对象为一个延迟对象:

e-80s (3.3) G(S)?60s?1采样时间为20s,延迟时间为4个采样时间,即80s,被控对象离散化为:

y(k)=-den(2)y(k-1)+num(2)u(k-5) (3.4) (1)仿真方法一

采用M语言进行仿真。取M=1,采用积分分离式PID控制器进行阶跃响应,对积分分离式PID控制算法进行改进,采用分段积分分离式,即根据误差绝对值的不同,采用不同的积分强度。仿真中指令信号为rin(k)=40,控制器输出限制在[-110,110],其阶跃式跟踪结果如下图3.2所示。其中kp=0.80,ki=0.005,kd=3.0。

15

大学本科毕业设计(论文)

图3.2 积分分离式PID阶跃跟

取M=2,采用普通PID控制,其阶跃跟踪结果如图3.3所示。

图3.3 采用普通PID阶跃跟踪

由仿真结果可以看出,采用积分分离方法,控制效果有很大的改善,跟踪曲线平稳光滑,系统稳定性好,无振荡。值得注意的是,为保证引入积分作用后系统的稳定性不变,在输入积分作用时比例系数kp可进行相应变化。此外,β值要根据具体对象及要求而定,若β过大,则达不到积分分离的目的;若β过小,则会导致无法进入积分区。如果只进行PD控制,会使控制出现余差。

(2)仿真方法二

采用Simulink仿真,通过Simulink模块实现积分分离PID控制算法,仿真结果如图3.4所示。

16

数字PID控制算法仿真研究

图3.4 阶跃响应结果

Simulink主程序如图3.5所示。

图3.5 Simulink仿真程序

通过比较以上两种仿真方法,可以发现,两种方法的结果都较好,说明所设计的积分分离数字PID控制器正确、有效。

3.1.2抗积分饱和

积分饱和现象是指若系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致u(k)达到极限位置。此后若控制器输出继续增大,u(k)也不会再增大,即系统输出超出正常运行范围而进入了饱和区。一旦出现反向偏差,u(k)逐渐从饱和区退出。进入饱和区愈深则退出饱和时间愈长。此段时间内,系统就像失去控制。这种现象称为积分饱和现象或积分失控现象。

抗积分饱和算法的思路是,在计算u(k)时,首先判断上一时刻的控制量u(k-1)是否己超出限制范围。若超出,则只累加负偏差;若未超出,则按普通PID算法进行调节。这种算法可以避免控制量长时间停留在饱和区。

17

大学本科毕业设计(论文)

仿真实例: 设被控制对象为:

G(S)?523500S3?87.35S2?10470S (3.5)

采样时间为1ms,取指令信号Rin(k)=30,M=1,采用抗积分饱和算法进行离散系统阶跃响应,仿真结果如图3.6所示。其中kp=0.85,ki=9.0,kd=0.0。

图3.6 抗积分饱和阶跃响应仿真(M=1)

取M=2,采用普通PID算法进行离散系统阶跃响应,其阶跃响应如下图3.7所示。

图3.7 普通PID阶跃响应仿真(M=2)

由仿真结果可以看出,采用抗积分饱和PID方法,可以避免控制量长时间停留在

18

数字PID控制算法仿真研究

饱和区,防止系统产生超调量。并且,调节时间和峰值时间变短,系统响应速度变快,系统跟踪曲线更加平稳光滑,动态误差减小。

3.2 微分项的改进

在PID控制中,微分信号的引入可改善系统的动态特性,但也易引进高频干扰,在误差扰动突变时尤其显出微分项的不足。若在控制算法中加入低通滤波器,则可使系统性能得到改善。

3.2.1不完全微分PID控制算法

标准的PID控制算式,对具有高频扰动的生产过程,微分作用响应过于灵敏,容易引起控制过程振荡,降低调节品质。尤其是计算机对每个控制回路输出时间是短暂的,而驱动执行机构动作又需要一定时间,如果输出较大,在短暂时间内执行机构达不到应有的相应开度,会使输出失真。为了克服这一缺点,同时又要是微分作用有效,可以在PID控制输出串联一阶惯性环节,这就组成了不完全微分PID控制器,如图3.8图3.9所示。

e(t) PID u?(t) u(t) Df(s)

图3.8 不完全微分PID控制器

Kp Kp E(s) Kp TISU(s) E(s) Kp TIS11?TfSKpTDS 1?TfS(a)

KpTDS1?TfS(b)

图3.9 不完全微分算法结构图

不完全微分PID的结构如上图。左图将低通滤波器直接加在微分环节上,右图是

19

大学本科毕业设计(论文)

将低通滤波器加在整个PID控制器之后。下面以左图(a)为例进行仿真说明不完全微分PID如何改进了普通PID的性能。

对图(a)所示的不完全微分机构,其传递函数为:

/T1DsU(s)?(kp?kps?kpTTfs?1)E(s)?up(s)?ui(s)?ud(s)

将上式离散化为:

u(k)=up(k)+ui(k)+ud(k) (3.6)

将ud(k)推导:

ud(s)=kpTdsE(s)/(Tfs+1) (3.7)

写成微分方程,取采样时间为Ts,将微分方程微分化,再整理得

uD(k)?KD(1?a)(e(k)?e(k?1))??uD(k?1)??TfTs?Tf其中,K D?kp?TD/Ts器系数。

仿真实例:

Ts为采样时间(Ts=Δt),Ti和Td为积分时间常数和微分时间常数,Tf为滤波

采用第一种不完全微分算法,被控对象为时滞系统传递函数:

e?80sG(s)?60s?1在对象的输出端加幅值为0.01的随机信号。采样时间为20ms。 低通滤波器为:

Q(s)?1180s?1 取M=1,采用具有不完全微分PID方法,其控制阶跃响应结果如下图3.10所示。取M=2,采用普通PID方法,阶跃响应结果如图3.11所示。

图3.10 不完全微分控制阶跃响应(M=1)

20

数字PID控制算法仿真研究

图3.11 普通PID控制阶跃响应(M=2)

由以上仿真结果可以看出,引入不完全微分后,能有效地克服普通PID的不足。仿真结果,曲线光滑平整,扰动较小,稳定裕度得到提高,动态偏差减小,振荡频率降低,很好地改善了该系统的动态特性。

3.2.2微分先行PID控制算法

微分先行PID控制的特点是只对输出量yout(k)进行微分,而对给定值rin(k)不进行微分。这样,在改变给定值时,输出不会改变,而被控量的变化通常是比较缓和的。这种输出量先行微分控制适用于给定值rin(k)频繁升降的场合,可以避免给定值升降时引起系统振荡,从而明显地改善了系统的动态特性。

rin(s) + - Kp(1?1)TIS u(s) y(s) TDS?1 ?TDS?1Ud(s)

图3.12 微分先行PID控制结构图

令微分部分的传递函数为:

uD(s)TDs?1???1y(s)?Ts?1D 1

式中, ? T D s ? 1 相当于低通滤波器。

PID控制部分传递函数为:

21

大学本科毕业设计(论文)

upI(s)E(s)?kp(1?1) TIs式中,TI为积分时间常数。

离散控制规律为:u(k)=upI(k)+uD(k) 仿真实例:

e?80s设被控对象为一个延迟对象: G(s)?60s?1采样时间T=20s,延迟时间为4T。输入信号为带有高频干扰的方波信号:

(3.8) Rin(t)=1.0sgn(sin(0.0005At))+0.05sin(0.03At) 取M=1,采用微分先行PID控制算法,其方波响应结果如下图3.13所示。取M=2.

采用普通PID方法,其方波响应控制结果如下图3.14所示。

图3.13微分先行PID控制方波响应(M=1)

图3.14普通PID控制方波响应(M=2)

由仿真结果可以看出,对于给定值rin(k)频繁升降的场合,引入微分先行后,可以避免给定值升降时所引起的系统振荡,明显地改善了系统的动态特性。

22

数字PID控制算法仿真研究

3.3模糊自适应整定PID控制

在工业生产过程中,许多被控对象随着负荷变化或干扰因素影响,其对象特性参数或结构发生改变。自适应控制运用现代控制理论在线辨识对象特征参数,实时改变其控制策略,使控制系统品质指数保持在最佳范围内,但其控制效果的好坏取决于辨识模型的精确度,这对于复杂系统是非常困难的。因此,在工业生产过程中,大量采用的任然是PID算法,PID参数的整定方法很多,但大多都以对象特性为基础。

随着计算机技术的发展,人们利用人工智能的方法将操作人员的调整经验作为知识存入计算机中,根据现场实际情况,计算机能自动调整PID参数,这样就出现了智能PID控制器。这种控制器吧古典的PID控制与先进的专家系统相结合,实现系统的最佳控制。这种控制必须精确地确定对象模型,首先将操作人员(专家)长期实践积累的经验知识用控制规则模型化,然后运用推理便可对PID参数实现最佳调整。

由于操作者经验不易精确描述,控制过程中各种信号量及评价指标不易定量表示,模糊理论是解决这一问题的有效途径,所以人们运用模糊数学的基本理论和方法,把规则的条件、操作用模糊集表示,并把这些模糊控制规则及相关信息作为知识存入计算机知识库中,然后计算机根据控制系统的实际响应情况,运用模糊推理,即可自动实现对PID参数的最佳调整,这就是模糊自适应PID控制。

3.3.1 模糊自适应整定PID控制原理

模糊自适应整定PID控制器以被控对象的反馈值与目标值的误差e和误差变化率

ec作为输入,用模糊推理的方法对PID的参数Kp,Ki,Kd进行参数自整定,可以满足不同时刻的e和ec对PID参数自整定的要求。利用模糊控制规则在线对PID参数进行修改,便构成了自适应整定模糊PID控制器,控制系统结构见图3.15。

rin +

图3.15自适应模糊控制器结构

- Kp error Ki Kd 模糊推理 PID调节器 对象 yout de/dt 23

大学本科毕业设计(论文)

PID参数模糊自整定是找出PID三个参数与e和ec之间的模糊关系,在运行中通过不断检测e和ec,根据模糊控制原理对三个参数进行在线修改,以满足不同e和ec是对控制参数的不同要求,而使对象有良好的动、静态性能。

系统所使用的PID控制器的算法为 连续情况

e(t)?rin(t)?yout(t) (3.9)

1u(t)?kpe(t)?Ti?t0e(t)dt?Tdde(t) (3.10) dt式中, kp为比例系数;Ti为积分时间常数;Td为微分时间常数。

数字情况有位置公式(3)及增量公式(4)

ku(k)?kpe(k)?ki?e(j)T?kdj?0e(k)?e(k?1) (3.11) T ?u(k)?kp?e(k)?e(k?1)??kie(k)?kd?e(k)?2e(k?1)?e(k?2)? (3.12)

式中,ki?kp/Ti,kd?kp/Td,T为采样周期,k为采样序号。

PID参数的整定必须考虑到在不同时刻三个参数的作用及相互之间的关系。 模糊自整定PID是在PID算法的基础上,通过计算当前系统误差e和误差变化率ec,利用模糊规则进行模糊推理,查询模糊矩阵表进行参数整定。

模糊控制设计的核心是总结工程设计人员的技术知识和实际操作经验,建立合适的模糊规则表,得到针对Kp,Ki,Kd三个参数分别整定的模糊控制表。

Kp,Ki,Kd的模糊控制规则表建立好后,可根据如下工作流程图3.16进行Kp,Ki,Kd的自适应校正。在线运行过程中,控制系统通过对模糊逻辑规则的结果处理、查表和运算,完成对PID参数的在线自校正。

3.3.2 PID参数在线整定原则

PID控制中K P、KI、KD各参数的作用不再赘述。 根据系统在受控过程中对应不同的 |e|和 |ec|,将 PID参数的整定原则归纳如下:

(1) 当|e|较大时,取较大的K P与较小的KD,KI=0,以使系统有较好的跟踪性能,同时由于对积 分作用进行了限制,可避免出现较大的超调。

(2)当|e|为中等大小时,K P取较小值,以降低响应超调量。KD的取值对系统响应影响较大,K I的 取值也要适当。

24

数字PID控制算法仿真研究

(3)当|e|较小时,K P与KI均取较大值,以提高系统的稳定性,此时KD值的选

择应根据|ec|的大小,|ec|较大时,K D取较小值,|ec|较小时,KD值取大一些,以避免系统在设定值附近出现振荡。

入口 取当前采样值 e(k)=r(k)-y(k) ec(k)=e(k)-e(ke(k)=e(k-1) e(k),e(k-1) 模糊化 模糊整定ΔKp,ΔKi,ΔKd 计算当前Kp,Ki,Kd PID控制器输出 返回 图3.16 在线自校正工作流程图

3.3.3 仿真程序及分析

仿真实例: 被控对象为:

523500Gp(s)?3

s?87.35s2?10470s采样时间为1ms,采用模糊PID控制进行仿真,参数的初值分别为: kp=0.4、

ki=1.0和kd=0,在第300个采样时刻控制器输出加1.0的干扰,相应响应曲线见图

3.17到图3.22。

25

大学本科毕业设计(论文)

图3.17 模糊PID控制阶跃响应 图3.18 模糊PID控制误差响应

图 3.19 控制器输出u 图3.20 Kp的自适应调整

图3.21 Ki的自适应调整 图3.22 Kd的自适应调整

对于三阶对象,常规PID控制很难获得理想的控制效果,特别是三个参数不易整定,当采用模糊自整定PID控制器后,取得了良好控制效果。从系统的性能指标可看出系统具有良好的快速性和稳态精度,且抗干扰能力强,是一种良好的控制方案。

26

数字PID控制算法仿真研究

4数字PID应用仿真研究

4.1并联式双容液位过程

图4.1所示为一并联式双容液位过程。设q1为过程输入量,第二个液位槽的液位h2为过程输出量,q2的大小与槽1的液位h1有关,而且与槽2的液位h2也有关。

R1 q1 h1 C1 q2 h2 C2 槽1 R2 槽2 R3 q3

图4.1 并联式双容液位过程

根据动态物料平衡关系,即在单位时间内储罐的液体流入量与单位时间内储罐的液体流出量之差应等于储罐中液体储存量的变化率,则有增量方程

?q1??q2?C1d?h1 (4.1) dt?q2??q3?C2d?h2 (4.2) dt?q2??h1??h2 (4.3)

R2?h2 (4.4)

R3?q3?消去中间变量?q2 ?q3 ?h1,整理可得

d2?h2d?h2T1T2?(T?T?T)??h2?K0?q1 (4.5) 1212dtdt2相应的传递函数为

27

大学本科毕业设计(论文)

G(s)?K0H2(s) (4.6) ?2Q1(s)T1T2s?(T1?T2?T12)s?1式中,T1为槽1的时间常数,T1=R2C1;T2为槽2的时间常数,T2=R3C2;T12为槽1与槽2关联时间常数,T12=R3C1;K0为过程的放大系数,K0=R3。?q1 ?q2 ?q3 ?h1

?h2 分别为偏离某平衡状态q10 q20 q30 h10 h20 的增量;C1 C2为槽1 槽2的截面积,设为常量。R1 R2 R3(近似为常数)为液阻。

由上式可画出其变量关系如图4.2所示。

Q1(s) - 1C1sH(s) 1R2Q2(s) - Q3(s) 1C2sH2(s) 1 R3 图4.2 双容液位过程各变量关系图

根据以上分析,现令C1=2 C2=3 R2=5 R3=4,则T1=10 T2=12 T12=8 K0=4。同时,还可以到到传递函数为 G(s)?4 (4.7)

120s2?30s?1按积分分离PID控制位置跟踪的基本原理,采用Simulink进行编程,在连续方式下进行仿真,通过Simulink模块实现积分分离PID控制算法,仿真程序如图4.3所示。其中,输入信号为阶跃信号,输出跟踪输入。

图4.3 双容液位过程的Simulink仿真程序

28

数字PID控制算法仿真研究

仿真的阶跃响应结果如下图4.4所示。

图4.4 双容液位过程的阶跃响应

由响应图可以看出,其阶跃响应开始变化较慢,其主要原因是槽与槽之间存在液体流通阻力而延缓了被控量的变化。显然,并联容器越多,则过程容量越大,时间延缓越长。由图还可以看见,前一过程影响后一过程,后一过程也影响前一过程,前后相互关联。同时,可以看见其调节时间和峰值时间较短;衰减比较小,从而保证了一定的稳定裕度;动态偏差也较小,但是曲线有一定的振荡。总体来说,曲线还是比较平稳,有效地减小了静差。

在工业控制中,被控过程一般都有一定的储存物料和能量的能力,储存能力的大小通常用容量或容量系数表示,其含义为引起单位被控量变化时控制过程存储量变化的大小。在水箱控制过程中,经常存在纯滞后问题。通过PID的控制,阶跃响应较不适用PID控制,其图形更接近于真实,有利于工业生产及控制。

4.2 汽车速度控制系统的设计与仿真

1. 问题的提出

汽车行驶在如下图4.5所示的斜坡上(可看做汽车沿直线山坡路向前行驶)。要求设计一个简单的PID控制器,使汽车能以设定的速度运动。

29

大学本科毕业设计(论文)

x Fh Fw Fe θ 图4.5 斜坡上行驶汽车的受力示意图

2. 建立汽车运动的数学模型

根据牛顿第二定律,汽车的运动方程为

??Fe?Fw?Fh m?x(4.8)

式中,各参量的物理意义参见图4.5,图中:

(1)m为汽车质量,本例中取为100个重量单位。

(2)Fe是引擎动力。最大驱动力为1000,最大制动力-2000,即

-2000≤Fe≤1000 (4.9)

(3)Fw是空气阻力,它与轿车的速度平方成正比,其表达式为

??20sin(0.01(xt))2 (4.10) Fw?0.001

?为行驶汽车的水平速度。 式中第二项是为近似考虑“阵风”而引入的,x(4)Fh是重力分量,其表达式为

?1Fh?30sin(0.000xx) (4.11)

3. 行驶汽车的Simulink模型及参数配置

由式(4.8)--(4.11)可建立行驶汽车的Simulink模型如图4.6所示,图中主要模块的参数配置如下:

(1) FcIn模块:为“指令”驱动力Fe提供输入端口。 (2) SaOut模块:为输出汽车实际速度Sa提供输出端口。

(3) Max Thrust 模块:设置驱动力上限,Constant value栏填写1000。 (4) UpLim模块:其参数设置对话框Function栏填min,Number of input ports 栏填写2,则模块输出取两个输入中的小者。与此同时,该模块的图标以min表示。

30

数字PID控制算法仿真研究

(5) Max Brake 模块:设置制动力下限,Constant value栏填写-2000。 (6) LowLim模块:Function栏填写max,则模块输出取两个输入中的大者。与此同时,该模块的图标以max表示。

(7) ClockIn模块:为接受仿真时间数据t提供输入端口。

?,t]构成的向量,所以,根(8) FW模块:实现空气阻力Fw。该模块的输入是[x据Fcn模块表达式必须遵循的第一个规则,在Expression栏中填写0.001*(u(1)+20*sin(0.01*u(2)))^2.

(9) FH模块:实现重力分量Fh。该模块的输入为位移标量x,输出是重力分量Fh,则在Expression栏中填写30*sin(0.0001*u)。

图4.6 行驶汽车的Simulink模型

4. PID控制器及其Simulink模型

PID控制器的工作原理是:根据期望速度和实际速度之差产生“指令”驱动力Fc,其数学模型为:

t?c Fc?Kp(x的实际速度。

?)?Ki?(x?c?x?)dt?Kd(x?c?x?)? (4.12) ?x0?为汽车?c为汽车期望速度,x式中,Kp为比例系数,本例中取Kp=50,Ki=20,Kd=3;x“指令”驱动力Fc与实际驱动力Fe的差别在于:前者是理论上需要的计算力,后者是受物理限制后实际能提供的力。

由上式构建的比例控制器Simulink模型如下图所示。图中SaIn-和SaIn+分别是

?的输入端口模块,FcOut是“指令”驱动?c与实际速度x比例控制器模型的期望速度x力Fc的输出端口模块。

5. 构建完整的Simulink模型

将上表面两图放在同一个新建模型窗口中,并进行适当的连接,即可得到完整的

31

大学本科毕业设计(论文)

受控汽车模型,如图4.8。

图4.7 比例控制器Simulink模型

图4.8 受控汽车完整的Simulink模型

图4.9 汽车速度仿真结果

将图4.8模型窗口的仿真时间设置为200,然后进行仿真,仿真过程中,移动Slider Gain操作窗口的滑键,可从模型窗口的Slider Gain模块图标上看到变化的期望速度。与此同时,还可以看到Display模块所显示的实际速度在控制作用下不断翻动地向期望车速逼近。同时,Scope窗口也显示了实际速度如上图4.9所示,而且汽车速度有效地跟踪了期望速度,偏差较小。

32

数字PID控制算法仿真研究

5结论与展望

5.1 结论

本文主要完成了以下内容:

(1)分析了传统的模拟和数字PID控制算法,并对传统的PID控制算法进行微分项和积分项的改进,研究了几种比较普遍运用的方法,通过仿真研究实验,证明了在引入积分分离、抗积分饱和、不完全微分和微分先行后能有效地克服普通PID的不足。

(2)研究了模糊自适应整定PID控制算法,并且直接引用了专家模糊规则库对一个控制对象进行了仿真,由仿真结果可以看到,这种参数自整定方法与一般控制方法相比,在调节时间、抑制超调量、稳定性方面都要好,可以在工业上推广使用。

(3)通过和其它控制算法比较,应用数字PID控制算法模拟研究了实际应用中的控制系统。在建立双容水箱数学模型的基础上,对水箱液位的采用积分分离式PID控制算法进行了研究;在建立汽车速度控制系统数学模型的基础上,利用数字PID控制算法很好的实现了汽车实际速度与期望速度的协调控制。

5.2 展望

通过本次毕业论文设计,对PID控制的发展及原理有了深刻的认识,进而,改进了几种数字PID控制方法和研究了模糊自适应整定PID控制,并使用Matlab/Simulink对对象进行仿真研究,得出了数字PID控制算法结构简单、实施容易、鲁棒性能好、通用性强等优点。

然而,本人能力有限,本毕业设计还可以在以下方面努力:

1、在智能数字PID控制算法以及单神经元PID控制方面进行进一步研究,使其可以较好的实现对多变量的控制,最终使系统控制效果更好,动态性能更佳。

2、进一步研究模糊自适应整定PID控制器,使其算法简单化、模块化,能直接在现有的DCS、PLC 及监控平台软件中方便地实现一系列的问题,缩小理论和实践差距。

33

大学本科毕业设计(论文)

谢辞

岁月如歌,转眼间,四年的求学生活即将结束,站在毕业的门槛上,回忆往昔,奋斗和辛劳成为丝丝的记忆,甜美与欢笑也都尘埃落定。值此毕业论文完成之际,我谨向所有关心、爱护、帮助我的人们表示最诚挚的感谢与最美好的祝愿。

本论文是在张禾老师的悉心指导下完成的,张老师对学术的严谨和精益求精的工作作风给我留下了深刻的印象,受益匪浅。在做毕业设计这段时间里,张老师为我创造了优越的学习和实验环境,使我获取宝贵理论知识同时又在实践中不断提高自己。在思想上和人生态度等方面张老师给予了谆谆教诲,这些教导在我今后的学习和工作中将不断影响我和激励我。

同时,设计过程中还得到了不少师兄师姐和同学的支持,在此表达我对他们的深深谢意,感谢他们对我的支持与帮助,是他们在我困惑时帮我指明方向,对整个论文,他们给我提出了宝贵的意见,帮我解决了不少的难题,使我论文得以顺利完成。

最后,再次感谢曾经帮助过我的所有老师和同学,衷心地感谢为评阅本论文而付出宝贵时间和辛勤劳动的老师和教授们!

34

数字PID控制算法仿真研究

参考文献

[1]刘金锟 .先进PID控制MATLAB仿真(第2版) [M].北京:电子工业出版社.2004 [2]吴晓燕,张双选.MATLAB在自动控制中的应用[M].西安:西安电子科技大学出版社.2006

[3]于海生.计算机控制技术[M].北京:机械工业出版社.2007

[4]潘永湘,杨延习,赵跃.过程控制与自动化仪表[M]. 北京:机械工业出版社.2007 [5]吴旭光,杨惠珍,王新民.计算机仿真技术(第二版)[M].北京:化学工业出版社.2008

[6]胡寿松.自动控制原理[M].北京:机械工业出版社.2003

[7]黄中霖.控制系统MATLAB计算及仿真[M].北京:国防工业出版社,2001 [8]诸静.模糊控制原理与应用[M].北京:机械工业出版社,1995,5~7 [9]陶永华.新型PID控制及其应用[M].北京:机械工业出版社,2002,4~5

[10]王鸣.基于模糊控制理论的一种PID参数自整定控制器的设计与仿真[M].自动化

与仪器仪表[J],2000,19 (1):14~17

[11]Michael Lawrence Smith,Sensors.Appliance Control,and Fuzzy Logic.IEEE

Trans,on Industry Appliation[J],1994,30(2):305~435

[12] Roger Jang J,ANFIS.Adaptive Network-based Fussy Interence Systems,IEEE

Tran[J].System,Man and Cybernatics,1993,23(3):665~685

[13] Lloyd S,Salleh Y M d. Real time control of batch process plant though

timed petrinetmodeling and dynamic optimization In:1st IFAC Work shop on Algorithms and Architectures for Real-time Control[J]. Bangor, North Wales,1991,11~13

[14] Lloyd S,Salleh YM d.Modeling and control design of batch process plant

by timed Petrinet[J].In:Proc of the 30th Conf on CDC..Brighton,1991,1531~ 1536

[15] Digital Imaging and Communication in Medicine(DICOM)[M].National

electrical manufacturers association,2003 Rosslyn,Vir2 ginia USA,2003

[16] Cinkler K.Very low bit-rate wavelet video coding[J].IEEE Journal on

Selected Areas in Communication,1998,16(1) :4~11

35

大学本科毕业设计(论文)

[17] 魏星,王亚军等.模糊免疫自适应控制系统的MATLAB仿真研究[J].电力自动备,

2005,5(25):5

[18] 马银辉,丁建设.基于MATLAB的PID参数自调整模糊控制器的设计与应用仿真

[J].发电设备,2005,(2):165~167

[19] 高宏伟,赵宝勇.模糊自整定PID控制策略的MATLAB仿真研究[J].电气传动自

动化.2002,24(5):21~27

[20]袁凤莲.Fuzzy自整定PID控制器设计及其MATLAB仿真[J].沈阳航空工业学院学

报,2006,23(1):1

[21] 张宁,吴丽娟.一种PID参数模糊自整定方法.仪器仪表报,1997,5(18):534~

536.

[22] 苏微.模糊PID的研究[J].工业仪表与自动化装置,2001,20 (2):9~10 [23] 黄晓宇.基于MATLAB的模糊自整定PID参数控制器计算机仿真[J ].自动化与仪

器仪表,2001,(3):21~24.

[24] 朱晓宏,邵冬明,游道华,参数自整定PID模糊控制器的设计及Simulink仿真[J],

武汉科技大学,2006

[25] 陈超,龚国芳,徐晓东,王静,一种参数自整定模糊PID控制器的研究[D],浙江大学流体传动及控制国家重点实验室2005

36

数字PID控制算法仿真研究

附录

附录一

控制主程序:

%Discrete PID control for continuous plant clear all; close all;

ts=0.001; %Sampling time xk=zeros(2,1); e_1=0; u_1=0;

for k=1:1:2000 time(k) = k*ts;

rin(k)=0.50*sin(1*2*pi*k*ts); para=u_1; % D/A tSpan=[0 ts];

[tt,xx]=ode45('chap1_6f',tSpan,xk,[],para); xk = xx(length(xx),:); % A/D yout(k)=xk(1);

e(k)=rin(k)-yout(k); de(k)=(e(k)-e_1)/ts;

u(k)=20.0*e(k)+0.50*de(k); %Control limit if u(k)>10.0 u(k)=10.0; end

if u(k)<-10.0 u(k)=-10.0; end

u_1=u(k); e_1=e(k); end

figure(1);

plot(time,rin,'r',time,yout,'b'); xlabel('time(s)'),ylabel('rin,yout'); figure(2);

plot(time,rin-yout,'r');

xlabel('time(s)'),ylabel('error'); 连续对象子程序:

function dy = PlantModel(t,y,flag,para) u=para;

37

大学本科毕业设计(论文)

J=0.0067;B=0.1; dy=zeros(2,1); dy(1) = y(2);

dy(2) = -(B/J)*y(2) + (1/J)*u;

附录二

S函数仿真程序:

function [sys,x0,str,ts]=exp_pidf(t,x,u,flag) switch flag,

case 0 % initializations

[sys,x0,str,ts] = mdlInitializeSizes; case 2 % discrete states updates sys = mdlUpdates(x,u);

case 3 % computation of control signal % sys = mdlOutputs(t,x,u,kp,ki,kd,MTab); sys=mdlOutputs(t,x,u);

case {1, 4, 9} % unused flag values sys = [];

otherwise % error handling

error(['Unhandled flag = ',num2str(flag)]); end;

%============================================================== % when flag=0, perform system initialization

%============================================================== function [sys,x0,str,ts] = mdlInitializeSizes

sizes = simsizes; % read default control variables sizes.NumContStates = 0; % no continuous states

sizes.NumDiscStates = 3; % 3 states and assume they are the P/I/D components sizes.NumOutputs = 1; % 2 output variables: control u(t) and state x(3) sizes.NumInputs = 2; % 4 input signals

sizes.DirFeedthrough = 1;% input reflected directly in output sizes.NumSampleTimes = 1;% single sampling period sys = simsizes(sizes); %

x0 = [0; 0; 0]; % zero initial states str = [];

ts = [-1 0]; % sampling period

%============================================================== % when flag=2, updates the discrete states

%============================================================== function sys = mdlUpdates(x,u) T=0.001; sys=[ u(1);

x(2)+u(1)*T;

38

数字PID控制算法仿真研究

(u(1)-u(2))/T];

%============================================================== % when flag=3, computates the output signals

%============================================================== function sys = mdlOutputs(t,x,u,kp,ki,kd,MTab) kp=1.5; ki=2.0; kd=0.05;

%sys=[kp,ki,kd]*x;

sys=kp*x(1)+ki*x(2)+kd*x(3);

附录三

%Integration Separation PID Controller clear all; close all; ts=20;

Tlay plant

sys=tf([1],[60,1],'inputdelay',80); dsys=c2d(sys,ts,'zoh'); [num,den]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; y_1=0;y_2=0;y_3=0; error_1=0;error_2=0; ei=0;

for k=1:1:200 time(k)=k*ts; Tlay plant

yout(k)=-den(2)*y_1+num(2)*u_5; %I separation rin(k)=40;

error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; M=1; (M=2)

if M==1 %Using integration separation if abs(error(k))>=30&abs(error(k))<=40 beta=0.3;

elseif abs(error(k))>=20&abs(error(k))<=30 beta=0.6;

elseif abs(error(k))>=10&abs(error(k))<=20 beta=0.9; else

beta=1.0; end

39

大学本科毕业设计(论文)

elseif M==2

beta=1.0; %Not using integration separation end

kp=0.80; ki=0.005; kd=3.0;

u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+beta*ki*ei; if u(k)>=110 % Restricting the output of controller u(k)=110; end

if u(k)<=-110 u(k)=-110; end

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_2=error_1; error_1=error(k); end

figure(1);

plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(2);

plot(time,u,'r');

xlabel('time(s)');ylabel('u');

附录四

%PID Controler with intergration sturation clear all; close all; ts=0.001;

sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'z');

[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; um=6;

kp=0.85;ki=9.0;kd=0.0;

rin=30; %Step Signal for k=1:1:800 time(k)=k*ts;

40

数字PID控制算法仿真研究

u(k)=kp*x(1)+kd*x(2)+ki*x(3); % PID Controller if u(k)>=um u(k)=um; end

if u(k)<=-um u(k)=-um; end

%Linear model

yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3; error(k)=rin-yout(k); M=1; (M=2)

if M==1 %Using intergration sturation if u(k)>=um

if error(k)>0 alpha=0; else

alpha=1; end

elseif u(k)<=-um if error(k)>0 alpha=1; else

alpha=0; end else

alpha=1; end

elseif M==2 %Not using intergration sturation alpha=1; end

%Return of PID parameters u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_1=error(k);

x(1)=error(k); % Calculating P x(2)=(error(k)-error_1)/ts; % Calculating D x(3)=x(3)+alpha*error(k)*ts; % Calculating I xi(k)=x(3); end

figure(1); subplot(311);

plot(time,rin,'b',time,yout,'r');

xlabel('time(s)');ylabel('Position tracking'); subplot(312);

41

大学本科毕业设计(论文)

plot(time,u,'r');

xlabel('time(s)');ylabel('Controller output'); subplot(313);

plot(time,xi,'r');

xlabel('time(s)');ylabel('Integration');

附录五

%PID Controler with Partial differential clear all; close all; ts=20;

sys=tf([1],[60,1],'inputdelay',80); dsys=c2d(sys,ts,'zoh');

[num,den]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; ud_1=0;

y_1=0;y_2=0;y_3=0; error_1=0; ei=0;

for k=1:1:100 time(k)=k*ts; rin(k)=1.0; %Linear model

yout(k)=-den(2)*y_1+num(2)*u_5; D(k)=0.01*rands(1); yout(k)=yout(k)+D(k); error(k)=rin(k)-yout(k);

%PID Controller with partly differential ei=ei+error(k)*ts; kc=0.30; ki=0.0055; TD=140;

kd=kc*TD/ts; Tf=180;

Q=tf([1],[Tf,1]); %Low Freq Signal Filter M=1;

if M==1 %Using PID with Partial differential alfa=Tf/(ts+Tf);

ud(k)=kd*(1-alfa)*(error(k)-error_1)+alfa*ud_1; u(k)=kc*error(k)+ud(k)+ki*ei; ud_1=ud(k);

elseif M==2 %Using Simple PID

u(k)=kc*error(k)+kd*(error(k)-error_1)+ki*ei;

42

数字PID控制算法仿真研究

end

%Restricting the output of controller if u(k)>=10 u(k)=10; end

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

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_1=error(k); end

figure(1);

plot(time,rin,'b',time,yout,'r');

xlabel('time(s)');ylabel('rin,yout'); figure(2);

plot(time,u,'r');

xlabel('time(s)');ylabel('u'); figure(3);

plot(time,rin-yout,'r');

xlabel('time(s)');ylabel('error'); figure(4); bode(Q,'r'); dcgain(Q);

附录六

%PID Controler with differential in advance clear all; close all; ts=20;

sys=tf([1],[60,1],'inputdelay',80); dsys=c2d(sys,ts,'zoh');

[num,den]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; ud_1=0;

y_1=0;y_2=0;y_3=0; error_1=0;error_2=0; ei=0;

for k=1:1:400 time(k)=k*ts; %Linear model

yout(k)=-den(2)*y_1+num(2)*u_5; kp=0.36;kd=14;ki=0.0021;

43

大学本科毕业设计(论文)

rin(k)=1.0*sign(sin(0.00025*2*pi*k*ts)); rin(k)=rin(k)+0.05*sin(0.03*pi*k*ts); error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; gama=0.50; Td=kd/kp; Ti=0.5;

c1=gama*Td/(gama*Td+ts); c2=(Td+ts)/(gama*Td+ts); c3=Td/(gama*Td+ts); M=1;

if M==1 %PID Control with differential in advance ud(k)=c1*ud_1+c2*yout(k)-c3*y_1; u(k)=kp*error(k)+ud(k)+ki*ei; elseif M==2 %Simple PID Control

u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei; end

if u(k)>=110 u(k)=110; end

if u(k)<=-110 u(k)=-110; end

%Update parameters

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_2=error_1; error_1=error(k); end

figure(1);

plot(time,rin,'r',time,yout,'b');

xlabel('time(s)');ylabel('rin,yout'); figure(2);

plot(time,u,'r');

xlabel('time(s)');ylabel('u');

附录七

%Fuzzy Tunning PID Control clear all; close all;

a=newfis('fuzzpid');

a=addvar(a,'input','e',[-3,3]); %Parameter e a=addmf(a,'input',1,'NB','zmf',[-3,-1]);

44

数字PID控制算法仿真研究

a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]); a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]); a=addmf(a,'input',1,'Z','trimf',[-2,0,2]); a=addmf(a,'input',1,'PS','trimf',[-1,1,3]); a=addmf(a,'input',1,'PM','trimf',[0,2,3]); a=addmf(a,'input',1,'PB','smf',[1,3]);

a=addvar(a,'input','ec',[-3,3]); %Parameter ec a=addmf(a,'input',2,'NB','zmf',[-3,-1]);

a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]); a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]); a=addmf(a,'input',2,'Z','trimf',[-2,0,2]); a=addmf(a,'input',2,'PS','trimf',[-1,1,3]); a=addmf(a,'input',2,'PM','trimf',[0,2,3]); a=addmf(a,'input',2,'PB','smf',[1,3]);

a=addvar(a,'output','kp',[-0.3,0.3]); %Parameter kp a=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);

a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]); a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]); a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]); a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]); a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]); a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);

a=addvar(a,'output','ki',[-0.06,0.06]); %Parameter ki a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);

a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]); a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]); a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);

a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]); a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]); a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);

a=addvar(a,'output','kd',[-3,3]); %Parameter kp a=addmf(a,'output',3,'NB','zmf',[-3,-1]);

a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]); a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]); a=addmf(a,'output',3,'Z','trimf',[-2,0,2]); a=addmf(a,'output',3,'PS','trimf',[-1,1,3]); a=addmf(a,'output',3,'PM','trimf',[0,2,3]); a=addmf(a,'output',3,'PB','smf',[1,3]); 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;

45

大学本科毕业设计(论文)

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; 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; 6 7 1 7 7 1 1;

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

46

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

Top