PID怎么应用到实际控制系统

PID怎么应用到实际控制系统,第1张

整个暑假在做一个激光电源的控制程序,核心思想又是PID控制。看来在整个控制领域,PID 的市场可是无处不在啊。关于PID的理论分析这里不在赘述,可以在一般的资料上查到。这里主要讨论利用PID算出的结果如何转化到实际中应用。为了方便分析,这里拿个示例说明。一个温度控制系统,控制方式是开关控制,即在一个周期通过改变导通的占空比来调节输出功率,以此加热水温,调压法也是一种控制方法。根据离散后的PID公式 u(k)=Kpe(k)+Kisum(e(k))+Kd(e(k)-e(k-1)),编写对应的控制程序,这个一般很简单,关键问题就出来了,我们算出来u(k)后,怎么把u(k)变换成输出的占空比。(PID参数的确定一般根据实际调整,初值是根据大概估算得到,不在详细说明)。先来说明下我们计算出的u(k)的意义,他表示了PID控制器的控制力度,数值大,说明此时输出与设定值偏差较大,需要PID产生较大的输出去矫正输出,使其快速趋向设定值,如果值比较小,那么表示此时输出已经接近设定值了,PID调节器产生较小的输出。怎么转换成有用的占空比呢?我们可以这么做,先大概估算下,当你的系统偏差最大时,u(k)是多大,取稍小于最大值为PID的上限(该例程u(k)的最大是50,取其上限值为40),下限根据实际情况确定,这里是0,我们把实际计算出的u(k),如果其值大于上限,取上限,小于下限,取下限,处于中间的值除于上限值得到一个百分数,这个百分数就是我们要的占空比。然后根据这个占空比来计算一个固定周期多长时间导通,多长时间截止。然后拿他控制输出电路,达到控制温度的目的。

介绍西门子PLC实现PID控制的方法。

1 引言

在工业生产中,常需要用闭环控制方式来实现温度、压力、流量等连续变化的模拟量控制。无论使用模拟控制器的模拟控制系统,还是使用计算机(包括PLC)的数字控制系统,PID控制都得到了广泛的应用。

PID控制器是比例-积分-微分控制的简称,具有

(1) 不需要精确的控制系统数学模型;

(2) 有较强的灵活性和适应性;

(3) 结构典型、程序设计简单,工程上易于实现,参数调整方便等优点。积分控制可以消除系统的静差,微分控制可以改善系统的动态相应速度,比例、积分、微分三者有效地结合可以满足不同的控制要求。

2 PLC实现PID的控制方式

21 PID过程控制模块

这种模块的PID控制程序是PLC生产厂家设计的,并存放在模块中,用户使用时序要设置一些参数,使用起来非常方便,一个模块可以控制几路甚至几十路闭环回路

22 PID功能指令

现在很多PLC都有供PID控制用的功能指令,如S7-200的PID指令。它们实际上是用于PID控制的子程序,与模拟量输入/输出模块一起使用,可以得到类似于使用PID过程控制模块的效果。

23 用自编的程序实现PID闭环控制

有的PLC没有PID过程控制模块和PID控制用的功能指令,有时虽然可以使用PID控制指令,但是希望采用某种改进的PID控制算法。在上述情况下都需要用户自己编制PID控制程序。

3 PLC-PID控制器的实现

本文以西门子S7-200PLC为例,说明PID控制的原理及PLC的PID功能指令的使用及控制功能的实现。

31 PID控制器的数字化

PLC的PID控制器的设计是以连续系统的PID控制规律为基础,将其数字化写成离散形式的PID控制方程,再跟据离散方程进行控制程序设计。

在连续系统中,典型的PID闭环控制系统如图1所示。图1中sp(t)是给定值,pv(t)是反馈量,c(t)是系统的输出量,PID控制的输入输出关系式为:

式中:

M(t)—控制器的输出量,M0为输出的初始值;

e(t)=sp(t)-pv(t)-误差信号;

KC比例系数;

TI-积分时间常数;

TD-微分时间常数。

图1 连续闭环控制系统方框图

式(1)的右边前3项分别是比例、积分、微分部分,它们分别与误差,误差的积分和微分成正比。如果取其中的一项或两项,可以组成P、PD或PI控制器。

假设采样周期为TS,系统开始运行的时刻为t=0,用矩形积分来近似精确积分,用差分近似精确微分,将公式1离散化,第n次采样时控制器的输出为: (2)

式中:

en-1-第n-1次采样时的误差值;

KI-积分系数;

KD-微分系数。

基于PLC的闭环控制系统如图2所示。图中的虚线部分在PLC内。其中spn、pvn、en、Mn分别为模拟量在sp(t)、pv(t)、e(t)、M(t)在第n次采样时的数字量。

图2 PLC闭环控制系统方框图

在许多控制系统内,可能只需要P、I、D中的一种或两种控制类型。如可能只要求比例控制或比例与积分控制,通过设置参数可对回路进行控制类型进行选择。

32 输入输出变量的转换

PID控制有两个输入量:给定值(sp)和过程变量(pv)。多数工艺要求给定值是固定的值,如加热炉温度的给定值。过程变量是经A/D转换和计算后得到的被控量的实测值,如加热炉温度的测量值。给定值与过程变量都是与被控对象有关的值,对于不同的系统,它们的大小、范围与工程单位有很大的区别。应用PLC的PID指令对这些量进行运算之前,必须将其转换成标准化的浮点数(实数)。

同样,对于PID指令的输出,在将其送给D/A转化器之前,也需进行转换。

33 回路输入的转换

转换的第一步是将给定值或A/D转换后得到的整数值由16位整数转换成浮点数,可用下面的程序实现这种转换:

XORD AC0, ACO

//清除累加器

MOVW AIWO, AC0

//将待转化的模拟量存入累加器

LDW>= AC0, 0

//如果模拟量数值为正

JMP 0

//直接转换成实数

ORD 16#FFFF0000, ACO

//将AC0内的数值进行符号扩展,扩展为32位负数

LBL 0

DTR AC0, AC0

//将32位整数转换成实数

转换的下一步是将实数进一步转换成00~10之间的标准化实数,可用下面的式(3)对给定值及过程变量进行标准化:

RNorm=(RRaw/Span)+Offset (3)

式中:

RNorm-标准化实数值;

RRaw-标准化前的值;

Offset-偏移量,对单极性变量为00,对双极性变量为05;

Span-取值范围,等于变量的最大值减去最小值,单极性变量的典型值为32000,双极性变量的典型值为64000。

下面的程序将上述转换后得到的AC0中的双极性实数(其Span=64000)转换成00~10之间的实数:

/R 640000, AC0

//累加器中的实数标准化

+R 05, AC0

//加上偏移值,使其在00~10之间

MOVR ACO, VD100

//加标准化后的值存入回路表内

34 回路输出的转换

回路输出即PID控制器输出,它是标准化的00~10之间的实数。将回路输出送给D/A转换器之前,必须转换成16位二进制整数。这一过程是将pv与sp转换成标准化数值的逆过程。用下面的公式将回路输出转换成实数:

RScal=(Mn-Offset)×Span (4)

式中,RScal是回路输出对应的实数值,Mn是回路输出标准化的实数值。

下面的程序用来将回路输出转换为对应的实数:

MOVR VD108, AC0

//将回路输出送入累加器

-R 05, AC0

//仅双极性数才有此语句

R 640000, AC0

//单极性变量乘以320000

用下面的指令将代表回路输出的实数转换成16位整数:

ROUND AC0, AC0

//将实数转换为32位整数

MOVW AC0, AQW0

//将16位整数写入模拟输出(D/A)寄存器

35 PID指令及回路表

S7-200的PID指令如图3所示:

图3 PID指令

指令中TBL是回路表的起始地址,LOOP是回路的编号。编译时如果指令指定的回路表起始地址或回路号超出范围,CPU将生成编译错误(>

以上就是关于PID怎么应用到实际控制系统全部的内容,包括:PID怎么应用到实际控制系统、如何用plc实现闭环pid、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10139485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存