PID控制与模糊PID控制的比较

news2024/9/8 7:11:31

一、PID控制器的设计

1.PID控制原理图:

PID控制其结构框图如下图所示:

图1:PID控制器结构框图

2.PID控制器传递函数的一般表达式

PID控制器传递函数的一般表达形式为:

其中kp为比例增益;ki为积分增益;kd为微分增益。

调整PID参数,以满足系统要求,从而使被控对象有更优良的动态响应和静态响应。

比例环节:根据偏差量成比例的调节系统控制量,以此产生控制作用,减少偏差。比例系数的作用是增加系统响应的速度,比例系数越大,系统响应越快,但系统容易产生超调,比例系数过小,会影响系统调节的精度,系统响应时间变长,系统的动态响应变差。

积分环节:用于消除静差,提高系统的无差度,积分时间常数决定着积分环节作用的强度,但是积分作用过强的话会影响系统的稳定性。

微分环节:根据偏差量的变化趋势来调节系统控制量,在偏差信号发生较大变化之前,提早引入一个校正信号,起到加快系统动作速度,减少调节时间的作用,调节微分参数需要注意微分作用太强可能会引起系统振荡。

二、模糊PID控制器的设计

1.模糊控制原理图

模糊控制器结构框图如下图所示:

图3:模糊控制器结构框图

上面为模糊控制器的原理图,实际上模糊控制器的输出并非真正的控制信号,而是作为PID的参数。所以完整的模糊PID控制器框图应该需要包含PID控制的部分,如下图所示:

其中模糊推理部分即上面的模糊控制器,PID调节器才是真正起作用的控制器,而模糊控制器的作用是在线实时调整PID参数。

2.模糊控制器传递函数一般表达形式

一个典型工业过程通常可以等效为二阶系统加上一个非线性环节(如纯滞后),给出如下经典控制对象传递函数的一般形式:

其中模糊控制规则是模糊控制器的核心,是设计控制系统的主要内容。

一个基本模糊控制器主要有三个功能:

(1)模糊化:把精确量(如偏差e和偏差变化ec)转化为相应的模糊量(E、EC);

(2)模糊推理:按总结的语言规则(模糊控制规划表)进行模糊推理;

(3)模糊判决:把推理结果(U)从模糊量转化为可以用于实际控制的精确量(u)。

模糊规则是由一系列的模糊条件语句组成的,即由许多模糊蕴含关系构成。这些条件语句是推理的出发点和得到的正确结论的根据和基础。每条模糊条件语句都给出模糊蕴含关系,即一条控制规则。若有n条规则,就把它们表达的n个模糊蕴含关系(i=l,2,⋯,n)做并运算,构成系统总的模糊蕴含关系:

三、系统仿真

本文采用的传递函数为:

用Simulink工具建立由PID控制器组成的系统仿真模型如下图所示,其中比例增益Kp取值0.04,积分增益取值0.03,微分增益取值1.2。选用的输入是单位阶跃信号。

图4:Simulink的PID控制器仿真图

设计模糊PID控制器的主要步骤为:

1. 选择偏差e、偏差变化ec和输出的模糊语言变量为E、EC和Kp,Ki,Kd。根据e、ec和PID参数实际的基本论域,设定E、EC都为[-3,3],Kp为[-0.3,0.3],Ki为[-0.06,0.06],Kd为[-3,3]。模糊控制器前后的GAIN模块为比例因子,可将输出输出转换到论域范围。

2. 选取E、EC和PID参数的各语言变量值:正大为PB,正中为PM,正小为PS,为零为E,负小为NS,负中为NM,负大为NB,它们各自在论域上的模糊子集隶属度函数均为三角形。

3. 选择一种模糊判决方法,将控制量由模糊量变为精确量,这个过程叫做“去模糊化”,这里采用的是“面积平分法”。

用Simulink工具建立由模糊控制器组成的系统仿真模型如下图所示:

图5:Simulink的模糊PID控制器仿真图

 语言值的隶属函数选择三角形的隶属度函数如下面三幅图所示:

(1)E的隶属度函数:

(2)EC的隶属度函数:

(3)PID参数(即Kp,Ki,Kd)的隶属度函数

控制规则选用Mamdain 控制规则;

 将规则输入到编辑器中(如图8所示)一共有7×7=49条规则,输入后可以在编辑器中的Rule Viewer(如图9所示)和Surface Viewe(如图10所示)r中查看对具体输入的模糊推理及输出情况,输入各种不同的数据,查看模糊推理情况及输出数据。也可以用于检查,看自己输入的规则和有没有错误。

编辑器中的Surface Viewer:

实验得到的结果图形如下所示:

四、下载链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1912051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESLint: Delete `␍`(prettier/prettier)解决问题补充

如果你是克隆的,参考这位大佬的文章 vue.js - Delete ␍eslint(prettier/prettier) 错误的解决方案 - 个人文章 - SegmentFault 思否 如果你是个人在本地实现,且改为 仍旧报错,我解决的方案: 改为,同时勾选和我配置一…

020-GeoGebra中级篇-几何对象之点与向量

本文概述了在GeoGebra中如何使用笛卡尔或极坐标系输入点和向量。用户可以通过指令栏输入数字和角度,使用工具或指令创建点和向量。在笛卡尔坐标系中,示例如“P(1,0)”;在极坐标系中,示例如“P(1;0)”或“v(5;90)”。文章还介绍了点…

倒计时1天!飞思实验室暑期公益培训,7月10日不见不散

01培训背景 很荣幸地向大家宣布:卓翼飞思实验室将于7月10日正式开启为期两个月的暑期公益培训!本次培训为线上直播,由中南大学计算机学院特聘副教授,RflySim平台总研发负责人戴训华副教授主讲。 培训将基于“RflySim—智能无人集…

74HC14使用陶瓷晶振产生振荡成功

之前实验这个ic陶瓷振子,结果是不起振,之前用的是并联模式。可能参数不适合。一直没有起振。 今天又翻阅了很多陶瓷谐振器的电路,看到有串联模式的电路,就来实验了一下。结果成功了。电路如下: 测试结果:陶…

【高校科研前沿】中国农业大学姚晓闯老师等人在农林科学Top期刊发表长篇综述:深度学习在农田识别中的应用

文章简介 论文名称:Deep learning in cropland field identification: A review(深度学习在农田识别中的应用:综述) 第一作者及单位:Fan Xu(中国农业大学土地科学与技术学院) 通讯作者及单位&…

退出的微信群怎么恢复?这3个小技巧了解下

在日常使用微信的过程中,我们可能会因为各种原因退出某个微信群。然而,退出后才发现群里有重要的信息或文件需要查看,这时该怎么办呢?许多人都会问:退出的微信群怎么恢复?事实上,微信提供了一些…

生成随机密码

生成8位无重复的密码(可以包含数字、大小写字母) import random import string character string.digits string.ascii_letters password .join(random.sample(character, 8)) print(f"生成的随机密码为:{password}")

我们公司落地大模型的路径、方法和坑

我们公司落地大模型的路径、方法和坑 李木子 AI大模型实验室 2024年07月02日 18:35 北京 最近一年,LLM(大型语言模型)已经成熟到可以投入实际应用中了。预计到 2025 年,AI 领域的投资会飙升到 2000 亿美元。现在,不只…

C++:多态(继承)

hello,各位小伙伴,本篇文章跟大家一起学习《C:多态》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 :maple_leaf:多态的概念:maple_leaf:继承中的多态1.:leaves:虚函数表 :…

BKP备份寄存器和实时时钟笔记

BKP(Backup Registers)备份寄存器 BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位…

Linux 网络--TCP协议收包流程(NAPI机制)

Linux 网络--TCP协议收包流程(NAPI机制) 平台环境简介:宿主机: ubuntu18.04Linux内核源码版本: Linux-4.15网卡驱动: Intel e1000 (ubuntu 虚拟机默认网卡驱动)协议:TCP协议,本文分析收包过程 本…

Django 更新数据 save()方法

1,添加模型 Test/app11/models.py from django.db import modelsclass Post(models.Model):title models.CharField(max_length200)content models.TextField()pub_date models.DateTimeField(date published)class Book(models.Model):title models.CharFie…

9.pwn 栈溢出

栈溢出简介 函数中的存储在栈中的局部变量数组边界检查不严格发生越界写,造成用户输入覆盖到缓冲区外的数据内容, 由于栈中同时存在着与函数调用参数的相关信息,栈溢出可以导致控制流劫持 基础栈溢出(hello world in pwn) 多数情况下我们需…

【 正己化人】 把自己做好,能解决所有问题

阳明先生说:与朋友一起辩论学问,纵然有人言辞观点浅近粗疏,或者是炫耀才华、显扬自己,也都不过是毛病发作。只要去对症下药就好,千万不能怀有轻视别人的心理,因为那不是君子与人为善的心。 人会爱发脾气、…

UE5.3-基础蓝图类整理一

常用蓝图类整理: 1、获取当前关卡名:Get Current LevelName 2、通过关卡名打开关卡:Open Level(by name) 3、碰撞检测事件:Event ActorBeginOverlap 4、获取当前player:Get Player Pawn 5、判断是否相等&#xff1…

阿里云人工智能平台PAI部署开源大模型chatglm3之失败记录--update:最后成功了!

想学习怎么部署大模型,跟着网上的帖子部署了一个星期,然而没有成功。失败的经历也是经历,记在这里。 我一共创建了3个实例来部署chatglm3,每个实例都是基于V100创建的(当时没有A10可选了),其显…

自动化测试之unittest框架详解

1、什么是Unittest框架? python自带一种单元测试框架 2、为什么使用UnitTest框架? >批量执行用例 >提供丰富的断言知识 >可以生成报告 3、核心要素 1).TestCase(测试用例) 2).TestSuite(测试套件) 3).Test…

比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容

比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容 摘要 本文主要介绍了在电子计算机类比赛中技术层面上的团队分工和需要学习的内容,分为了嵌入式硬件、嵌入式软件、视觉图像处理、机械、上位机软件开发和数据分析等六个方向&am…

ORA-12537: TNS:连接关闭/Io 异常: Got minus one from a read call

在另外一个数据库建立dblink的时候,发现执行命令报错: 被连接的数据库我也上去过,用工具尝试登陆也报错: IO Error: Got minus one from a read call, connect lapse 1 ms., Authentication lapse 0 ms. Got minus one from a …

PTA - 编写函数计算圆面积

题目描述: 1.要求编写函数getCircleArea(r)计算给定半径r的圆面积,函数返回圆的面积。 2.要求编写函数get_rList(n) 输入n个值放入列表并将列表返回 函数接口定义: getCircleArea(r); get_rList(n); 传入的参数r表示圆的半径&#xff0c…