图3-43 PID控制的算法框图
1.离散系统PID控制算法
图3-43表示了离散系统PID控制的算法框图。从图知,它的控制值P(n)是I、KEn、D三部分的和。这里未计及偏差为零时的控制值M,但这可通过执行积分运算实现。图中M2为干扰量,R0为设定值,C为实际值,T为采样周期(PID运算间隔时间)。
2.离散系统PID控制梯形图程序
图3-44为与图3-43框图算法对应的一种梯形图。它用的是符号地址,较便于理解。
图上标有18个注解,分别说明如下:
⓪对图3-44b,考虑到模拟量输入格式,把AW8(假设为模拟量输入字)的内容右移3位,并存于“实际值”中。对图3-44c读取模拟量输入值,并存于“实际值”中。
①图3-44a用定时器TIM001、图3-44b用定时器T101、图3-44c用定时器TI、实现每1s(此值可设)执行一次PID运算。这里1s即为采样周期T。
②求设定值与实际值之差。
③对图3-44a,如设定值比实际值小,则先求偏差的绝对值(因借位位也参与运算,故加了1)。然后,用它去减积分值0。
④对图3-44a,如积分值0小于0,则其取值为0(最小值控制)。
⑤对图3-44a,如设定值比实际值大,则把偏差En加积分值0。
⑥对图3-44a,如加后积分值0超过9999,则其取值为9999(最大值控制)。对图3-44b,如加后积分值加后进位(SM1.1 ON),则其取值为32727(最大值控制)。对图3-44c,如加后积分值加后进位(M8022 ON),则其取值为32727(最大值控制)。
⑦积分值0除积分常数。
⑧求偏差的变化,保存原偏差值。
⑨对图3-44a,如偏差为负变化,则求其补码。
⑩偏差的变化乘微分常数。
(11)偏差值En与比例系数K相承,其积存于“KEn”。
(12)分值与“KEn”偏差相加,其和存于“控制值”。而对图3-44a,如设定值比实际值大才做此相加。图3-44a,如加后有进位,即大于9999,则“控制值”取值为9999(最大值控制)。对图3-44b,如加后积分值加后进位(SM1.1 ON),则其取值为32727(最大值控制)。对图3-44c,如加后积分值加后进位(M8022 ON),则其取值为32727(最大值控制)。(www.daowen.com)
图3-44 PID控制梯形图程序
(13)对图3-44a,如设定值比实际值大才作此相减。其后如需要也可作最小值控制。
(14)“微分值”与“控制值”相加,并存于“控制值”。而对图3-44a,如偏差正变化才作此相加。
(15)对图3-44a,如加后有进位,即大于9999,则“控制值”取值为9999(最大值控制)。对图3-44b,如加后积分值加后进位(SM1.1 ON),则其取值为32727(最大值控制)。对图3-44c,如加后积分值加后进位(M8022 ON),则其取值为32727(最大值控制)。
(16)对图3-44a,如偏差为负变化,则“控制值”与“微分值”相减,并存于“控制值”。
(17)如“控制值”小于0,则其取值为0(最小值控制)。
(18)把“控制值”转换为二进制数,并送通道13,即模拟量输出通道。对图3-44b,考虑到模拟量输出格式,把“控制值”又左移3位传QW10,即模拟量输出通道。对图3-44c,把“控制值”传模拟量输出模块的指定通道。到此才产生实际模拟量输出。
提示:用一个字的BCD码表达一个数,其值可从0~9999,无法表达负数。当相减出现负值时,无法处理。为此,要做相应判断,好在欧姆龙PLC提供了用进位位(P-CY)可作判断。但还是相当麻烦。此外,BCD表达的数值范围也小。故最好用双字表达,运算指令也用双字长。特别存储积分结果值的数据格式,尽量用双字长。这样,可提高控制精度,而且也便于PID参数整定。
提示:用一个字带符号位的十六进制表达一个数,其值可从-32768~+32767,正、负数均可表达,也都可处理。图3-38b、c用的是带符号位的十六进制数,所以,程序简单多了。欧姆龙新型或稍高档的PLC也可用此码表达与处理。相反,西门子、三菱PLC则无法用BCD码对数值进行计算,它们用的都只能用十六进制。
提示:为了确保结果正确,应判断计算结果是否越界,并做相应处理。
提示:一般讲,当今PLC多有PID指令,直接使用它即可实现模拟量的PID控制。不必考虑图3-39程序所做的各种计算。用户所要作的工作只是进行有关PID控制参数的设定。有的PLC,这些参数还可通过执行自整定(有的称调谐)命令自动获得,用起来就更方便了。
3.离散系统PID控制ST程序
下面给出和利时LM机PID控制基本离散算法功能块的ST语言功能块程序。此功能块可以同时提供位置式输出和增量式输出。功能块的变量声明如下:
功能块程序代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。