1.图形图程序
图4-42为与图4-41框图算法对应的一种梯形图。它用的是符号地址,较便于理解。
图上标有18个注解,分别说明如下:
①用定时器TIM001实现每一秒(此值可设)执行一次PID运算。这里一秒即为采样周期T。
②求设定值与实际值之差。
③如“设定值”比“实际值”小,则先求偏差的绝对值(因借位位也参与运算,故加了1)。然后,用它去减“积分值0”。
④如“积分值”0小于0,则其取值为0(最小值控制)。
⑤如“设定值”比“实际值”大,则把偏差“En”加“积分值0”。
⑥如加后“积分值0”超过9999,则其取值为9999。
⑦“积分值0”除积分常数,其商存于“积分值”。
⑧求偏差的变化保存原偏差值。
⑨如偏差为负变化,则求其补码。
⑩偏差的变化乘微分常数。
(11)11偏差值“En”与比例系数“K”相乘,其积存于“KEn”。
(12)21如“设定值”比“实际值”大,则“积分值”与“KEn”偏差相加,其和存于“控制值”。
(13)13如加后有进位,即大于9999,则“控制值”取值为9999。
如“设定值”比“实际值”小,相减。其后如需要也可作最小值控制。
(14)41如偏差为正变化“微分值”与“控制值”相加,并存于“控制值”
(15)15如加后有进位,即大于9999,则“控制值”取值为9999。
(16)16如偏差为负变化,则“控制值”与“微分值”相减,并存于“控制值”。
(17)17如“控制值”小于0,则其取值为0。
(18)18把“控制值”转换为二进制数,并送通道13,即模拟量输出通道。
(www.xing528.com)
图4-42 PID控制梯形图程序
提示:如果这里的数据格式为单字长BCD码,最好用双字长,运算指令也用双字长。特别存储积分结果值的数据格式,尽量用双字长。这样,可提高控制精度,而且也便于PID参数整定。
2.ST语言程序
PID控制使用的数学运算较多。所以,使用ST语言编程更简便些。以下为它的ST语言程序。
(1)变量声明
1)输入变量。有:sdZI(设定值),INT;sjZI(实际值),INT;jfCS(积分常数),REAL;wfCS(微分常数),REAL;blCS(比例系数),REAL;jfZI(上次积分值入),RE- AL;sjZI0(上次实际值入),REAL。
2)内部变量。有:pCZN,REAL;wfZN,REAL;sdZN,REAL;sjZN,REAL;jfZN,REAL;kzZN,REAL。
3)输出变量。有:kzO(控制输出),INT;sjZO(本次实际值保留),REAL;jfZO(本上次积分值出),REAL。后两个变量应作为既是输出,又是输入处理。新版本的ST语言可定义为输入输送出变量。那样,这里的jfZO与jfZI就是一个变量,sjIO与sjZO就是一个变量。
(2)ST语言语句。含义见注解。显然,这里的程序比梯形图程序要简明得多!
sdZN:=INT_TO_REAL(sdZI);(∗设定值转换为实数∗)
sjZN:=INT_TO_REAL(sjZI);(∗实际值转换为实数∗)
pCZN:=sdZN-sjZN;(∗计算偏差∗)
jfZN:=jfZN+jfCS∗pCZN;(∗计算积分分量∗)
wfZN:=wfCS∗(sjZN-sjZIO);(∗计算微分分量∗)
kzZN:=blCS∗pCZN+jfZN+wfZN;(∗计算控制输出∗)
kzO:=REAL_TO_INT(kzZN);(∗控制输出转换为整型数∗)
sjZO:=sjZN;(∗保留实际现值,为微分计算作准备∗)
(3)功能块调用。ST编写的功能块,使其工作还得有调用主程序。图4-43即为它的调用程序。只是这里模拟量输入、输出没有表示。
这里定时器TIM0001设定的时间为PID运算的时间间隔。D0~D16为输入。D0存储的为设定值,D4存储的为实际值,D8存储的为积分常数,D12存储的为微分常数,D16存储的为比例系数。D20存储的为积分值,D24存储的为实际值。而D28为控制输出。D20、D24为既是输入,又是输出。用以存储运算的中间结果。
图4-43 功能块调用程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。