PID控制可以嵌套饱和控制律吗?

>> 一个TSM320C2407的PID控制算法 很管用,可以在C中嵌套使用.
一个TSM320C2407的PID控制算法 很管用,可以在C中嵌套使用.
所属分类:
下载地址:
2407PIDalgorithmproj文件大小:16.90 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
一个TSM320C2407的PID控制算法 很管用,可以在C中嵌套使用.-a TSM320C2407 PID control algorithm is very effective, and the C nested.
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
&2407&0.00 B0 0%
2407.cmd2.53 kB10-04-03 17:27
cc_build.log374.00 B18-06-04 15:33
11.51 kB06-11-02 14:44
IIR.out7.09 kB28-05-04 15:30
2.75 kB28-05-04 15:29
PID.mak704.00 B18-06-04 15:33
PID.obj6.55 kB28-05-04 15:29
PID.out7.09 kB18-06-04 15:33
3.36 kB28-05-04 15:12
PIDSYS.obj6.99 kB18-06-04 15:33
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
评价成功,多谢!
下载2407PIDalgorithmproj
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:244.788ms - init:0.2;find:3.1;t:2.0;tags:0.3;related:203.8;comment:0.2; 27.69
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧【simulink进阶必备基础知识】——PID通俗教程_数学建模吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:91,546贴子:
【simulink进阶必备基础知识】——PID通俗教程收藏
美国研究生数学专业专业介绍,美国研究生数学专业专家解析,免费留学评估申请,数万留学申请案例,欢迎亲临查询!美国留学高端品牌优选天道!
最近在学习simulink,学习到有关PID的内容时,看了半天都觉得云里雾中,所以觉得有必要在学习PID的simulink仿真之前好好理解一下PID,至少也要从通俗的角度去了解PID,于是找来了这篇PID基础教程,不管了,病急乱投医,拿来学起就好了
首先帮大家解决一下什么是PID调节,为什么就要这样的疑惑。 PID是比例,积分,微分的英文单词的首字母的简称。
下面举个例子说明一下PID,让大家有个感官的认识。一个人闭眼走路,假设他知道自己离目的地有100米远,那么他就可以以每秒一米一步这样的速度走向目的地,100米刚刚好是100步,这是一个非常理想化的现象。假设他不知道目的地有多远,目的地可能是1000米也有可能是10000米,他用每秒每步3米得速度向前,很不巧的是这个目的地在80米处,他走了26步时刚刚好差2米,走27步有刚刚好又多出1米,这就是所谓的稳态误差,如果这个人知道目的地在大概15米处得地方,开始这个人以每秒一米一步的速度,走完一步然后目测一下离目的地还有多远,结果发现还剩下大概14米,显然一米一步太慢,因此这个人决定每秒大于一米一步走,得出一条式子,y=Kpe(t) 其中y为下一次要每步要走的距离,e(t) 为目测距离,也就是偏差,换句话说就是自己走了的距离跟要走的距离也就是目的地的误差,Kp就是一个常数,假设我们把Kp设置为0.5,
y=KPe(t)可以得出y=7;也就是说那个人下一步要以每秒7米得速度走,重复上述的过程,,7+1共走了8米,然后目测一下距离15米处还有多远,还有7米得误差,所以下一步要走3.5米,然后在重复,发现最后会出现一个稳态的误差,也就是多走一步会超出目的地,少走一步又没到目的地。
当然这个上述的例子情况非常特殊,大家可能觉得最后那些误差可以忽略,但是实际应用中,肯定没有人走路的那么特殊,按照这种线性比例下去最后得到的误差会非常大,所以就引入了一个积分的概念,积分的数学几何定义是在区间[a, b]里连续的非负曲线与直线x=a,x=b围成的图形的面积。从积分的定义可以得到一个函数其中Ti为积分时间,e(t)就是误差了。Y就是输出,它是个不定积分,事实上把它融入到上述人走路的例子它是个定积分,从0 到t时刻的误差的对时间的积分,也就是说误差曲线e(t)与时间轴围成的面积,积分时间Ti是一个常量,可以自己规定大小,很明显,由上式得y为e(t)与t所围成的图形的面积的除以Ti的值,Ti越大y越小,Ti越小y越大,大了系统会动荡,所以要慢慢调节系数。(相当于我们在给电视调台的时候,当你知道一个频段节目比较少的时候,你会快速的调过这个频段(相当于4楼所说的比例控制P),在有电视信号但不太清的时候,你就要进行微调了(相当于这楼所说的积分控制I))(看到这里不太懂对不对,继续往下看,还有小例子)
下面是关于积分跟比例的专业阐述:
比例(P)控制   比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 积分(I)控制   在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 微分调节就是偏差值的变化率。(什么是微分调节?楼下会讲)例如,如果输入偏差值线性变化,则在调节器输出侧叠加一个恒定的调节量。大部分控制系统不需要调节微分时间。因为只有时间滞后的系统才需要附加这个参数。如果画蛇添足加上这个参数反而会使系统的控制受到影响。
举个例子,人去调节窝炉的温度,慢慢调节旋钮,使得温度慢慢变大,要使得温度达到某个固定值,人可以慢慢调节,边看温度边调节,如果开始离这个这目标温度远就快速旋旋钮(比例效果),到最后要使得温度误差小就微调(积分效果),然后实际上温度是有一个惯性在那里,开始你以很快速度调节旋钮的时候温度不会突变,不会一下子就达到稳定值,它慢慢增加到最后,但是不是每个人都是这么有经验,当他看到温度值离目标温度还差这么远,又加快旋转旋钮,最终结果导致实际温度跟目标温度差别非常远,微调也跟本没法调整,最后导致系统的不稳定,但是如果这个人很有经验,他事先知道这个温度是有惯性的,开始它快速旋转旋钮看温度上升率非常高,也就是温度变化非常快,他就放慢旋转速度了,最后结果是准确的把温度调整到最佳(微分效果)。
在楼上那个调节温度的那个例子里,人可以通过观察温度的变化率来指导自己快速调节和微调的时机,但是计算机可不会这样调节,那么就要通过一个PID得到一个输出值来调节了。下面是一段关于微分的专业阐述: 控制器的输出y 与输入误差信号e(t)的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用, 其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入 “比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能 够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在 调节过程中的动态特性。
综上所述得到一个一条公式,这个就是模拟PID
下面是关于应用增量式PID算法。其实PID的算法可以做很深,但没必要,一般入门级的算法已经在很多场合够用了,这里之所以选用增量式PID算法(另外还有位置式PID等等),因为增量式PID算法运算量少,非常适合单片机的应用。 显然要想给单片机运算,就必须是数字量,而上述的PID是模拟PID,我们要将他数字化,离散化。
其中积分在上面说到的,他的几何意义就是求e(t)与时间轴t围成的图形的面积,将这个面积分成T等分
,T=0到T=1跟e(t)围成的面积加上T=1到T=2跟e(t)围成的面积一直累加。。。。。直到T-1到T跟e(t)围成的面积刚好就是整个e(t)与t时间轴围成的面积,刚刚好是e(t)对t的积分,如果T无限大,那么就可以分割成无限个小图形那么这个图形的面积就可以用T[e(1)+e(2)+………+e(T-1)+e(T)]来代替积分效果,而这个T等分就是AD在整个时间轴t中采样的点,显然越快的AD在相同的时间t里面采样的点越多,换句话说就是T更接近无限大。因此积分可以用累和代替。我用大白话来解释一下:其实matlab并不是很懂积分,在我们眼里的积分是一个计算推导的过程,但是matlab眼中的积分实际上是黎曼积分,就是把函数曲线和坐标轴x以及与坐标轴x垂直的两条直线(积分的上下限)围成的面积分割成一个又一个小的长方形,通过累加这些小长方形面积来“估算”总面积,当然,matlab分割的越细,这个面积就越准确,也就是我们所理解的趋向于极限
数学建模,亚马逊网上书城,好书不间断!全场自营图书满59元免运费,自在购书,不用凑单哦!买数学建模,就上Z.CN!正版图书,天天低价特惠,让您挚爱阅读!
下面为积分的专业的解释
微分用差分代替,先说明一下微分的几何意义我们可以想象把上图中的f(x)换成e(t),x轴换成t轴,把△x换成△t,当△t非常小的时候曲线MN等价于直线MN,△y就等于dy,所以可以用Td*[e(t)-e(t-1)]/ △t,同样△t就是采样时间~越小越好。这个我也用大白话来解释一下:实际上,matlab看上去也并非“很懂”微分的样子,在我们眼里,微分实际上就是求导的计算过程:指数函数降幂、自然对数函数取倒数等等,但是matlab貌似很嚣张的样子,只用一种方法求导,就是[y(t)-y(t-1)]/ △t,然后让y(t-1)趋向于y(t),直到求出最后的导数(一阶导数的情况下,就是我们比较直观的切线斜率了),这就是为什么求导用的函数是diff,而差分方程也会用到diff
由楼上的计算思路进行推导,模拟PID离散化得到在k-1时刻的输出因此得到一个增量其中的T为采样时间
如果计算机控制系统采用恒定的采样周期T,一旦确定A、B、C,就可以绘制出PID的控制曲线y(系数的选取是PID的关键这里不做讨论)
增量式PID控制算法与位置式PID算法相比,计算量小得多,因此在实际中得到广泛的应用。 位置式PID控制算法也可以通过增量式控制算法推出递推计算公式:就是目前在计算机控制中广泛应用的数字递推PID控制算法。
下面是用C++实现的PID调节过程(只学过matlab和一点C的楼主表示压力很大,还是杀了我算了,同学们只做了解吧,以后有机会我会用simulink来演示它)typedef struct PID { int SetP //设定目标 Desired Value long SumE //误差累计 double P //比例常数 Proportional Const double I //积分常数 Integral Const double D //微分常数 Derivative Const int LastE //Error[-1] int PrevE //Error[-2] } PID;
static PID sPID; static PID *sptr = &sPID; /*==================================================================================================== Initialize PID Structure
PID参数初始化=====================================================================================================*/ void IncPIDInit(void) { sptr-&SumError = 0; sptr-&LastError = 0; //Error[-1] sptr-&PrevError = 0; //Error[-2] sptr-&Proportion = 0; //比例常数 Proportional Const
sptr-&Integral = 0; //积分常数Integral Const sptr-&Derivative = 0; //微分常数 Derivative Const sptr-&SetPoint = 0; }
/*==================================================================================================== 增量式PID计算部分 =====================================================================================================*/ int IncPIDCalc(int NextPoint) { register int iError, iI //当前误差 iError = sptr-&SetPoint - NextP //增量计算 iIncpid = sptr-&Proportion * iError //E[k]项 - sptr-&Integral * sptr-&LastError //E[k-1]项 + sptr-&Derivative * sptr-&PrevE //E[k-2]项 //存储误差,用于下次计算 sptr-&PrevError = sptr-&LastE sptr-&LastError = iE //返回增量值 return(iIncpid); }
今天的教程就到此结束了,楼主要去睡觉了
好帖,学习中,敢问高人能否指导小弟一下?最近本人正在发愁中啊,好难。
厉害!似乎对pid有些小理解了。
楼主语言表达能力着急啊,非要1秒走一步么,m/s就是个速度单位,又没说这人只能1秒走一步。。。
楼主自动化专业吗
求群主做一个简单的simulink模块图,实在不知道simulink里PID怎么做啊
学习了。感觉很牛……高数没学明白……做工控PID原理搞不懂……特来学习
支持楼主!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或从电伺服的三种控制方式来理解CNC数控系统的三个控制环
CNC控制系统,从本质上讲就是若干个 PID 控制闭环的相互嵌套。
其中有三个控制环是必须的,它们是:位置环、速度环、电流(力矩)环。
为什么要这三个环?这三个环是干什么的?这三个环的不同嵌套组合又意味着什么?
要搞清这些问题,我们先要弄明白基本的电伺服控制,这也是电驱动的基本技能。
一般电伺服都有三种控制方式:速度控制方式,转矩控制方式,位置控制方式 。
一般速度控制和转矩控制都是用模拟量来控制的,而位置控制是通过发脉冲来控制的。
【一般伺服控制方式选择规则】
<font STYLE="font-size: 16" COLOR="#.
转矩模式:对电机速度、位置都没有要求,只要输出一个恒转矩;
<font STYLE="font-size: 16" COLOR="#.
速度模式:对位置和速度有精度要求,对实时转矩基本没要求,且上位机有较好闭环控制功能;
<font STYLE="font-size: 16" COLOR="#.
位置模式:对位置和速度有精度要求,对实时转矩基本没要求,且对上位机没有很高性能要求。
【从上位机控制器的角度看这三种模式】
当运动中的动态性能有比较高的要求时,需要上位机与驱动器实时对电机进行调整。
<font STYLE="font-size: 16" COLOR="#.
转矩模式:运算量最小,驱动器对控制信号响应最快;如果有更好的上位控制器,还可以把速度环也从驱动器上移开,一般只是高端专用控制器才这么干,而且,这时完全不需要使用伺服电机。
<font STYLE="font-size: 16" COLOR="#.
速度模式:运算量中等,要求控制器运算速度比较快;把位置环从驱动器移到控制器上,减少驱动器的工作量,提高效率(比如大部分中高端运动控制器)。
<font STYLE="font-size: 16" COLOR="#.
位置模式:运算量最大,驱动器对控制信号的响应最慢;对上位控制器要求最低,允许控制器本身的运算速度比较慢(比如PLC,或低端运动控制器)。
【从技术应用与工艺的角度看这三种模式】
<font STYLE="font-size: 16" COLOR="#、转矩控制:转矩控制方式是通过外部模拟量的输入或直接的地址的赋值来设定电机轴对外的输出转矩的大小,具体表现为例如10V对应5Nm的话,当外部模拟量设定为5V时电机轴输出为2.5Nm:如果电机轴负载低于2.5Nm时电机正转,外部负载等于2.5Nm时电机不转,大于2.5Nm时电机反转(通常在有重力负载情况下产生)。可以通过即时的改变模拟量的设定来改变设定的力矩大小,也可通过通讯方式改变对应的地址的数值来实现。
#应用主要在对材质的受力有严格要求的缠绕和放卷的装置中,例如饶线装置或拉光纤设备,转矩的设定要根据缠绕的半径的变化随时更改以确保材质的受力不会随着缠绕半径的变化而改变。
<font STYLE="font-size: 16" COLOR="#、速度模式:通过模拟量的输入或脉冲的频率都可以进行转动速度的控制,在有上位控制装置的外环PID控制时速度模式也可以进行定位,但必须把电机的位置信号或直接负载的位置信号给上位反馈以做运算用。而位置模式也支持直接负载外环检测位置信号,此时的电机轴端的编码器只检测电机转速,位置信号就由直接的最终负载端的检测装置来提供了,这样的优点在于可以减少中间传动过程中的误差,增加了整个系统的定位精度。
#应用场合相对于转矩与位置模式来说,是最灵活的。
<font STYLE="font-size: 16" COLOR="#、位置控制:位置控制模式一般是通过外部输入的脉冲的频率来确定转动速度的大小,通过脉冲的个数来确定转动的角度,也有些伺服可以通过通讯方式直接对速度和位移进行赋值。由于位置模式可以对速度和位置都有很严格的控制,所以一般应用于定位装置。
#应用领域如数控机床、印刷机械等等。
【从电伺服的三种控制方式理解CNC的三个控制环】
机加工的过程,需要转矩、速度、位置这三个基本要素,全员并高协调性的参与。
目前国际高端CNC数控系统,有德国的 SIEMENS 840D、日本的 FANUC 31i 等等。
图例1:SIEMENS
840D 位置环、速度环、电流(力矩)环
图例2:FANUC 31i 双重位置环、速度环、电流(力矩)环(未清晰标出,可能含在速度环内)
按照我个人的理解,处于系统中心的环,被控制地最精准。
由此看来,德国CNC以位置控制为中心,日本CNC以速度控制为中心。也就是说,德国人的数控理念对于定位精度与速度控制都非常严谨;而日本人的数控理念更看重速度控制,而为了定位精度就需要加强其位置检测系统的结构设计与性能优化。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 pid控制算法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信