• c语言经典算法大全 > 基于 C 语言的数字 PID 控制算法及实现
  • 基于 C 语言的数字 PID 控制算法及实现

    免费下载 下载该文档 文档格式:PDF   更新时间:2014-08-06   下载次数:0   点击次数:1
    24 科技创新导报 Science and Technology Innovation Herald 2010 NO.30 Science and Technology Innovation Herald I T 技术科技创新导报 PID控制器是工业控制应用中常见的回路核心部件. 一般有两 种,在20世纪80年代,PID控制器主要是模拟PID控制器,通过硬件 (主要是电子元件,包括电阻、 电容、 电感等)来实现其功能,但是存 在器件组成复杂,容易损坏老化,不能灵活搭配等问题. 随着电子 技术的发展,特别是处理器CPU的出现,数字PID控制器得到了飞 速的发展,其与模拟PID控制器相比优点是:具有强的灵活性,可以 根据试验和经验在线调整参数,可以更好的控制性能. 当然数字PID控制器的广泛应用也离不开变送器和执行元件 的发展,数字PID控制器的输入和输出都是以数字来表达的,所以 对变送器和执行元件的信号就必须进行A/D,D/A转换. 在转换过 程中转换的标准是制约数字PID控制器发展的关键,现在,传感器 和执行元件的规格都基本设定为1-5V和4-20mA,这就为数字PID 回路控制器的应用打下了基础. 本文以单回路设计为例,C语言为编程语言,来具体说明数字 PID编程方法. 1 软件设计思想 PID典型的控制算法如下公式所示:其中kp为比例系数; TI 为 积分时间常数; TD 为微分时间常数;e(t)为给定值和测量值两者的 偏差值. u(t)=K p [e(t)+ 1 1 T t t e t d ) ( 0 ∫ +T D dt t de ) ( ] (1) 由于计算机控制是一种采样控制系统,它只能根据采样时刻 的偏差值计算控制量. 因此,式中的积分和微分项不能直接使用, 需要进行离散化处理. 现令T为采样周期,以一系列的采样时刻点 kT 代表连续时间t,以累加求和近似代替积分,以一阶后向差分近 似代替微分,做如下的近似变换: t =kT ( 2) ≈ ∫ dt t e t 0 ) ( T ∑ ∑ = = = i j i j j e T jT e 0 0 ) ( ) ( (3) de(t)/d(t) ≈ {e (kT )-e [(k-l)T ]}/=T T k e k e ) 1 ( ) ( ? ? (4) 其中,T为采样周期,一般为200ms,e(k)为系统第k次采样时刻 的偏差值,e(k-l)为系统第(k-l)次采样时刻的偏差值,i为采样序号,i=0,1,2,…. 将上面的(3)式和(4)式代入(1)式,则可以得到离散 的PID表达式 u(i)=K p {e(i)+ 1 T T ∑ = i j j e 0 ) ( + T TD [e(k)-e(k-1)]} (5) 如果采样周期T足够小(200ms),该算式可以很好的逼近模拟 PID算式,因而使被控过程与连续控制过程十分接近. 通常把(5)式 称为PID的位置式控制算法. 若把(5)式进行转化,则: u(i)=k* ti 2 . 0 ei +k* 2 . 0 td ei +k*(pvx -pv1 ) (6) 式(6)即为数字PID控制算法的编程表达式,pvx 为第(i-1)次测 量值,pv1 为第i次测量值. 其程序流程图如图1所示. 其中给定转换sv1 /25+1是要把设定 值数模转化,比如要求给定液位100CM,则通过转换100/25+1=5, 代表的是最高液位所测量的电压为5V. 而对于数模转化(OP1 +25)/ 6.25是要把输出转化为电流大小,假 如输出OP1 为100%,那么(100+25)/6.25=20,代表输出为最大电流20MA. 对于输入输出量,要注意内部的数模/模数转换关系:经过变 送器输出(1~5v)模拟量,送入A/D模块转化为(0~250)数字量,数 字量要与给定量进行比较,就必须要数模转化,把0~250十进制数 转换为1.00~5.00V,数据处理公式参考下面程序. 反之,同样可把 (4~20mA)进行模数转化,得出0~250十进制数,再经过D/A模块, 把模拟量送给执行元件. (图1) 2 软件设计 下面程序是以C语言为基础,实现数字PID控制算法的核心程 序. 在这段程序中,程序循环时间为200ms,set为启动按钮,ei为第i 次采样时刻的偏差值,sv1 为给定值,pv1 为测量值,OP2 为运算结果输 出. 通过k、 ti 、 td 三相系数的选择,来选择P调节、 PI调节和PID调节 的三种调节模式. if set=1 then if k=0 and ti=0 and td=0 then q0=0 q1=0 q2=0 endif ei=(sv1/250+1)-pv1 if k<>0 and ti<>0 then q0=k*ei mx=k*0.2*ei/ti q2=k*td*(pvx-pv1)/0.2 endif if k=0 then q0=0 cb=1 mx=cb*0.2*ei/ti q2=cb*td*(pvx-pv1)/0.2 endif if ti=0 then q0=K*ei q1=0 基于 C 语言的数字 PID 控制算法及实现 卢亚平(苏州大学应用技术学院 江苏苏州 2 1 5 3 2 5 ) 摘要:目前随着控制理论和电子技术的发展,数字PID控制正逐渐取代模拟PID控制,并逐步成为现代工业控制器的核心. 本文以单回路 控制器为基础,应用C语言编程,来详细说明其编程思路. 关键词:数字PID控制 C语言 单回路 中图分类号: T P1 3 文献标识码: A 文章编号:1674-098X(2010)10(c)-0024-02 图1 数字PID控制算法程序流程图 25 科技创新导报 Science and Technology Innovation Herald I T 技术2010 NO.30 Science and Technology Innovation Herald 科技创新导报 ? ? ? CT ≤ NR C + X ≤ NR t t t on on on (3-1) 上式的意思就是在进行网络设计时,既要保证每周期的激活 状态时间ton内,系统能容纳所产生的所有信元,又要保证在一个 周期(T)内输出链路能传递所有本周期产生的信元. 下面我们给出了悲观情况下信元丢失的稳态概率Pcellloss随业 务源数N变化的关系图,图中是居于如下假设在matlab7.0中绘出 的:假定R=20Mbps,C=1000Mbps,X=500Mbps,ton=toff=1,业务源数N从1到500结束以5为步长的标量. 从图5中可以看出业务源数N小于某一临界值时,理论丢包率 为零,当超过这一临界值时信元丢失的稳态概率Pcellloss随业务源 数N的增加而变大,这就应证了前面所讨论的网络设计时必须考 虑到队列容量X和输出链路容量C满足: ? ? ? CT ≤ NR C + X ≤ NR t t t on on on ( 3- 2) 4 结论及展望 通过本文对ON-OFF模型的分析和探讨,我们给出了该模型下基于ATM网络中的信元丢失率的一种估算方法. 在ON-OFF模 型中,我们对多业务源—单队列模型的悲观和乐观情况下的信元 丢失率都进行了较为详细的推导和描述,给出了进行网络设计时 进行丢包率的评估的一种方法. 实际上,我们从大量的文献中提出的各种新方法比较可知,传 统的基于马尔可夫过程的模型在传统的数据和话音业务网中的结 果比较准确. 而如今真实的高速网络业务具有自相似性(长相关 性),比如第一代 ATM 交换机根据传统的排队模型做出的缓存 大小的预测大大小于实际需要的缓存容量,这样的差别是由于实 际网络业务在多数甚至全部的时间尺度内表现出很大的变化(长 相关性),而泊松或马尔可夫模型是无记忆、 短相关的,只在很短的 时间范围内表现出突发性,所以用泊松或马尔可夫模型分析得到 的结果是过于优化的结果. 参考文献 [1] 曹书生,等.网络业务流模型综述[J].江苏通信技术,2003,(05) [2] 刘建辉,等.基于离散MMDP信源模型的ATM网络排队性能仿 真[J].计算机仿真.[3] 杨敏维.ATM突发模型MMDP的信元丢失率估计[J].湖南大学 学报,1999,(02). [4] 陈文云,等.基于ON/OFF信源模型的信元丢失分析[J].数字通 信,2000,(01). [5] 程伟明.基于ATM网络的多媒体通信[J].现代电信科技,1998, (07). [6] 过莉.ATM网络实时通信系统的响应时间分析[J].电机电器技 术,2003,(06). [7] 张如娟.基于ATM技术的多协议信息传送及应用[J].甘肃科技, 2001,(03). [8] A bdelnaser Adas.Traffic Models in Broadband Networks[J]. IEEE communications Magazine. July 1997. mx=0 q2=k*td*(pvx-pv1)/0.2 endif IF MX>5 THEN MX=5 ENDIF IF MX<-5 THEN M X = - 5 ENDIF if (sv1/250+1)>=pv1 then if op1>=100 then q1=q1 else q1=q1+mx endif else if op1<=0 then q1=q1 else q1=q1+mx endif endif if pv1=0 then pv1=pvx endif pvx=pv1 op1=Q0+Q1+Q2 OP2=(OP1+25)/6.25 IF OP2<4 THEN OP2=4 endif if op2>20 then op2=20 ENDIF 液位pv1 = (pv1-1)*25 if 液位pv1>100 then 液位pv1=100 endif 液位sv1 =sv1 else q0=0 q1=0 q2=0 op2=4 endif else endif 参考文献 [1] 俞金寿,蒋慰孙.过程控制工程[M].北京:电子工业出版社,第 1版 ,2007. [2] 齐卫红,林春丽.过程控制系统[M].北京:电子工业出版社,第 1版 ,2007. [3] 刘金瑶.先进PID控制及其MAI,LAB仿真仁[M].北京:电子工 业出版社,2003. [4] 冯博琴.微型计算机原理与接口技术[M].北京:清华大学出版 社,2006. (上接23页)
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • c语言经典算法100例  c语言经典算法  经典c语言电梯算法  autoc语言经典算法  c语言经典核心算法  c语言算法大全  dsp算法大全c语言版本  c语言算法大全pdf  c语言算法大全下载  dsp算法c语言大全