在PID控制算法的C语言实现九中,文章已经对模糊PID的实质做了一个简要说明。本来打算等到完成毕业设计,工作稳定了再着力完成剩下的部分。鉴于网友的要求和信任,抽出时间来,对模糊PID做一个较为详细的论述,这里我不打算做出仿真程序了,但就基本概念和思路进行一下说明,相信有C语言基础的朋友可以通过这些介绍性的文字自行实现。这篇文章主要说明一下模糊算法的含义和原理。

实际上模糊算法属于智能算法,智能算法也可以叫非模型算法,也就是说,当我们对于系统的模型认识不是很深刻,或者说客观的原因导致我们无法对系统的控制模型进行深入研究的时候,智能算法常常能够起到不小的作用。这点是方便理解的,如果一个系统的模型可以轻易的获得,那么就可以根据系统的模型进行模型分析,设计出适合系统模型的控制器。但是现实世界中,可以说所有的系统都是非线性的,是不可预测的。但这并不是说我们就无从建立控制器,因为,大部分的系统在一定的条件和范围内是可以抽象成为线性系统的。问题的关键是,当我们系统设计的范围超出了线性的范围,我们又该如何处理。显然,智能算法是一条很不错的途径。智能算法包含了专家系统、模糊算法、遗传算法、神经网络算法等。其实这其中的任何一种算法都可以跟PID去做结合,而选择的关键在于,处理的实时性能不能得到满足。当我们处理器的速度足够快速时,我们可以选择更为复杂的、精度更加高的算法。但是,控制器的处理速度限制了我们算法的选择。当然,成本是限制处理器速度最根本的原因。这个道理很简单,51单片机和DSP的成本肯定大不相同。专家PID和模糊PID是常用的两种PID选择方式。其实,模糊PID适应一般的控制系统是没有问题。文章接下来将说明模糊算法的一些基本常识。

模糊算法其实并不模糊。模糊算法其实也是逐次求精的过程。这里举个例子说明。我们设计一个倒立摆系统,假如摆针偏差<5°,我们说它的偏差比较“小”;摆针偏差在5°和10°之间,我们说它的偏差处于“中”的状态;当摆针偏差>10°的时候,我们说它的偏差有点儿“大”了。对于“小”、“中”、“大”这样的词汇来讲,他们是精确的表述,可问题是如果摆针偏差是3°呢,那么这是一种什么样的状态呢。我们可以用“很小”来表述它。如果是7°呢,可以说它是“中”偏“小”。那么如果到了80°呢,它的偏差可以说“非常大”。而我们调节的过程实际上就是让系统的偏差由非常“大”逐渐向非常“小”过度的过程。当然,我们系统这个调节过程是快速稳定的。通过上面的说明,可以认识到,其实对于每一种状态都可以划分到大、中、小三个状态当中去,只不过他们隶属的程度不太一样,比如6°隶属于小的程度可能是0.3,隶属于中的程度是0.7,隶属于大的程度是0。这里实际上是有一个问题的,就是这个隶属的程度怎么确定?这就要求我们去设计一个隶属函数。详细内容可以查阅相关的资料,这里没有办法那么详细的说明了。http://baike.baidu.com/view/150383.htm(见附录3)这里面有些说明。那么,知道了隶属度的问题,就可以根据目前隶属的程度来控制电机以多大的速度和方向转动了,当然,最终的控制量肯定要落实在控制电压上。这点可以很容易的想想,我们控制的目的就是让倒立摆从隶属“大”的程度为1的状态,调节到隶属“小”的程度为1的状态。当隶属大多一些的时候,我们就加快调节的速度,当隶属小多一些的时候,我们就减慢调节的速度,进行微调。可问题是,大、中、小的状态是汉字,怎么用数字表示,进而用程序代码表示呢?其实我们可以给大、中、小三个状态设定三个数字来表示,比如大表示用3表示,中用2表示,小用1表示。那么我们完全可以用1*0.3+2*0.7+3*0.0=1.7来表示它,当然这个公式也不一定是这样的,这个公式的设计是系统模糊化和精确化的一个过程,读者也可参见相关文献理解。但就1.7这个数字而言,可以说明,目前6°的角度偏差处于小和中之间,但是更偏向于中。我们就可以根据这个数字来调节电机的转动速度和时间了。当然,这个数字与电机转速的对应关系,也需要根据实际情况进行设计和调节。

前面一个例子已经基本上说明了模糊算法的基本原理了。可是实际上,一个系统的限制因素常常不是一个。上面的例子中,只有偏差角度成为了系统调节的参考因素。而实际系统中,比如PID系统,我们需要调节的是比例、积分、微分三个环节,那么这三个环节的作用就需要我们认清,也就是说,我们需要根据超调量、调节时间、震荡情况等信息来考虑对这三个环节调节的比重,输入量和输出量都不是单一的,可是其中必然有某种内在的逻辑联系。所以这种逻辑联系就成为我们设计工作的重点了。下一篇文章将详细分析PID三个变量和系统性能参数之间的联系。

PID控制算法的C语言实现十 模糊算法简介相关推荐

  1. Pid控制算法-模糊算法简介

    PID控制算法的C++实现 九 模糊算法简介   在PID控制算法的C++语言实现中,文章已经对模糊PID的实质做了一个简要说明.基本概念和思路进行一下说明,相信有C++语言基础的朋友可以通过这些介绍 ...

  2. 微分先行PID控制算法用C语言实现!

    1.微分先行PID控制算法框图 2.微分先行PID控制算法公式 3.微分先行PID控制公式用C语言实现 微分先行的PID算法实现,包括位置型和增量型两种实现方式. (1)位置型 void PIDReg ...

  3. 经典PID控制算法用C语言实现!

    1.经典PID控制算法框图 2.经典PID控制算法公式 3. 经典PID控制公式用C语言实现 float pidUpdate(PidObject* pid, const float error) {f ...

  4. 数据挖掘十大算法——简介

    1. 简介 ICDM(国际数据挖掘大会)2006年从18种提名的数据挖掘算法中投票选出了十大算法.这18中提名数据挖掘算法分属10大数据挖掘主题,红色部分即为最终选出的十大算法: 分类(Classif ...

  5. PID控制算法实践应用(二):位置式PID控制算法的C语言实现

    目录 前言 一.实现步骤 1.定义PID变量结构体 2.初始化变量 3.编写控制算法

  6. PID控制算法的C语言实现六 抗积分饱和的PID控制算法C语言实现

    所谓的积分饱和现象是指如果系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构达到极限位置,若控制器输出U(k)继续增大,执行器开度不可能再增大,此时计算机输出控制 ...

  7. 算法高级(48)-数据挖掘十大算法简介

    朴素贝叶斯 决策树 逻辑(Logistic)回归 线性回归 KNN算法(最邻近算法) SVM 聚类算法 Apriori算法(频繁项挖掘算法) EM(最大期望算法) 分类回归算法 我的微信公众号:架构真 ...

  8. Pid控制算法-专家PID与模糊PID的C++实现

    PID控制算法的C语言实现 八 专家PID与模糊PID的C语言实现    本节是PID控制算法的C++语言实现系列的最后一节,前面7节中,已经分别从PID的实现到深入的过程进行了一个简要的讲解,从前面 ...

  9. 经典PID控制算法原理以及优化思路

    文章目录 0.概念 1.理解 2.实现 3.优化 4.引用 0.概念 PID算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正.PID控制,即Proportion ...

  10. 四旋翼无人机飞控系统设计(PID控制算法)

    PID控制算法   PID控制器是一个结构简单并且成熟稳定的控制器,在工业上应用广泛.包括比例(Proportion).积分(Integral).微分(Differential)三个控制元素,三者是对 ...

最新文章

  1. 【原创】cs+html+js+css模式(五):页面调用JS的编写
  2. oracle 删除补全日志组_【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)...
  3. 2017各银行贷款利息表及P2P平台贷款利率比较
  4. live555 源码分析:基础设施
  5. HDU -2546饭卡(01背包+贪心)
  6. centos php fpm 停止_如何关闭php-fpm进程?
  7. 小学四年级计算机教案清华出版,清华版四年级下册信息技术电子备课教案
  8. 【SVM分类】基于布谷鸟算法优化支持向量机SVM实现数据分类附matlab代码
  9. 计算机术语中bug指的是,BUG是什么意思?为什么用bug代指漏洞?
  10. 如何通过域名查询IP地址
  11. 基于JAVA学生成绩管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  12. `英语` 2022/8/4
  13. [HNOI2018]毒瘤
  14. npoi使用Excel模板下载数据
  15. Pip修改阿里云镜像
  16. 显卡服务器已停止响应,显卡驱动停止响应并已成功恢复问题,找到根本原因,彻底解决!...
  17. 【一日一logo_day_24】Phoenix??
  18. 一文读懂 非root用户正确编译安装 protobuf —— 附 CMakeLists.txt 配置
  19. 赋权边覆盖问题——采用禁忌搜索算法的C++实现
  20. centos系统安装教程

热门文章

  1. 计算机类专业毕业设计(课程设计)题目大全
  2. Google搜索从入门到精通V4.0(转)
  3. iOS中使用自定义字体, 动态下载字体
  4. 欧姆龙CP1E PLC
  5. linux入门常用命令
  6. java并发编程实践——王宝令(极客时间)学习笔记
  7. 奥本海姆信号与系统第2版笔记和课后答案
  8. Java语言程序设计 基础篇 编程练习题 12.7
  9. 我的世界seus光影java版下载_我的世界0.17SEUS PE光影材质包(水反高清)下载
  10. 智慧树知到python程序设计基础第三章答案_知到智慧树Python程序设计基础章节答案...