二阶带有纯延迟系统的PID与模糊控制设计对比(研究生课程实验)

2023-05-16

实验步骤及方法

选择被控对象

现有一个带有纯延迟的长方体水槽液位控制系统,调节阀与贮水槽有一段较长距离,调节阀开度变化会引起流入水量的变化,但是需要经过一段传输时间 τ \tau τ后才能对水槽的液位产生影响,其中 τ \tau τ称为纯延迟时间,由物理特性,本题 τ \tau τ 1 1 1。水槽进水量 Q i Q_i Qi由进水调节阀控制,出水量 Q o Q_o Qo根据需求改变。系统的被调节量为水位高度 h h h,因水槽为长方体形状,所以其值直接反映了 Δ Q = Q i − Q o \Delta Q=Q_i-Q_o ΔQ=QiQo. 现定义 Δ h \Delta h Δh为液位的减少量, u u u表示进水调节阀的开度。
由上述工程背景,得到 Δ h \Delta h Δh u u u之间的微分方程为:
u ( t − 1 ) = h ( t − 1 ) + 1 2 d 2 h ( t ) d t 2 + d h ( t ) d t u(t-1) = h(t-1)+\frac{1}{2} \frac {d^2 h(t)}{dt^2}+\frac{dh(t)}{dt} u(t1)=h(t1)+21dt2d2h(t)+dtdh(t)
上式的物理意义为:式中 d h ( t ) d t \frac{dh(t)}{dt} dtdh(t)为水位变化率,与放水和进水流速差成正比例关系, d 2 h ( t ) d t 2 \frac{d^2 h(t)}{dt^2} dt2d2h(t)与流速差的变化率成正比例关系。水阀的调节根据水位高低、流速差、流速差的变化率来进行改变,以此对水位进行控制。但是其中水位由超声波监测,可以获得实时数据,但是流速差和其变化率由水轮测得,因惯性和其它因素,其测量值的获取存在 1 s 1s 1s的延迟。

将方程式用 s s s域形式表达,为:
H ( s ) U ( s ) = 2 e − s s 2 + 2 s + 2 e − s \frac{H(s)}{U(s)} = \frac{2e^{-s}}{s^2+2s+2e^{-s}} U(s)H(s)=s2+2s+2es2es
上式即为系统的闭环传递函数 Φ ( s ) \Phi(s) Φ(s),所以:
Φ ( s ) = H ( s ) U ( s ) = 2 e − s s 2 + 2 s + 2 e − s \Phi(s) = \frac{H(s)}{U(s)} = \frac{2e^{-s}}{s^2+2s+2e^{-s}} Φ(s)=U(s)H(s)=s2+2s+2es2es
求得开环传递函数 G ( s ) G(s) G(s):
G ( s ) = 2 e − s s 2 + 2 s G(s) = \frac{2e^{-s}}{s^2+2s} G(s)=s2+2s2es
综上,使用simulink绘制系统结构图如图

利用matlab绘图命令:

plot(simout1)title('Step Response');
xlabel('t/s');
ylabel('amplitude');

绘制系统单位阶跃响应曲线如图。
在这里插入图片描述

设计常规PID控制器

1、比例 ( P ) (P) (P)控制:是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。

2、积分 ( I ) (I) (I)控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统。为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分 ( P I ) (PI) (PI)控制器,可以使系统在进入稳态后无稳态误差。

3、微分 ( D ) (D) (D)控制:在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后 ( d e l a y ) (delay) (delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而需要增加的是“微分项”,它能预测误差变化的趋势。
这样,具有比例 + + +微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例 + + +微分 ( P D ) (PD) (PD)控制器能改善系统在调节过程中的动态特性。 [ 1 ] ^{[1]} [1]

根据上述介绍,在 G ( s ) G(s) G(s)前串联校正 G c ( s ) G_c(s) Gc(s),得到如图
在这里插入图片描述

其中, P I D    C o n t r o l l e r PID~~Controller PID  Controller模块可以设置控制系统的PID参数,经过调试,最终选取参数如图
在这里插入图片描述

比例系数P=0.8,积分系数I=0.1,微分系数D=1,对照公式
G c ( s ) = P + I 1 s + D N 1 + N 1 s G_c(s)=P+I\frac{1}{s}+D\frac{N}{1+N\frac{1}{s}} Gc(s)=P+Is1+D1+Ns1N
将P、I、D的值带入,得 G c ( s ) = 0.8 + 1 10 s + 100 1 + 100 s G_c(s)=0.8+\frac{1}{10s}+\frac{100}{1+\frac{100}{s}} Gc(s)=0.8+10s1+1+s100100

所以系统开环传递函数为:
G ( s ) = 2 e − s s 2 + 2 s ( 0.8 + 1 10 s + 100 1 + 100 s ) G(s) = \frac{2e^{-s}}{s^2+2s}(0.8+\frac{1}{10s}+\frac{100}{1+\frac{100}{s}}) G(s)=s2+2s2es(0.8+10s1+1+s100100)

使用MATLAB对绘制校正后的系统单位阶跃响应曲线如图
qw

由图可得:校正后系统的单位阶跃相应较好,相比于校正前超调量 σ % \sigma\% σ%有所降低,约为50%,调节时间 t p t_p tp约为30s.
\subsection{设计模糊控制器}
虽然本系统可以用PID进行控制,但是因为具有纯延迟环节,被控量不能及时地反映系统所遇到或承受的扰动,即使检测到了信号使控制器动作,也要经过一段延迟时间后才能使被控制量得到控制。这样系统必然会经过较长的调节时间并产生明显的超调。带延迟特性的被控系统的控制难度随滞后程度的增加而加大,所以PID并不是最佳选择。 [ 2 ] ^{[2]} [2]

对于此种复杂的控制系统,虽然PID难以有效解决,但是人类凭借经验等信息往往较为容易将其控制特性保持很好,所以可以通过使用模糊控制设计将专家经验等模糊概念量子化,用来控制系统。

模糊控制器的输入通常是偏差和偏差的变化率,即E和EC,输出为控制量,如图
在这里插入图片描述

在本题中E为h的偏差量,EC为h偏差量的变化率,U为输出至水阀的控制量。搭建模糊控制框架,如图中模糊控制器 F u z z y   L o g i c   C o n t r o l l e r Fuzzy~Logic~Controller Fuzzy Logic Controller替代了PID控制中的 P I D   C o n t r o l l e r PID~Controller PID Controller。按照模糊控制设计流程,应将输入输出数据转化为模糊集合,存入控制系统中,在控制时实时调用。
在这里插入图片描述

利用simulink的 F u z z y Fuzzy Fuzzy工具箱(如图)可以轻松设置模糊集合。

设计E的论域为 ( − 10 ∼ 10 ) (-10\sim 10) (1010),EC的论域为 ( − 10 ∼ 10 ) (-10\sim 10) (1010),U的论域为 ( − 5 ∼ 5 ) (-5\sim 5) (55)。E中定义5个模糊集合,EC中定义6个,U中定义5个,各集合定义如表在这里插入图片描述

在这里插入图片描述

E、EC、U的隶属度和模糊关系:

表格解释:
在右下角的 6 × 5 6\times5 6×5共30个数据的整列中,第一行第一列dd表示当E是DD,且EC是DD时,U是dd.第三行第四列zx表示当E是ZG,EC是ZZ时,U是zx,以此类推。用模糊语言表示此表为:\
If (E is GG) and (EC is GGG) then (U is xx)\
If (E is ZG) and (EC is GG在这里插入图片描述
G) then (U is xx)
双击模糊控制器 F u z z y   L o g i c   C o n t r o l l e r Fuzzy~Logic~Controller Fuzzy Logic Controller,将fuzzy1.fis文件导入,运行仿真,得到的输出数据simout2使用matlab的plot命令

hold on
plot(simout1,'.k');
plot(simout,'-r');    %PID
plot(simout2,'-.');   %模糊
legend('未加校正','加入PID后','模糊控制');
title('Step Response');
xlabel('t/s');
ylabel('amplitude');
\end{lstlisting}
绘图结果如图\ref{mohu1eps}.
\begin{figure}[htbp]
	\centering
	\includegraphics[width=0.8\textwidth]{mohu1.eps}
	\caption{未加控制、PID、模糊控制后单位阶跃响应曲线}\label{mohu1eps}

由图可得:当前模糊控制下的系统在受到单位阶跃信号时产生振荡,在时间到达30s后产生振幅约为1.4的等幅、正弦振荡,系统不稳定。

分析模糊控制的论域、隶属函数。模糊关系后,发现U的论域过大,在低强度的输入值(E、EC)下,输出值U相比较大,更改其论域与隶属函数,修改后的隶属函数如图
在这里插入图片描述

改进隶属函数后的系统单位阶跃相应如图
在这里插入图片描述

观察图,PID控制下的系统超调量约为50%,调节时间30s,稳态误差为0(无差跟踪)。而模糊控制下的系统超调量只有18%,且只经过20s的时间即达到稳定,控制性能明显优于PID控制,虽然调节时间依然较长,但是对于带有纯延迟的被控对象,此结果已经相当可观。

改变规则,调试模糊控制器

调试模糊控制器的参数一般是调试其模糊关系,即相应的“规则”,改变规则类似于调试PID控制的比例、积分、微分系数,一个优秀的控制器规则可以使被控对象获得优异的运行状态。
上述模糊控制器的隶属函数都是三角形,理论上,两个隶属度函数重叠时,交点值越小(越低),效果越好。基于此特性,将输入的隶属函数由三角形改成高斯型。又因为隶属函数斜率的绝对值越大,即形状越陡,系统分辨率越高,其控制灵敏度也就越高,系统响应越平滑。基于此性质,将U的论域从(-2,2)改成(-1.8,1.8),各个隶属函数相应改变。
经过对论域、隶属度函数等参数的调节,最终改进的模糊控制效果接近临界阻尼(实际上是稍过阻尼状态,这也是系统调节效果里面比较满意的情况)。超调量为0.7%,几乎不存在,调节时间为10S.

实验目标达成,实验结束。

总结

心得体会

本次实验让我重拾了利用matlab-simulink仿真系统控制的方法,在实验初期遇到了很多困难,如对PID理解不够透彻、模糊控制参数设置经验不够等等,但是实验的意义就在于不断提出-否定-完善自己的想法,最终获得成功。最终我确实也成功了,不仅更加熟悉经典的PID控制,学习了PID参数调节,而且还掌握了带有纯延迟的二阶系统的控制特性。更为重要的是我利用智能控制课程上学习的理论知识,运用到实际,设计出了我的第一个模糊控制系统。

对实验方法和手段的改进

实验通过对“带有延迟测量数据的水槽灌水模型”,分别用PID控制和模糊控制进行计算机建模,在多次调整控制参数后,对比两种控制方法的控制结果,结合理论知识,进行分析。

在实验中,对误差输入E分割成5个模糊集合,EC分割成6个模糊集合,从排列组合的角度即有 5 × 6 = 30 5\times6=30 5×6=30种配对的情况。在此30种情况下,又分成5个不同的输出集合,也就是U中的5个模糊集合。这样 30 ⟶ 5 30\longrightarrow5 305的对应就是其规则,因为在实验中最后调试出的阶跃响应曲线已经符合工程应用,所以对于规则库没有过多精雕细琢,如果使用更多的时间微调规则库,其控制特性可能会继续得到优化。

在判断系统控制性能时,除了阶跃响应曲线,还可以根据根轨迹、幅频特性、相频特性等参数进行判断,但是由于时间关系,实验过程将这一步骤省略,如果有更多的时间或更深入研究的机会,可以利用仿真软件从频域或复频域入手,探索对应于本物理背景下的更多控制参数,在考虑的维度增加以后,各个系统的优缺点就会更加彻底的暴露出来,对于日后的选择有积极作用。

总结

PID控制:调节精度高,有一套成熟的计算理论。对于单输入单输出的常见系统,控制效果很好。但是鲁棒性差,响应速度在某些领域不够。

模糊控制:原理简单、使用方便,对于复杂系统有较好的适用性和控制能力。无需建立数学模型且可以自学习。但是模糊控制在模糊化和逆模糊化过程中没有系统的方法,且不具有积分环节,稳态精度不高。

对于模糊控制而言,各个模糊集合的隶属度函数应该能够较好地覆盖整个论域,避免出现论域中某一段不属于任何一个隶属函数的情况,同时也要尽量减少过多的函数范围交叉,否则相关模糊集在概念上自相矛盾,这一点与人的概念很相似,类比到人的思维上就是概念混乱。但是不可避免的会有重叠(例如高斯分布的隶属度函数,其覆盖区域是整个论域),所以在实际运用时应该尽可能将重叠区域的各隶属度函数交叉点尽可能小,重叠部分任何点的隶属度的和应该小于1

下载链接

之前写作业的时候用的文件:github下载链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二阶带有纯延迟系统的PID与模糊控制设计对比(研究生课程实验) 的相关文章

  • PyQT在ui界面新建Label控件

    PyQT通过自定义外部函数 xff0c 在ui界面新建Label控件 写在前面的废话 xff1a 如果你想要在ui界面创建一个Label xff08 或者其他控件 xff09 xff0c 最快捷的当属在QTdesigner里找到你需要的控件
  • ubuntu克隆ue4源码

    ubuntu克隆ue4源码 1 进入ue官网 xff0c 登陆自己账号 xff0c 进入个人账户界面 xff0c 点击连接 xff0c 账户 xff0c 关联github Epic Games 2 之后按照操作进行 xff0c 关联自己的g
  • Windows环境跑通清华开源通用时间序列分析模型TimesNet

    1 需要按照给定配置准备python3 8环境与相关依赖包 xff0c 全程在windows环境下进行 2 github thuml Time Series Library A Library for Advanced Deep Time
  • 嵌入式工程师职业生涯该怎样规划

    嵌入式工程师分布在各行各业 xff0c 包括消费电子 工业电子 汽车电子和军用电子等 从功能上面看 xff0c 嵌入式本身包括了51 mcu soc soc 43 baseband等很多形式 从开发的结构上看 xff0c 有些同学专注于底层
  • 使用ros实现c++与python通信

    创建工作空间 选择在桌面创建 cd mkdir p my workspace src 编译工作空间 cd my workspace catkin make source一下新生成的setup bash文件 xff1a source deve
  • C++输出系统时间

    编译软件 xff1a dev5 4 0 程序功能 xff1a 输出系统时间 xff0c 输出格式 2018 08 10 15 14 40 方法 xff1a 使用time t获取系统时间 xff0c 再使用strftime 函数对日期和时间进
  • 该博客已搬家至 博客园

    由于CSDN不支持metaweblog xff0c 该博客今日起停止更新 所有内容移至博客园 我的博客园博客地址 xff1a 戳我 https www cnblogs com wittxie CSDN写文章真的难受 xff0c 具体原因你们
  • Kernel Based Progressive Distillation for Adder Neural Networks:基于核的渐进式蒸馏的加法神经网络

    2020 NeurIPS AdderNet基于核的渐进式的蒸馏加法神经网络 一 简介二 问题解决2 1问题提出2 2初步解决方案2 3具体分析2 4问题解决 用核方法来解决这个问题2 5渐进式学习 三 实验结果分析3 1基于MNIST数据集
  • 人脸识别 灰度化

    人脸识别 灰度化 欢迎使用Markdown编辑器 你好 xff01 这是你第一次使用 Markdown编辑器 所展示的欢迎页 如果你想学习如何使用Markdown编辑器 可以仔细阅读这篇文章 xff0c 了解一下Markdown的基本语法知
  • 基于STM32F103的红外遥控小车

    本人小白一个 xff0c 利用空闲时间 xff0c 做了一些小东西 xff0c 跟大家分享一下自己的代码 如有不对的地方 xff0c 还请各位前辈指正 话不多说 xff0c 先上干货 include 34 remote h 34 inclu
  • 关于realsense d435i的安装步骤及问题总结

    一 realsense的安装过程 参考链接 xff1a 1 Ubuntu18 04 安装D435i ROS 2 Ubuntu下Realsense SDK的安装 3 Realsense D435i 在ubuntu上安装SDK与ROS Wrap
  • ROS编译catkin_make的时候报错找不到xxx.h头文件

    报错内容 xff1a home firefly eai ws src square square goal service src service server cpp 3 53 fatal error square goal servic
  • Ubuntu下安装GParted并分区,进行虚拟机内存扩展

    首先对于虚拟机下的Ubuntu系统安装Gparted 直接使用sudo apt get install gparted 关机先进行内存分配后 xff0c 再进行下面操作 网上还有其他适合的教程 xff0c 我的16 04这样安装是没问题的
  • PIP版本过低,更新无用,Command “python setup.py egg_info“ failed with error code 1 in报错

    Ubuntu下pip install 时候python2 7总是报错 Complete output from command python setup py egg info Traceback most recent call last
  • 小觅双目相机进行ROS标定

    安装image pipeline包 使用ROS官方提供的 camera calibration 包对双目相机进行标定 详情可见官网camera calibration Tutorials StereoCalibration ROS Wiki
  • ubuntu18.04安装ORB_SLAM3以及遇到的问题

    目录 1 安装c 43 43 11 2 安装Pangolin a xff09 安装依赖 b xff09 编译pangolin 切换到pangolin下载包里面 3 安装opencv 4 eigen3安装 5 boost安装 6 编译ORB
  • 【论文写作】Word中公式快捷输入方式

    环境 Win10 64位 用到软件 Mirsoft Word MathType Mathpix snipping tool Quicker 说明 xff1a 点击链接可以直达官网 一 前言 针对Word中公式输入效率低的问题 xff0c 本
  • 练习7-10 查找指定字符 (15分)

    本题要求编写程序 xff0c 从给定字符串中查找某指定的字符 输入格式 xff1a 输入的第一行是一个待查找的字符 第二行是一个以回车结束的非空字符串 xff08 不超过80个字符 xff09 输出格式 xff1a 如果找到 xff0c 在
  • 用cropper.js裁剪图片并上传到服务器,解析base64转存图片到本地

    今天要写上传图片功能 xff0c 研究了一下cropper 将图片上传服务器并保存到本地 html lt html gt lt head gt lt title gt 基于cropper js的图片裁剪 lt title gt lt met
  • 通讯协议详解

    1 xff0c 概念 网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合 网络上的计算机之间是如何交换信息的呢 xff1f 就像我们说话用某种语言一样 xff0c 在网络上的各台计算机之间也有一种语言 xff0

随机推荐