当前位置: 首页 > news >正文

智能控制导论 # 专家控制实例 - 专家PID控制

由于博主非自动化相关专业学生,如有疏漏以及谬误还请不吝赐教。感谢~


由于常见的是二阶系统,所以本文以二阶系统为例,展开分析。


专家PID控制原理

PID专家控制的实质是,基于受控对象和控制规律的各种知识,无需知道被控对象的精确模型,利用专家经验来设计PID参数。

  • 专家PID控制是一种直接型专家控制器。

对典型的二阶系统单位阶跃响应过程作如下分析。

专家控制系统一般不需要知道被控对象的精确模型,是基于受控对象和控制规律的各种知识,利用在该领域的专家经验来制定决策。因此我们无需建立这个控制系统的模型和传递函数。

  • 上面说了我们不需要做什么,那我们需要做什么?以及怎么做?

对于这个问题,我们首先需要分析对于“典型的二阶系统”我们掌握的知识、经验或规律。

无论采取什么样的算法来控制系统,最主要的目的是使系统的误差足够小。大误差要对应强的控制来矫正,小误差对应弱的控制作用。当经过控制后误差小到我们设定的范围,我们就保持当前的控制作用即可,使系统保持稳定,并改善对于稳定状态的性能指标。
根据以上分析,我们需要首先知道“典型的二阶系统”的误差变化曲线是什么样子的。

典型的二阶系统单位阶跃响应误差曲线如图所示。
典型的二阶系统单位阶跃响应误差曲线
图中的区域可以分为以下两类:

  1. 误差的绝对值在减小 (图中曲线白色部分)
  2. 误差的绝对值在增大 (图中阴影部分)

根据我们的经验,误差及其变化是我们实时控制算法的依据。
我们以PID的误差及其变化为依据,按照下述步骤设计我们的专家PID控制器:

  1. 引入一些定义

    同时定义2个常数: M 1 , M 2 M_1,M_2 M1,M2并且 M 1 > M 2 > = 0 M_1>M_2>=0 M1>M2>=0
  2. 根据误差及其变化,专家PID可以分为如下5种情况
    (1) 当 ∣ e ( k ) ∣ > M 1 |e(k)|>M_1 e(k)>M1
    说明误差的绝对值已经很大。不论误差变化趋势如何,都应考虑控制器的输出应按最大(小)输出,以达到迅速调整误差,使误差绝对值以最大速度减小。同时需要避免超调。(此时,相当于实施开环控制)
    (2)当 e ( k ) Δ e ( k ) > 0 e(k)\Delta{e(k)}>0 e(k)Δe(k)>0 Δ e ( k ) = 0 \Delta{e(k)}=0 Δe(k)=0
    说明误差在朝绝对值增大的方向变化或者误差保持不变
    此时如果 ∣ e ( k ) ∣ > = M 2 |e(k)|>= M_2 e(k)>=M2,说明误差也较大,考虑由控制器实施较强的控制作用,以达到扭转误差绝对值朝减小的方向变化,并迅速减少误差的绝对值,控制器的输出为
    u ( k ) = u ( k − 1 ) + k 1 { k p [ e ( k ) − e ( k − 1 ) ] + k i e ( k ) + k d [ e ( k ) − 2 e ( k − 1 ) + e ( k − 2 ) ] } u(k)=u(k-1)+k_1\{k_p[e(k)-e(k-1)]+k_ie(k)+k_d[e(k)-2e(k-1)+e(k-2)]\} u(k)=u(k1)+k1{kp[e(k)e(k1)]+kie(k)+kd[e(k)2e(k1)+e(k2)]}
    Note:上述公式为增量式PID算法,我们还加上了 k 1 k_1 k1来增强控制作用。
    如果此时 ∣ e ( k ) ∣ < M 2 |e(k)|<M_2 e(k)<M2,说明尽管误差朝绝对值增大的方向变化,但是误差绝对值本身并不大,考虑由控制器实施一般的控制作用,只要扭转误差的变化趋势,使其朝误差绝对值减小方向变化,控制器输出为:
    u ( k ) = u ( k − 1 ) + k p [ e ( k ) − e ( k − 1 ) ] + k i e ( k ) + k d [ e ( k ) − 2 e ( k − 1 ) + e ( k − 2 ) ] u(k)=u(k-1)+k_p[e(k)-e(k-1)]+k_ie(k)+k_d[e(k)-2e(k-1)+e(k-2)] u(k)=u(k1)+kp[e(k)e(k1)]+kie(k)+kd[e(k)2e(k1)+e(k2)]
    对比上面缺少了 k 1 k_1 k1系数。



    [注意](3)(4)的3个条件中,前两个是逻辑与的关系,其整体与最后的e(k)=0是逻辑或的关系,请勿对这段描述理解错。(文章中条件中的逗号是同时满足的意思)

应用举例

求三阶传递函数的阶跃响应
G p ( s ) = 523500 s 3 + 87.35 s 2 + 10470 s G_p(s)=\frac{523500}{s^3+87.35s^2+10470s} Gp(s)=s3+87.35s2+10470s523500
其中,对象采样时间为1ms。


在仿真过程中 ϵ \epsilon ϵ取0.001。程序中的五条规则和控制算法中的5种情况相对应。
采用Z变换进行离散化,经过Z变换离散化后的对象为:
y ( k ) = − d e n ( 2 ) y ( k − 1 ) − d e n ( 3 ) y ( k − 2 ) − d e n ( 4 ) y ( k − 3 ) + n u m ( 2 ) u ( k − 1 ) + n u m ( 3 ) u ( k − 2 ) + n u m ( 4 ) u ( k − 3 ) y(k)=-den(2)y(k-1)-den(3)y(k-2)-den(4)y(k-3)+num(2)u(k-1)+num(3)u(k-2)+num(4)u(k-3) y(k)=den(2)y(k1)den(3)y(k2)den(4)y(k3)+num(2)u(k1)+num(3)u(k2)+num(4)u(k3)

专家PID控制

代码参考文末附录资料。

对比试验:常规PID控制


Reference

https://wenku.baidu.com/view/3b505c86a200a6c30c22590102020740be1ecd83.html

相关文章:

  • 通俗易懂的自动控制原理 # 绪论
  • IIS8.5 部署时报错:HTTP 401.3
  • 重写和反向代理的区别
  • 基于C++和OpenGL (GLUT) 实现太阳系行星系统
  • 微信小程序云开发 # 1 云数据库
  • 微信小程序 input 输入校验
  • 纯前端打造markdown编辑器
  • 基于Angular.js和Node.js实现在线web聊天室
  • 微信小程序云开发 # 2 云存储
  • IIS如何实现请求转发 (vue在IIS上部署) 前后端分离的部署
  • 世界一流大学.com 类似的效果是怎样实现的? (域名转发)
  • el-table-column 组件 传prop的数据怎么格式化(过滤)
  • C++ 房贷计算 : 等额本金和等额本息
  • C++ const
  • 智能控制导论 # 模糊控制 1 理论及实例
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • ES6 ...操作符
  • maya建模与骨骼动画快速实现人工鱼
  • Median of Two Sorted Arrays
  • pdf文件如何在线转换为jpg图片
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • spark本地环境的搭建到运行第一个spark程序
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 跨域
  • 前嗅ForeSpider采集配置界面介绍
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #define,static,const,三种常量的区别
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (七)Java对象在Hibernate持久化层的状态
  • (十)c52学习之旅-定时器实验
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)UDP基本编程步骤
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net 微服务 服务保护 自动重试 Polly
  • .net6 webapi log4net完整配置使用流程
  • .NET上SQLite的连接
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net中调用windows performance记录性能信息
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @ModelAttribute 注解
  • @Not - Empty-Null-Blank
  • @在php中起什么作用?