当前课程知识点:智能控制 > 第二章 专家控制专题 > 2.3 专家PID > 2.3.2 专家PID (下)
下面
我们结合一个实际问题
来看一下
如何设计专家PID控制器
针对这样一个
典型的三阶被控对象
给出它的传递函数
我们要画出
它的单位阶响应曲线
这时候
被控对象采样周期为1毫秒
分别采用了
传统的PID控制策略
和专家PID控制算法
这是利用Matlab实现了仿真程序
第一步初始化
用clc命令可以对命令进行清除
下面第二步第二行
就是给出了采样时间
就是1毫秒
也就是0.001秒
那么下一行命令
就是给定了被控对象的
传递函数tf
Transfer Function 表示传递函数
这样的话
就给出了系统的传递函数模型
下一步就是c2d表示
对连续时间的传递函数
进行离散化
得到了关于z的传递函数
那么采用tfdata命令
就可以把z域的传递函数
分子分母给确定下来
这样的话
便于后面进行差分方程
以及相应的程序编写
首先
第一段程序作为变量初始化
这里面
u_1 u_2 u_3分别对应的
就是u(k-1) u(k-2) u(k-3)
而y_1 y_2 y_3分别对应的
就是y(k-1) y(k-2) y(k-3)
x的初始状态是0 0 0
x2_1=0表示x2在(k-1)的时刻是0
首先
给出PID控制器参数的初始值
kp为0.6
ki为0.03
kd为0.01
那么定义error_1为0
下面就开始进行控制算法的循环
这里面我们采用的
仿真时间是500个周期
也就是每个周期1毫秒
所以总的时间是0.5秒
那么time描述的就是第k步的时候
对应的时间也就是
k乘以ts采样周期
那么给定的设定值信号
因为考虑的是单位阶响应曲线
所以其实k从1开始循环的时候
我这个设定值一直为1的
所以k一直为1
下面PID控制器的输出u(k)是什么呢
是根据x1 x2 x3
也就是偏差
偏差变化率以及它的求和积分
乘以相应的系数kp kd ki
得到了这样一个控制指令
下面
我们就要分别对应
前面的专家规则
给出相应的程序
第一步
专家规则第一条
就是进行开环控制
它是分别考虑的是
误差在绝对值在不同的情况下
我们分别采用不同的控制指令
是个常数
比如说如果x1也就是误差
它的绝对值大于0.8
那么控制量就是0.45
否则的话0.4到0.8之间
控制量就0.4
如果误差在0.2到0.4之间
它的控制指令就是0.12
如果误差在0.01到0.2之间
控制指令就是0.1
这是第一条
那么第二条就根据偏差以及偏差导
也就是偏差的增量
e(k)就是x1
delta e(k)就是x2
看它俩的乘积是否大于0
或者是得到e(k)是否为0
来进行分别考虑
x1也就是误差的绝对值
是否大于或等于0.05
分别实施较强的控制作用
和较弱的控制作用
一个系数是2
一个系数0.4
下面第三条规则
就是根据
x1 e(k) x2是e(k)减 delta e(k)
x2_1就是 delta e(k-1)
来判断
这个时候
考虑它是控制量
要保持不动
也就是u(k)等于u(k)
这是第三条规则
第四条规则
我们就是根据x(1) e(k) x2
delta e(k) x2_1
delta e(k-1)
根据它们的情况
再考虑一下
当误差的绝对值
是否大于或等于0.05
分别实施较强的控制作用
较弱的控制作用
这是根据
极值时刻的误差来决定的
因为极值发生在k-1时刻
所以后面的系数是error_1
这是第四条规则
第五条规则就是看
x(1)的绝对值
是否大于或等于0.001
如果大于或等于0.001
控制量就等于0.5倍的x(1)
加上0.01倍的x(3)
实际上
这就是最后对应的第五条规则
那么下面这条程序
实际上就是限制了
控制量的取值范围
那么实际工程中
控制指令它是有上限和下限的
实际系统一般选择范围是
在控制指令阀门开度
比如说是在0%到100%之间
它不可能接受百分之负100的命令
那么有的问题
它有正负方向的问题
它的范围
可能会在正负某个数之间
这实际中
都会对它进行一个限幅的
所以这段程序
如果控制量u(k)大于或等于10的话
那么直接让它等于10
如果u(k)小于等于-10的话
就让它直接等于-10
其实也就是
限制了最终的控制指令
u(k)一定会在正负10之间
也就是对它进行了限幅处理
那么下面
我们就考虑一下
被控对象的数学模型
由于我们已经知道了
被控对象离散化的结果
关于z的传递函数
可以通过对应的差分方程
把y(k)求出来
就是通过这个式子
找到了y(k)当前时刻
被控对象的输出
好
被控对象 上一时刻
输出y(k-1) y(k-2) y(k-3)
以及控制指令
上一时刻值 u(k-1) u(k-2) u(k-3)
之间的一个数学模型
这是它对应的差分方程
那么这里面由于我们是计算机仿真
所以我们这里面u(k)是
按照这个模型来计算出来的
实际系统中
我们控制的肯定不是模型
实际系统中我们控制的是什么呢
是真实的被控对象
那么这个y(k)
在实际系统中就应该来自于
测量变送仪表
反馈给控制系统的信号
也就是说它通过反馈信号
也就是模拟量输入通道
反馈给控制系统的
这样一个现场测量信息
也就是说实际控制系统中
我们控制的是真实的被控过程
现在我们做仿真控制的是一个模型
这里面用差分方程把它描述出来
那么显然这里面定义的误差
误差e(k)是设定值r(k)和反馈值y(k)
之间的偏差
后面做一些参数迭代
u(k-3)等于u(k-2)
u(k-2)等于u(k-1)
u(k-1)等于u(k)
相应地
y(k-3)等于y(k-2)
y(k-2)等于y(k-1)
y(k-1)等于y(k)
实际上这就是我们常见的
在算法程序设计中常见的迭代
因为下一时刻k是要增加1的
所以我们就相应的用y
用u(k-2) u(k-1) u(k)的值
分别送到
u(k-3)
u(k-2)
u(k-1)中
实现参数的迭代
那么下面x1
是定义为当前时刻误差的error(k)
x2(k-1)是定义为x2的
这里面是一个初始值的时候
它就是x2
x2定义为什么呢
当前时刻的误差
减去上一次的误差
除以采样周期
也就是得到了微分信号
x3是什么东西呢
一个积分的信号
他在x3初始值为零
的基础上叠加
每次都叠加
加上当前时刻的误差error(k)
乘以采样周期ts
然后下一步就是error_1
也就是e(k-1)
进行一个迭代
好
这循环就完成了
下面我们就可以画出它们图形
用plot命令
就可以在一张图里面
把设定值r和被控变量y
分别用blue蓝色的线
和r red红色的线进行区分
并标注它的横坐标 纵坐标
这是第一张图
第二张图
我们就可以把设定值r
和反馈值y之间的偏差
画一条曲线
呈现在画面上
那么采用专家PID
得到了单位阶跃响应曲线
如图所示
我们发现显然是没有超调的
而且调节时间很快
迅速地响应达到了设定值
实现了对设定值的
迅速准确稳定跟踪
那么把采用传统的PID
和专家PID控制算法进行对比
把它们画在一张图里面
就是这样两条
单位阶响应曲线
显然采用专家PID
可以达到更好的控制性能
这是从图形上得到了
一个定性的一个结论
那么这是把他们的偏差
画在一张图上
得到这样一个结果
显然专家PID中偏差的变化
收敛速度更快
那么从量化的角度进行一个比较
采用传统的PID得到了
上升时间
调节时间
峰值时间
超调量
ITAE
还有专家PID的性能指标
分别做个对比
我们发现
采用专家PID控制算法之后
它的上升时间更短
峰值时间更小
调节时间更短
超调量显著减小了
获得了更好的控制性能
这个例子里面
虽然ITAE有点偏大
但是它的性能
还是要优于传统的PID
好
这节课讲到这里
-开篇
--开篇
-1.1课程考试方式
-1.2 数据、信息、知识与智能
-1.3传统控制面临的挑战
-1.4 控制科学发展过程
-1.5 智能控制的多元论
--1.5
-1.6 控制策略的渗透与融合
--1.6
-1.7 智能控制与传统控制的联系与区别
--1.7
-1.8 智能控制的类型之分级递阶智能控制系统
--1.8
-1.9 智能控制的类型之专家控制系统
--1.9
-1.10 智能控制的类型之模糊控制系统
--1.10
-1.11 智能控制的类型之神经网络控制系统,智能控制的类型之基于规则的仿人智能控制系统,集成智能控制系统,组合智能控制
--1.11
-1.12智能控制系统的类型之基于规则的仿人智能控制系统,集成智能控制系统,组合智能控制
--1.12
-1.13本章小结
--1.13
-第一章测试
-2.1基于搜索的问题求解
-- 2.1.7 均一代价搜索
-- 2.1.10 A星算法
-2.2 专家系统简介
- 2.3 专家PID
-第二章测试
-3.1 模糊控制概述
-3.2 模糊集合
-3.3 隶属函数
--3.3隶属函数.
-3.4 模糊关系及其运算
-第三章测试
- 4.1 模糊自适应整定PID控制原理
-4.2 基于FF的模糊PID控制试验验证
-第四章测试
- 5.1 神经网络简介
- 5.2 神经网络的发展简史
-5.3 神经网络的基本概念
- 5.4 神经网络的分类
-5.5 神经网络的学习算法、基本特征和研究领域
-第五章测试
-6.1 感知器
--6.1.2.1 感知器应用实例分析(实现逻辑运算与或非)
- 6.2 BP神经网络
--6.2.2.1 BP神经网络应用实例分析之一:逻辑运算异或实现
--6.2.2.2 BP神经网络应用实例分析之二:非线性函数拟合
-第六章测试
- 7.1 什么是遗传算法
-7.2 遗传算法的特点
-7.3 遗传算法的基本操作之复制
-7.4 遗传算法的基本操作之交叉与变异
-第七章测试
-8.1 遗传编程工作原理
-8.2 遗传编程基本操作之复制
-8.3 遗传编程基本操作之交换和突变
- 8.4 遗传编程的工作步骤及实例分析
-第八章测试
-期末测试