首页 百科知识 指令及使用

指令及使用

时间:2022-10-16 百科知识 版权反馈
【摘要】:PID回路指令运用回路表中的输入信息和组态信息,进行PID运算,编程极其简便。PID回路指令不可重复使用同个回路号,否则会产生不可预料的结果。使用PID指令的关键是对采集到的数值和计算出来的PID控制结果数据进行转换及标准化。用户可将输出值域用作输入,在从手动控制到PID指令(自动)输出控制的转换过程中指定初始输出值。在执行PID指令之前,用户可修改循环表中的偏差值,以便解决某些应用环境中的偏差值问题。

5.9.2 PID指令及使用

1.PID回路指令

PID回路指令运用回路表中的输入信息和组态信息,进行PID运算,编程极其简便。该指令有两个操作数:TBL和LOOP(如图5-34所示)。

其中TBL是回路表的起始地址,操作数限用VB区域(BYTE型);L00P是回路号,可以是0到7的整数(BYTE型)。进行P1D运算的前提条件是逻辑堆栈栈顶(TOS)值必须为1。在程序中最多可以用8条PID指令。PID回路指令不可重复使用同个回路号(即使这些指令的回路表不同),否则会产生不可预料的结果。

img268

注:表中指令标注“????”为操作数。

图5-34 PID指令

S7-200执行PID指令时为“自动”运行方式。不执行PID指令时为“手动”方式。

PID指令有一个允许输入端(EN)。当该输入端检测到一个正跳变(从0到1)信号,PID回路就从手动方式无扰动地切换到自动方式。无扰动切换时,系统把手动方式的当前输出值填入回路表中的M n栏,用来初始化输出值M n,且进行一系列的操作,对回路表中的值进行设定:

置给定值SP n = 过程变量PV n

置过程变量前值PV n−1 = 过程变量当前值PV n

置积分项前值M X = 输出值M n

梯形图中,若PID指令的允许输入端(EN)直接接至左母线,在启动CPU或CPU从STOP方式转换到RUN方式时,PID使能位的默认值是1,可以执行PID指令,但无正跳变信号,因而不能实现无扰动的切换。

2.PID指令的使用

使用PID指令的关键是对采集到的数值和计算出来的PID控制结果数据进行转换及标准化。下面是数值转换及标准化的步骤。

(1)回路输入量的转换及归一化

给定值和过程变量都是实际的工程量,其幅度、范围和测量单位都会不同,用可编程序控制器控制PID回路时,要把实际测量输入量、设定值和回路表中的其他输入参数进行标准化处理,即用程序把它们转化为PID能够识别和处理的数据,也即把它们转化为无量纲的归一化纯量、浮点数的格式。

第一步,将工程实际值由16位整数转化为实数,程序如下:

img269

img270

第二步,将实数格式的工程实际值转化为[0.0,1.0]之间的无量纲相对值,用下式来完成这一过程:

img271

式中:R N为工程实际值的归一化值;R R为工程实际值的实数形式值,未归一化处理。标准化实数又分为双极性(围绕0.5上下变化)和单极性(以0.为起点在0.和1.0之间的范围内变化)两种。对于双极性,OFF set为0.5;对于单极性,OFF set为0。S P表示值域的大小,通常单极性时取32000,双极性时取64000。

以下程序段用于将AC0中的双极性模拟量进行归一化处理(可紧接上面的程序):

img272

img273

(2)回路控制输出转换为按工程量标定的整数值

程序执行时把各个标推化实数量用离散化PID算式进行处理,产生一个标准化实数运算结果,这一结果同样也要用程序将其转化为相应的16位整数,然后周期性地将其传送到指定的AQW输出,用以驱动模拟量的负载,实现模拟量的控制。这一转换实际上是归一化过程的逆过程。

第一步,用下式将回路输出转换为按工程量标定的实数格式:

img274

式中:RS为已按工程量标定的实数格式的回路输出;Mn为归一化实数格式的回路输出。程序如下:

img275

img276

第二步,将已标定的实数格式的回路输出转化为16位的整数格式,并输出。

img277

img278

3.选择PID回路类型

在大部分模拟量的控制中,使用的回路控制类型并不是比例、积分和微分三者俱全。例如,有的只需要比例回路或只需要比例积分回路。通过对常量参数的设置,可以关闭不需要的控制类型。

关闭积分回路:把积分时间T I设置为无穷大,此时虽然由于有初值M x使积分项不为零,但积分作用可以忽略。

关闭微分回路:把微分时间T d设置为0,微分作用即可关闭。

关闭比例回路:把比例增益K c设置为0,则只保留积分和微分项。但是积分项和微分项与K c有关系,因此约定,此时用于积分项和微分项的增益为1。

在实际工作中,使用最多的是PI调节器。

4.PID变量与范围

过程变量和定点是PID计算的输入值,因此PID指令读取但不改变这些变量的循环表域。

输出值由PID计算生成,因此每次PID计算完成后更新循环表中的输出值域。输出值被固定在0.0至1.0之间。用户可将输出值域用作输入,在从手动控制到PID指令(自动)输出控制的转换过程中指定初始输出值。

如果使用积分控制,则PID计算更新偏差值,而且更新后的数值被用作下一次PID计算的输入。当计算输出值超出范围(输出小于0.0或大于1.0)时,则根据下列公式调整偏差:

M X=1.0−(MP n+MD n

当计算输出M n > 1.0时;

M X= −(MP n+MD n

当计算输出Mn< 0.0时。

其中:

MX —— 调节偏差数值

MPn —— 采样时间n的循环输出比例项数值

MDn —— 采样时间n的循环输出微分项数值

Mn —— 采样时间n的循环输出数值

通过按照上述方式调节偏差,一旦计算输出返回适当范围即可实现系统应答能力的改善。计算偏差也被固定在0.0~1.0之间,在每次完成PID计算时被写入循环表的偏差域。循环表中存储的数值用于下一次PID计算。

在执行PID指令之前,用户可修改循环表中的偏差值,以便解决某些应用环境中的偏差值问题。以手动方式调节偏差值时,必须格外小心,写入循环表的任何偏差值必须是0.0至1.0之间的实数。

在循环表中保存进程变量比较,用于PID计算的求导计算部分不应当修改该数值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈