使用控制系统(PID)控制被控对象

PID控制的三要素:控制器,被控对象,反馈器。控制器就是一个数学模型,就PID来说,等同于PID算法。是对反馈量的一个处理与输出。通俗的说就是对于每个被控的量,我的输出量通过什么函数式算出,或者说,我如何描述我的输出量。现在我给定一个描述性的传递函数。从数学角度来看:它的自变量是反馈值,当这个函数的对应关系确定了之后,输出量就是个定值了。我的希望是:这个描述函数是一个透明的空箱——它既能反映系统外部特性,又可以看到其内部结构。
就拿比赛来说:假设我现在要构建这样一个闭环系统,这个系统的反馈调节建立了一个描述函数,最根本的在于:
1 这个系统的动态性从根本上讲取决于哪些因素;2这些因素如何决定系统的性能;
数学模型的描述:1 描述函数->微分方程。描述函数的自变量与因变量满足微分方程。(瞬间变化的关系式)
                              2 将微分方程做一个处理,得出其特征方程,这个特征方程称作描述函数的极点。
ps:下面简述一下极点和零点。对描述函数做拉普拉斯变换,将描述函数变换成一个与它本身相关的函数,并找出其通解和特解,通解是这个函数的开环特征,用来描述输出与输入的关系,零点是调节变量,用于闭环中对系统反馈参数的调节。(对函数做拉普拉斯变换事实上是针对描述大多函数是常微分方程的一种现象)
我们有必要对这个描述函数的解进行研究,尽管在线性控制原理中并不关注并不要求去了解他,但是对于这个常微分方程的极点形式的了解有助于我们认识这个描述函数的物理意义。这是高数的知识,就不再累述。通过求解,可以看到极点其实就是这个经过拉普拉斯变换的描述函数的一次项的系数,零点是反馈量的相关函数的系数。也就是说,极点一旦确定,这个函数也就确定了,对于每一个输入函数,赋予零点变换,再进过极点变换 ,最后生成输出量。
把我们现在得到的结论联系一下:对于一个闭环的系统我们通过对控制器一些参数的理论求解,或者说调试求解,最终改变输出变量,从而使这个系统持续稳定。也就是说,在控制器内,存储了有关于反馈值某种预期的实现方法,这些方法用一些固定的参数来描述,然后输出变量改变系统的状态。我的任务是调试这些具有物理意义的参数。
下面是一个简单的PID程序设计:
double kp,ki,kd;
double resultfunc(void)
{
     double error;
     double diff;
     double lasterror = 0;
     error = target - input;
     sumerror += error;
     diff = error - lasterror;
     lasterror = error;
     output = kp * error + ki * sumerror + kd * diff;
     return output;
}
你会发现其实想象中的PID要比现实中的PID复杂很多,这是理所当然的,因为经过PID数学计算之后,带入的公式只是一个近似量。但是这可不是随便瞎设的一个值,最重要的是,你需要数学计算。
不得不说一下,对于一个完全的门外汉来说,PID是一个十分高神的名词,很多人一上手就接触PID,结果连输出输入的到底是什么都搞不明白,其实不妨接触一下线性控制的理论,这对于你的视野和思路有及其清晰的指导。
 
  • 参数整定寻最佳,从小到大顺序查;
  • 先是比例后积分,最后才把微分加;
  • 曲线振荡很频繁,比例度盘要放大;
  • 曲线漂浮绕大弯,比例度盘往小扳;
  • 曲线偏离回复慢,积分时间往下降;
  • 曲线波动周期长,积分时间再加长;
  • 曲线振荡变很快,先把微分降下来;
  • 动差大来波动慢,微分时间要加长;
  • 联想曲线两个波,前高后低4比1;
  • 一看二调多分析,调节质量不会低。
  • 哈哈哈,小伙伴们有没有感觉自己又回到了哼着童谣的年龄啊!

线性控制原理——PID算法应用的更多相关文章

  1. PID控制原理和算法

    闭环控制是根据控制对象输出反馈来进行校正的控制方式,它是在测量出实际与计划发生偏差时,按定额或标准来进行纠正的.比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上.提到闭环控 ...

  2. 位置式PID与增量式PID算法

    位置式PID与增量式PID算法  PID控制是一个二阶线性控制器     定义:通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.     优点             ...

  3. PID控制算法的C语言实现一 PID算法原理

    本系列是转载............. 全部的程序有一个共同点:就是我没认真去调pid的参数 在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设 ...

  4. 广告成本控制-PID算法

    今天我们来聊聊广告成本控制中常用的PID算法. 0.PID算法简介 首先我们可以看下维基百科中给PID算法的定义:由比例单元(Proportional).积分单元(Integral)和微分单元(Der ...

  5. PID算法学习记录

    最近做项目需要用到PID算法,这个本来是我的专业(控制理论与控制工程),可是我好像是把这个东西全部还给老师了. 没办法,只好抽时间来学习了. 先占个座,后续将持续更新!

  6. 解密随机数生成器(二)——从java源码看线性同余算法

    Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术 ...

  7. PID算法笔记2

    总所周知,PID算法是个很经典的东西.而做自平衡小车,飞行器PID是一个必须翻过的坎.因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂.并举出PID的形象例子来帮助理解PID.一. ...

  8. PID算法

    所谓PID就是比例-积分-微分的英文缩写,但并不是必须同时具备这三种算法,也可以是 PD, PI,甚至只有 P算法控制,下面分别介绍每个参数的含义:首先需要明确一个事实就是,要实现PID算法,必须在硬 ...

  9. PID算法(c 语言)(转)

    PID算法(c 语言)(来自老外) #include <stdio.h> #include<math.h> //定义PID 的结构体 struct _pid { int pv; ...

随机推荐

  1. boldSystemFontOfSize 和 systemFontOfSize 的区别

    使用 UIFont 的下列方法: + systemFontOfSize + boldSystemFontOfSize + italicSystemFontOfSize p.p1 { margin: 0 ...

  2. [OC] 理解Bitcode:一种中间代码

    Tip:参考资料 理解Bitcode:一种中间代码 (内容从该博客摘录的.本随笔摘录些简要内容.) App Distribution Guide – App Thinning (iOS, watchO ...

  3. 微信小程序-发起请求

    wx.request(object) wx.request发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. object参数说明: 示例代码: wx.request({ url: ...

  4. vnc连接kali 2.0 报错:A problem has occurred and the system can't recover.

    kali版本: root@kali:~# uname -a Linux kali -kali1-amd64 # SMP Debian -7kali2 (--) x86_64 GNU/Linux 第一步 ...

  5. UTF-8 ->GBK

    /** * GBK->UTF8 */ //方法一 旧方法 //NSString *encode1 = [@"%E6%88%91" stringByReplacingPerce ...

  6. Jenkins 在windows下的安装与配置

    1. 安装Jenkins war包安装:启动Jenkins命令,打开cmd至Jenkins安装目录下,运行命令 java -jar jenkins.war 如果改变默认端口,则指定端口例如端口号108 ...

  7. Js 常用函数

    1. 算数函数(Math) 1)Js小数取整 常用于:分页算法 js 小数取整的函 .丢弃小数部分,保留整数部分 js:parseInt(/) .向上取整,有小数就整数部分加1 js: Math.ce ...

  8. C语言局部变量和全局变量的区别。——Arvin

    局变量是使用相同的内存块在整个类中存储一个值. 全局变量的存在主要有以下一些原因:  1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨 ...

  9. MVC项目中使用js 设置Checkbox的选中事件

    要实现的效果是,当点击checkbox时,跳转到Action中 CheckBox实例: View界面: @Html.CheckBox("prd.IsChecked", Model. ...

  10. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...