1.PID的应用场合
PID调节(P比例,I积分,D微分):常用于需要用温度,液位,压力等闭环控制动作的场所。
常用的PID调节有三种:
A.用温控等仪表进行调节,但是一般常规仪表只有一路PID控制通道,如果要实现多路PID控制,就需要很多仪表,成本过高,且不便于集中处理。
B.用PLC中的FB41/FB58块(模拟量输出控制,FB41/FB58 就相当于我们常规仪表里的控制器,FB58是专用于温度控制的块,但是占CPU资源过大),需要用到的硬件为:
1. PLC:CPU及模拟量输入输出模块;
2. 传感器:接收压力,温度等信号;
3. 变送器:将温度,压力等信号转换成电流或电压信号,依所用的模块可以取舍,例如如果PLC模拟量输入模块带有RTD模块(直接接热电阻信号)的功能,温度变送器可以不用;
4. 功率调节器(调压模块){必备}:
接入模拟量输出模块,用模拟量输出的调节,调节电压大小,进行恒定的输出,控制被执行元件(例如加热器);
5. 加热/加压器:最后的执行元件,接在功率调节器上,用来升/降温度和压力等;
简易结构如下图:
C.对于无法用模拟量控制的硬件,比如冷却风扇的启停等,只能用开关量控制,可以用PID算法(PWM)控制固态继电器(SSR)的通断,实现对温度的控制(FB41联合FB43,或者FB41联合FB59或者FB58联合FB59使用,FB58,FB59是专用于温度调节的块,但是占用CPU资源过大)。
控制原理:
温度传感器检测到传感器的温度信号,经温度变送器将温度值转换成4~20mA的电流信号,送入PLC AI模块。
PLC把这个测量信号经过标度变换与设定值比较得到偏差,经PID运算后,发出PWM控制信号,经PWM来控制固态继电器的通断,来间接调节加热元件等的通断,从而实现温度的连续控制。
需要的元器件:
1. 固态继电器:与方法B相比,是将B中的功率调节器换成了固态继电器;
2. 其他与B类似,如果PLC模拟量输入模块带有RTD模块(直接接热电阻信号)的功能,温度变送器可以不用;
2.下面主要介绍方法B和C的原理和程序编写:
二.1 方法B—用PLC中的FB41块(模拟量输出控制):
PLC需要用到的块为:
OB35,FB41,FC105(若用RTD模块接收温度可不用),FC106。
控制过程为:FB41 相当于一个子程序,它是用来实现PID 运算的,我们只需要每隔一段时间去调用这一“子程序”就可以实现PID 控制。所以我们在中断组织块OB35 里调用FB41 就可以了,调用的频率可以在属性里面设置,但是要注意,OB35里面的程序执行时间必须小于循环中断时间,否则程序没有执行完就开始调用,则会报错。
调用组织块OB35,进行循环中断的采样和控制,在OB35中,用FC105采集到模拟量的反馈值(与FC106使用不分先后),经FB41进行PID连续整定调节,输出一个恒定的值,传递给FC106,再经过FC106进行连续恒定的输出,就能稳定的将控制对象控制在需要的范围或固定值。
FB41的使用:
FB41是西门子PLC中已经创建好的功能块,在进行PID调节时调用,就相当于方法A中的温度控制器。FB41是一个子程序,我们只需要隔一段时间就调用一次即可(周期性调用,所以要用OB35):
FB41中有许多引脚,但是并不是所有的都需要使用{红色为必需使用的,但是不一定要填写,也可以在整定时赋值(赋值给DB地址),再下载进去,要使用的引脚含义如下,引脚填入相应变量,如果不填
变量,则也可以用FB41的背景数据块里的变量:
输入引脚 数据类型 取值范围 默认值 解释
COM_RST BOOL FLSE 重新启动PID,为TURE时,PID执行重启功能,复位PID参数到默认值(用I_ITLVAL的内部值进行初始化),在系统重启时执行一个扫描周期,PID进入饱和状态,需要退出时使用这个位;
MAN_ON BOOL TRUE 为0时自动,由程序计算输出,为1时,中断闭环自动调节功能,启用手动调节功能,可以通过手动给MAN赋值来调节,然后强制直接将MAN的值输出到LMN(不是手动改PID三个参数)
注意:不管是否需要手动调节,该引脚都必须设置一个地址,因为该引脚默认为1(手动启用),那么如果不填地址,自动调节时,LMN引脚就会没有输出值;
PVPER_ON BOOL FALSE 反馈过程变量类型选择,为0时,从PV_IN读取反馈值,是经FC105转化后的实际值,为1时,从PV_PER读取反馈值,此时是PIW直接读取的工程量,不便于观察数值,两者可以配合使用
输入引脚 数据类型 取值范围 默认值 解释
P_SEL BOOL TRUE 为1时,启用比例
作用功能,默认是启用的
I_SEL BOOL TRUE 为1时,启用积分
作用功能,默认是启用的
I_INT_HOLD BOOL FALSE 积分保持(不常用),启用积分作用时该引脚才有意义;为1时,禁用积分作用功能(仅自动模式有效)
D_SEL BOOL FALSE 为1时,启用微分作用功能(简单的PID控制不用,在温度控制中常用),默认不启用,但是建议启用
CYCLE TIME ≥1毫秒 T#1S 采样时间,默认1S,(最好与中断块设置相同时间,这样每中断一次就采样到一次数值,比较准确,一般为200MS),格式就是T#1S
SP_INT REAL ±100/%/物理值1 0.0 需要的设定值(调节的目标值),也可以在上位机HMI中设定或更改,注意是实数
输入引脚 数据类型 取值范围 默认值 解释
PV_IN REAL ±100/%/物理值1 0.0 调节过程中的反馈
值(内部变量,不能直接
填PIW,而是把PIW工程
量用FC105转化后的值,
当引脚PVPER_ON为0时
有效),HMI也适用
PV_PER WORD 反馈值,直接从模拟量模块读取的工程量,外部变量,直接填PIW地址,当引脚PVPER_ON为1时有效(一般不用),用该引脚,可以不再用FC105转化,但因为是工程量,不便于观察数值,可以用一个地址存放该参数,参与其他控制,也可以直接用DB41块中的地址
MAN REAL ±100/%/物理值2 0.0 MAN_ON=1时,该引脚可以强制输出值0—100.0%或-100.0%-100.0%,对应阀的开度,直接将MAN的值输出到LMN,LMN的值受
LMN_HLM,LMN_LLM,输入值自动控制在上下限范围内,若等于上下限,QLMN_HLM或QLMN_LLM=1,可以用来输出报警
输入引脚 数据类型 取值范围 默认值 解释
GAIN REAL 2.0 即P值(增益,比例
常数),(在整定时再赋值),比例系数GAIN越大,比例作用越大,数值变化速度越快,越能快速的接近设定值,但是曲线波动也大,PID输出正/反作用由GAIN参数正负选择:+:正作用:输出增大,偏差减小-:反作用:输出减小,偏差减小用PID调节面板调节稳定后,下载后会自动设置并保存该值
TI TIME ≥CYCLE T#20S 积分时间(在整定时再赋值),作用是减小偏差。TI越大,控制反应越慢,即就算P增大,整个过程还是慢,但是整体偏差会越小,曲线越平滑,用PID调节面板调节稳定后,下载后会自动设置并保存该值
TD TIME ≥CYCLE T#10S 微分时间(在整定时再赋值),TD越大,微分作用越大,曲线越平滑,用PID调节面板调节稳定后,下载后会自动设置并保存该值,简单的PID控制不用,在温度控制中常用
TM_LAG TIME ≥CYCLE/2 T#2S 微分作用的延迟时间,该值越大,微分作用越小(不常用)
输入引脚 数据类型 取值范围 默认值 解释
DEADB_W REAL ≥0.0(%)/物理值1 0.0 死区,SP_INT 设定值的浮动范围,如果LMN输出在平衡点小幅度震荡,可以用死区降低灵敏度,比如设定值为5,但是精确到5很困难,可以设定死区为0.5,那么在4.5-5.5之间,视为已经稳定,将不再继续调节,=0时,关闭死区,一般在调节的最后使用,是百分比,不是物理值;
LMN_HLM REAL LMN_LLM..100.0(%)/物理值2 100.0 调节输出值LMN的最大值,超过这个值,输出仍然等于设定的最大值,且QLMN_HLM置1,可以用来发出报警,例如设定LMN_HLM=50,当LMN≥50,仍然输出50且可以用输出引脚QLMN_HLM触发一个报警
LMN_LLM REAL -100.0..LMN_LLM(%)/物理值2 0.0 调节值输出值LMN
的下限,双极性为-100%,同LMN_HLM
PV_FAC REAL 1.0 过程变量因子
PV_OFF REAL 0.0 过程变量偏移量
LMN_FAC REAL 1.0 调节值因子
输入引脚 数据类型 取值范围 默认值 解释
LMN_OFF REAL 0.0 调节值偏移量,如
果反馈值总是有一个固定的偏差值,可以在这里输入一个相反的值,消除偏差
输入引脚 数据类型 取值范围 默认值 解释
I_ITLVAL REAL -100.0—+100.0(%)/物理 值2) 0.0 积分作用的初始化值,当COM_RST=1时,启动该功能,
DISV REAL -100.0—+100.0 (%)/物理 值2) 0.0 干扰变量
输出引脚 数据类型 取值范围 默认值 解释
LMN REAL 0.0 调节过程中的PID输出值
(实际的物理量,是一个动态
值),内部值,默认输出0-100%,
使用模拟量调节执行器时,需将LMN
用FC106转换为0-278的工程量
输出给执行器;然后控制执行器,与
LMN_PER可以配合使用,便于观
察数据,用MAN手动强制时,与
MAN的数值同步,在过程值远小
于设定值时,LMN会输出最大值
(受LMN_HLM设定的上限值限
制),进行快速调节,此时达到
LMN_HLM的上限,并将QLMN_HLM
置1,反之同理,若联合FB43用
PWM控制,FB43的QPOS_P会置
1,持续接通执行器
LMN_PER WORD 0-278 0.0 调节输出值,输出值是工程量(-16#0-16#6C00),外部值,是直接将PQWxxx连接到LMN_PER管脚控制,再控制执行器,不需要用FC106再次转化:与LMN可以配合使用,便于观察数据
输出引脚 数据类型 取值范围 默认值 解释
QLMN_HLM BOOL FALSE 当LMN的值超过LMN_HLM设定的上限值,QLMN_HLM置1,可以用来发出报警,例如设定LMN_HLM=50,当LMN≥50,仍然输出50且可以用QLMN_HLM触发一个报警
QLMN_LLM BOOL FALSE 调节值LMN超下限
报警,同QLMN_HLM
LMN_P REAL 0.0 比例分量
LMN_I REAL 0.0 积分分量
LMN_D REAL 0.0 微分分量
PV REAL 0.0 当前的实时输出值
与PV_IN显示相同,可以用一个地址存放该参数,参与其他控制,也可以直接用DB41块中的地址
ER REAL 0.0 PID设定值与过程值的偏差
示例:(注意:以下块在OB35里调用)
1. FC105(这里FB1就是FC105,自己编写的块)将采集的电流/电压信号转化为模拟量的整形值,再转化为上下限内的实际值放在MD100中(若用RTD模块接收温度可不用FC105):
2. FB41设置采样周期,在每个周期内接收一次FC105反馈的实际值(MD100),与设定值SP_INT进行比较,进行PID调节,输出一个恒定的整定变量MD30,并保证这个值在LMN_HLM和LMN_LLM(上下限)范围内;
比如FB41设定值为3.2,上限为6,下限位0,那么如果接收到FC105的值不在0-6内,经过计算后,MD30就做相应上升/下降输出,如果在0-6之间,MD30就保持恒定值输出:
3. FC106根据接收的FC41输出的恒定变量值(MD30)的变化,再输出一个恒定/变化的模拟量(PQW),控制功率调节器,再控制执行机构的输出功率:
4. 在PLC软件中进行PID调节:
a.在windows开始图标中,选择“所有程序”,按下面图示,打开PID调节面板:
b.在对应的工程下选择出FB41的背景数据块,选择“在线”,然后点击“确定”:
c.按需要,将相应的参数填入和勾选,保存,然后下载到PLC中,接着打开曲线记录,如下图:
注意:所有的数值输入,以FB41引脚定义优先,如果引脚没有定义,才会从对应的背景DB中读取,该控制面板的数值,就是直接写入背景DB中的;但是面板设置的数值,不会改变引脚的数值;
引脚定义的数值,会反应到面板中,若引脚数值改变,则必须重新启动PID面板,数值才能实时反应出来;
手动操作指在调节过程中,手动输入P/I/D等参数进行调节,自动调节指程序根据调节情况,自动设置这些参数(可能耗费时间比较长);
d.单击设置,按需要定义额定值,实际值曲线的上下限,颜色,采样周期等参数,单击确定,如下图:
e.单击“开始”按钮,开始调节,如下图:
f.查看曲线的状态,手动调节时,可以实时改变相应的P/I/D等参数(每次改变参数,都要执行一次下载)进行调节,调节稳定后,也要将参数都下载进PLC,否则无效:
注意:若输入数值,曲线没有任何变化,或者FB41中的LMN输出总是为0,需要检查如下参数:
MAN_ON参数是否为1;若是为1,则是手动操作,需要置0;
I_SEL参数是否启用,默认是=1启用的,但是有时候=0;
调节方法:
1. 比例放大倍数越大,回路调节速度越快,但是过大,会使系统不稳定,产生震荡,故需要调整到一个合适的数值,不能过大也不能过小;
2. 积分时间越长,积分效果越弱,等于将一个变化量的变化时间延长,所以曲线越平滑;积分时间越短,积分效果越大,曲线月震荡,反比关系;
3. 微分时间越长,微分效果越强,曲线越平滑,正比;
PID参数的设定口诀:
靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P\\I\\D的大小。
PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:
温度T:P=20~60%,T=180~600s,D=3-180s
压力P:P=30~70%,T=24~180s,
液位L:P=20~80%,T=60~300s,
流量L:P=40~100%,T=6~60s。
书上的常用口诀:
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
注:此示例中,FB41中,设定值(SP_INT)即需要的实际目标值,PID输出上/下限(LMN_HLM/LMN_HLM),是手动强制输出MAN(百分数)的上下限,FC105/106中的上/下限是定义量程范围,与FB41无关。
比如用阀门的开/闭控制温度或者流量,FC105与温度/流量变送器设定好匹配的量程上下限,才能采集到温度/流量实际值,再与FB41设定值比较;FC106与阀门执行器设定好匹配的量程上下限,才能控制阀门的开度,而FB41中的上下限是指手动强制输出值的上下限,来控制阀门开度的,与FC105/106是不同的作用;
比例调节:还没有加热到预定温度,就继续增加占空比,误差越大占空比增加的越厉害;
微分调节:当实际温度越来越离目标温度近的时候,微分调节会拉下占空比,避免冲过目标温度;
积分调节:当温度稳定在目标温度之上一小点时,比例调节和微分调节无效,积分误差越来越大,进行积分调节,消除稳态误差。
例二:PID—FB41引脚的使用:
以下为管道压力控制实例说明:
升压时,阀门开度增加;降压时,阀门开度减小。
被控对象:0-100Kpa (压力), 输入信号:4-20mA
设 定 值 :60Kpa
执行元件:0-100% (阀门), 输出信号:4-20mA
FC105“SCALE”量程转换块
当PVPER_ON=0时,PV_IN有效:
当PVPER_ON=1时,PV_PER有效:
直接将过程变量输入到PV_PER管脚,会按照以下公式进行规格化转换。
公式:PV=(PV_PER*100/278)*PV_FAC+PV_OFF
默认转换为0-100(%):
LMN输出,要将LMN引脚的变量(实数),利用量程转换FC106"UNSCALE"将LMN转换为0-278的工程量:
LMN_PER输出,为工程量输出,是直接将PQWxxx连接到LMN_PER管脚控制,控制执行器,不需要用FC106再次转化:
PID参数的设定:是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P\\I\\D的大小。
PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:
温度T:P=20~60%,T=180~600s,D=3-180s
压力P:P=30~70%,T=24~180s,
液位L:P=20~80%,T=60~300s,
流量L:P=40~100%,T=6~60s。
书上的常用口诀:
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
2. 2 方法C(PMW脉冲调节,FB41联合FB43,或者FB58/FB59联合或FB43/FB59联合使用
对于无法用模拟量控制的硬件,比如冷却风扇的启停等,只能用开关量控制,就不能再用FC106输出控制,那么可以用PID算法(PWM,又称占空比/脉宽调制技术)配合固态继电器(SSR)的通断,实现对温度的控制,最后不再使用FC106的模拟输出(FB41联合FB43,或者FB58/FB59联合或FB43/FB59联合使用)。
PWM(又称占空比/脉宽调制技术):
在有些技术资料中,占空比控制也被称为电控脉宽调制技术。它是通过电子控制单元对加在工作执行元件上一定频率的电压信号进行脉冲宽度的调制,即占空比控制,以实现对元件工作状况的精准、连续控制。经典电工理论欧姆定律告诉我们,电压=电流x电阻。电控执行元件多数为带有一定恒定电阻值的线圈或导体,在很多情况下,电源的电动势也是基本恒定不变化的,所以简单的控制线路只能实现接通工作元件电路或切断工作元件线路这两种工况,也就是开或关,无论如何是不能够实现一定范围的从渐开到渐闭的无极线性。
而占空比控制技术却另辟蹊径,通过对以一定频率加在工作元件上的电压信号进行占空比控制,利用控制简单开关电路的接通和关闭的比率大小,实现了对工作元件上的电压信号的电压平均值的控制,从而最终实现了对流经工作元件的电流控制。
控制原理:
温度传感器检测到传感器的温度信号,经温度变送器将温度值转换成4~20mA的电流信号,送入PLC AI模块,用FC105处理后,接入FB41,连续控制器CONT_C(FB41)产生调节值LMN,它被脉冲发生器PULSEGEN转换成脉冲--中断信号QPOS_P或QNEG_P ;再将FB41的输出引脚,连接到FB43的输入引脚;
PLC把这个测量信号经过标度变换与设定值比较得到偏差,经PID运算后,通过调制脉冲宽度,将输入变量“INV”(连接到FB41的LMN)转换为一个恒定周期的脉冲串(该恒定周期相当于输入变量刷新的循环时间,必须在“PER_TM”中赋值),最后发出PWM控制信号,经PWM来控制固态继电器的通断,来间接调节加热元件等的通断,从而实现温度的连续控制;
注意:此时“PER_TM”中的循环时间由
PWM控制由两种方法:
方案1: 先用FB41做PID输出限定在-100—100,再用FB43的3步控制将PID输出转换为加热和冷却两路脉冲信号;
方案2:先用FB58做PID输出限定在-100—100,再用FB43的3步控制将PID输出转换为加热和冷却两路脉冲信号;FB58专用于温度控制,但是占用系统资源很大;
下面我们仅用FB41联合FB43的方法作为示例:
FB43 “PULSEGEN”用于构造一个PID控制器,以生成脉冲输出,用于比例执行器。还可以配置带有脉宽调制的两步或三步PID控制器,通常与FB41一起使用。
FB43 “CONT_S” 程序块及引脚含义:
输入引脚 数据类型 取值范围 默认值 解释
INV REAL -100-100(%) 0.0 模拟量输入
接收由FB41的LMN引
脚输出的数值
PER_TM TIME >=20*CYCLE T#1S 脉冲周期时间,
与FB41脉冲周期(采样时间)相同,这两个周期的比值决定了脉冲调制的精度
P_B_TM TIME T#50ms 最小脉冲开/关时
间,设定合理的时间,防止执行器频繁开关,降低使用寿命
输入引脚 数据类型 取值范围 默认值 解释
RATIOFAC REAL 0.1-10 1.0 比率因子,改变正脉冲和负脉冲宽度之比,对于热处理,这可用于补偿加热和冷却的不同时间常数,例如电加热和水冷过程
STEP3_ON BOOL TRUE (三级调节)三步控制,激活三步控制,在三级调节中,两路脉冲输出都在激活状态,见手册
ST2BI_ON BOOL FALSE 两步控制,双向受控量范围接通,当STEP3_ON=0时,可以选择“双极受控数数值”和“”多级受控数值范围的二级控制值,当STEP3_ON=0,ST2BI_ON=1时,两步控制启动,可以在QPOS_P中接入一个输出点,控制一个设备,例如加热设备,QNEG_P接入一个设备,例如制冷设备,当加热时,QPOS_P=1,QNEG_P=0当超温时,QPOS_P=1=0,QNEG_P=1,,就可以进行双向控制温度,见手册
MAN_ON BOOL FALSE 为0时自动,由程序计算输出,为1时,中断自动调节功能,启用手动调节功能,可以手动强制给QPOS_P,QNEG_P赋值0/1来控制输出
POS_P_ON BOOL FALSE 正向脉冲接通,在三
级控制的手动模式中,
输出信号QPOS_P可以
用该参数进行控制,在
MAN_ON=1时,在二级
控制的手动模式中,
QNEG_P总是设置与
QPOS_P相反,可以用
于强制手动赋值
QPOS_P=0/1,控制输
出,与NEG_P_ON配合
可以实现二级/三级控制
输入引脚 数据类型 取值范围 默认值 解释
NEG_P_ON BOOL FALSE 负向脉冲接通,在
三级控制的手动模式
中,输出信号QPOS_P
可以用该参数进行控
制,在MAN_ON=1时,
在二级控制的手动模
式中,QNEG_P总是设
置与QPOS_P相反,可
以用于强制手动赋值
NEG_P=0/1,控制输出,
与POS_P_ON配合可以
实现二级/三级控制
SYS_ON BOOL TRUE 周期同步,与脉冲输出自动刷新并同步,保证接收的LMN输出尽快的变成脉冲,且根据PER_TM的周期,将输入数值INV转化为相应长度的脉冲信号,=0不同步,= 1同步
COM_RST BOOL FALSE 完全初始化重启动,所有信号都被设置为0
CYCLE TIME T#10ms 采样时间,FB43调用周期(最好与中断块设置相同时间,一般为200MS)
输出引脚 数据类型 取值范围 默认值 解释
QPOS_P BOOL FALSE 正向脉冲输出,在三级调节中总是正向脉冲输出,二级控制时,连接一个I/O执行机构,当STEP3_ON=0,ST2BI_ON=1时,两步控制启动,可以在QPOS_P中接入一个输出点,控制一个设备,例如加热设备,QNEG_P接入一个设备,例如制冷设备,当加热时,QPOS_P=1,QNEG_P=0当超温时,QPOS_P=1=0,QNEG_P=1,,就可以进行双向控制温度,QNEG_P总是设置与QPOS_P相反,当与FB41配合控制调节时,INV接收由FB41的LMN输出的数值,没有达到需要控制的设定值时,该正向脉冲输出置1,达到设定值时,置0
QNEG_P BOOL FALSE 负向脉冲输出,在三级调节中总是负向脉冲输出,在二级控制时,连接一个I/O执行机构,当STEP3_ON=0,ST2BI_ON=1时,两步控制启动,可以在QPOS_P中接入一个输出点,控制一个设备,例如加热设备,QNEG_P接入一个设备,例如制冷设备,当加热时,QPOS_P=1,QNEG_P=0当超温时,QPOS_P=1=0,QNEG_P=1,,就可以进行双向控制温度,QNEG_P总是设置与QPOS_P相反,当NEG_P_ON接通时,该负向脉冲输出
表1.三级控制与两级控制:
表2. FB43 “PULSEGEN" 的输入参数
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 应用 |
INV | IN | REAL | -100~100(%) | 0.0 | 模拟量输入 | 上一级PID (FB41) 输出 |
PER_TM | IN | TIME | T#1s | 脉冲周期 | 上一级PID (FB41) 周期 | |
P_B_TM | IN | TIME | T#50 ms | 最小脉冲开/关时间 | 防止执行器频繁开关 | |
RATIOFAC | IN | REAL | 0.1~10.0 | 1.0 | 比率因子 | 改变正负脉冲宽度之比 |
STEP3_ON | IN | BOOL | TRUE | 三步控制 | 激活三步控制,两个脉冲输出都在激活状态 | |
ST2BI_ON | IN | BOOL | FALSE | 两步控制 | ||
MAN_ON | IN | BOOL | FALSE | 手/自动切换按钮 | MAN_ON: 0:自动 1:手动 | |
POS_P_ON | IN | BOOL | FALSE | QPOS_P手动输出 | ||
NEG_P_ON | IN | BOOL | FALSE | QNEG_P手动输出 | ||
SYS_ON | IN | BOOL | TRUE | 周期同步 | MAN_ON: 0:不同步 1:同步 | |
COM_RST | IN | BOOL | FALSE | 完全重启动 | ||
CYCLE | IN | TIME | T#10ms | 采样时间 | FB43 采样时间与调用组织块相同 |
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 说明 |
QPOS_P | OUT | BOOL | FALSE | 正向脉冲 | ||
QNEG_P | OUT | BOOL | FALSE | 负向脉冲 |
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 说明 |
siZaehlPer | STATS | INT | 0 | 总脉冲数 | 一个脉冲周期内的脉冲个数,倒数计数 | |
siZaehlPTm | STATS | INT | 0 | 实际高电平脉冲数 | 一个脉冲周期内的实际高电平脉冲个数,倒数计数 |
使用注意
1. FB 41 "CONT_C"
为了保证执行频率一致,计算时间准确,块应当在循环中断 OB (例如. OB35)中调用,在其他块中调用也可以但是不准确。
"CYCLE" 参数对应的是扫描时间。必须将程序块调用的间隔时间赋值在这里 ( 例如基于 OB35 的时间 )。
缺省状态下为手动模式 (MAN_ON=true)。自动回路被中断,在MAN参数下输出控制值。
为了确保手自动的无扰切换,在手动模式下至少保证两次块调用的输出时间。
当 CPU 重新启动, 参数 "COM_RST" = true 将引导块的执行。
参数 "COM_RST" 中断PID控制器的执行。
2. FB 42 "CONT_S"
∙为了保证执行频率一致,块应当在循环中断 OB (例如. OB35) 中调用。
∙"CYCLE" 参数对应的是扫描时间。必须将程序块调用的间隔时间赋值在这里 ( 例如基于 OB35 的时间 )。
∙缺省状态下为手动模式 (LMAN_ON=true)。
∙当 CPU 重新启动, 参数 "COM_RST" = true 将引导块的执行。
∙参数 "COM_RST" 中断控制器的执行。
∙参数 "PULSE_TM" 和 "BREAK_TM" 被设置为 "CYCLE" 参数的整数倍。
3. FB 43 "PULSEGEN"
∙为了保证执行频率一致,块应当在循环中断 OB (例如. OB35) 中调用。
∙当 CPU 重新启动, 参数 "COM_RST" = true 将引导块的执行。
∙"CYCLE" 参数对应的是扫描时间。必须将程序块调用的间隔时间赋值在这里 ( 例如基于 OB35 的时间 )。
∙ FB43 可以和 FB41 结合使用, 但是与 FB42 功能不同。
∙参数 "PER_TM" 必须从 PID 控制器 (FB41) 上设置扫描时间。
∙FB41 的调用时间通过时钟分配器完成 (参考 FB43 在线帮助)。
示例:FC105-FB58
首先,对采集进来的温度信号不要进行滤波处理,因为温度这种物理量变化缓慢,惯性很大。进行滤波处理后,反而将导致温度信号采集变化滞后严重;
2。由于温度信号变化缓慢,惯性很大,所以适当增加微分(D)作用(即适当增加微分时间TD,比如:TD<3分钟以下),可改善惯性滞后;但积分(I)作用却一定要弱(即要加大积分时间TI,比如:TI>10分钟以上),以防止因长时间的单向偏差造成积分超调,而使固态继电器长时间的或开或关;因为比例(P)作用并不能消除静差,所以比例(P)作用也不宜过强(例如:比例增益GAIN<=1.0),否则也将产生剧烈振荡。
3。至于脉宽调制周期(Cycle),应尽量设置在:40秒<Cycle<60秒之间,这样即可让固态继电器闭合后有足够的调节作用时间,又不致使固态继电器断开后,间隔触发时间太长。
4。以上只是我自己的经验数据而已。实际调试时,首先要保证控制系统稳定而不致大幅度剧烈振荡为前提的情况下,适当而缓慢的加大比例P、积分I、微分D这三个作用。
FB43 “PULSEGEN" 的工作模式
脉宽调制
在每个周期持续时间内,脉冲的持续时间和输入变量成比例。 通过 PER_TM 分配的周期与 PULSEGEN 指令的处理周期不同。 相反,PER_TM 周期由 PULSEGEN 指令的多个处理周期组成,因此每个 PER_TM 周期中 PULSEGEN 调用的次数决定了脉冲宽度的精度。
图3. FB43 “PULSEGEN" 脉宽调制
调节值的精度
由上图可见:
“采样比率”为 1:10(CONT_C 调用与 PULSEGEN 调用之比)时,此示例中的调节值精度将为 10%,换言之,只能在输出 QPOS_P 以 10% 为步长的脉冲持续时间对设置的输入值 INV 进行模拟。
精度将随每次 CONT_C 调用中 PULSEGEN 调用的次数的增加而提高。
例如,如果调用 PULSEGEN 的频率是调用 CONT_C 频率的 100 倍,则获得的操作值范围的精度为 1%。
自动同步
可以使脉冲输出与更新输入变量 INV 的指令(例如 CONT_C)自动同步。 这样可以确保尽快将输入变量的变化输出为脉冲。
脉冲执行器以对应周期持续时间 PER_TM 的时间间隔评估输入值 INV,并将该值转换成相应长度的脉冲信号。
由于通常以较慢的循环中断等级计算 INV,因此在 INV 更新之后,脉冲执行器应尽快开始将离散值转换为脉冲信号。
为此,块可以使用以下步骤来与周期的起始点同步:
如果 INV 发生变化,且块调用不在周期的第一个或最后两个调用循环中,则执行同步。 脉冲持续时间将重新计算,并在下一个循环与新周期一起输出。
图4. FB43 “PULSEGEN" 自动同步
如果 SYN_ON = FALSE,自动同步将关闭。
设定值为20度,死区如果设为0.1,那么实际控制的的PV值在19.9到20.1范围内!也就是实际值在19.9到20.1的范围内时,PID停止工作(即:保持当前输出,并不是不输出);温度一般都有点滞后,所以设定死区,控制比较稳定,避免PID不停工作!另外,PID块F41的输出范围是是由LMN_HIM和LMN_LIM设定决定的
死区的意思是:设定值和反馈值得偏差值的绝对值,在小于一个规定的限值内时,PID的输出就不再改变。
这个限值就是死区。
设置死区的目的是因为,任何的调节都不可能无限接近设定值,这样PID的输出一直在变动,哪怕是变动很微小。这样的变动会导致执行机构也一直处在调节的状态,一直在动,减少了设备的使用寿命。因此,死区的最主要目的是为了保护设备,同时死区也不能设的太大,否则,控制精度就达不到了。必须在保证控制精度的前提下设置合适的值。
LMN_HLM和LMN_LLM不仅只你手动的设定值,还在自动模式也起作用。当然这两个值改变是会影响MAN的取值范围;当MAN超过LMN_HLM上极限时,MAN的值就等于LMN_HLM,并且信号位QLMN_HLM(输出超出上限)变为1;当MAN小于LMN_LLM下限值时,MAN的值就等于LMN_LLM,并且信号位QLMN_LLM(输出超出下限)变为1。
如果需要反作用,有三种方法:
a、pv和sp颠倒输入
b、p值用负的
c、输出用100减
FB42 “CONT_S” 与 FB59 “TCONT_S”的工作模式
单独调节 :根据设定值与当前值的偏差,按照设定好的比例、积分、微分参数进行控制
串级调节:如下图所示
FB42 “CONT_S” 程序块及引脚含义:
输入引脚 数据类型 取值范围 默认值 解释
COM_RST BOOL FLSE 重新启动PID,为TURE时,PID执行重启功能,复位PID参数到默认值,在系统重启时执行一个扫描周期,PID进入饱和状态,需要退出时使用这个位;
输入引脚 数据类型 取值范围 默认值 解释
LMNR_HS BOOL TRUE 上限位反馈信号,相当于电动调节阀全开信号,触发该信号后PID控制作用暂停
LMNR_LS BOOL TRUE 下限位反馈信号,相当于电动调节阀全关信号,触发该信号后PID控制作用暂停
LMNS_ON BOOL TRUE 激励信号处理在
"启用手动激励信号"输入中切换为手动
LMNUP BOOL FALSE LMNS_ON=1时,在输入"激励信号增加"设置输出信QLMNUP
LMNDN BOOL FALSE LMNS_ON=1时,在输入"激励信号降低"
设置输出信号
PVPER_ON BOOL FALSE 反馈过程变量类型选择,为0时,从PV_IN读取反馈值,为1时,从PV_PER读取反馈值,两者数据类型不一样
CYCLE TIME ≥1毫秒 T#1S 采样时间FB42调用周期(最好与中断块设置相同时间,一般为200MS)
输入引脚 数据类型 取值范围 默认值 解释
SP_INT REAL ±100/%/物理值1 0.0 需要的设定值(调节的目标值),HMI也适用
PV_IN REAL ±100/%/物理值1 0.0 调节过程中的反馈值(不能直接填PIW,而是把PIW工程量转化后的值,当引脚PVPER_ON为0时有效),HMI也适用
PV_PER WORD 从模拟量模块读取的工程量,直接填PIW地址,当引脚PVPER_ON为1时有效(一般不用)
GAIN REAL 2.0 即P值(增益,比例常数),(在整定时再赋值),比例系数GAIN越大,比例作用越大,数值变化速度越快,PID输出正/反作用由GAIN参数正负选择:
+:正作用:输出增大,偏差减小
-:反作用:输出减小,偏差减小
TI TIME ≥CYCLE T#20S 积分时间(在整定时再赋值),作用是减小偏差。TI越大,积分作用越小,则偏差会越小
DEADB_W REAL ≥0.0(%)/物理值1 0.0 死区,上下限值的浮动范围,如果输出在平衡点小幅度震荡,可以用死区降低灵敏度
输入引脚 数据类型 取值范围 默认值 解释
PV_FAC REAL 1.0 过程变量因子
PV_OFF REAL 1.0 过程变量偏移量
PULSE_TM TIME >= CYCLE T#3s 脉冲持续时间
BRAKE_TM TIME >= CYCLE T#3s 脉冲中断时间
MTR_TM TIME >= CYCLET #30s 执行器动作周期,相当于电动调节阀由全关到全开的动作时间(从LMNR_LS运行到LMNR_HS的时间),一般为30S
DISV REAL -100.0—+100.0 (%)/物理 值2) 0.0 干扰变量
输出引脚 数据类型 取值范围 默认值 解释
QLMNUP BOOL FALSE PID控制器脉冲输出,相当于进行开阀动作,为TRUE时动作,为FALSE时,不动作
QLMNDN BOOL FALSE PID控制器脉冲输出,相当于进行关阀动作,为TRUE时动作,为FALSE时,不动作
PV REAL 0.0 当前值输出
ER REAL 0-100 0.0 PID设定值与过程值的偏差
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 应用 |
COM_RST | IN | BOOL | FALSE | 完全重启动 | ||
LMNR_HS | IN | BOOL | FALSE | 上限位 | ||
LMNR_LS | IN | BOOL | FALSE | 下限位 | ||
LMNS_ON | IN | BOOL | TRUE | 手/自动选择 | LMNS_ON: 0:自动 1:手动 | |
LMNUP | IN | BOOL | FALSE | QLMNUP手动输出 | ||
LMNDN | IN | BOOL | FALSE | QLMNDN手动输出 | ||
PVPER_ON | IN | BOOL | FALSE | 当前值选择 | PVPER_ON: 0:PV_IN 有效 1:PVPER 有效 | |
CYCLE | IN | TIME | CYCLE >= 1ms | T#1S | 采样时间 | |
SP_INT | IN | REAL | 0.0 | 设定值 | ||
PV_IN | IN | REAL | 0.0 | 过程变量输入 | ||
PV_PER | IN | WORD | W#16#0000 | 外设过程变量输入 | ||
GAIN | IN | REAL | 2.0 | 比例 | ||
TI | IN | TIME | TI >= CYCLE | T#20s | 积分 | |
DEADB_W | IN | REAL | 死区 | |||
PV_FAC | IN | REAL | 1.0 | 过程变量因子 | ||
PV_OFF | IN | REAL | 0.0 | 过程变量偏移量 | ||
PULSE_TM | IN | TIME | PULSE_TM >= CYCLE | T#3s | 最小脉冲时间 | |
BREAK_TM | IN | TIME | BREAK_TM >= CYCLE | T#3s | 最短中断时间 | |
MTR_TM | IN | TIME | MTR_TM >= CYCLE | T#30s | 周期时间 | 从LMNR_LS运行到LMNR_HS的时间 |
DISV | IN | REAL | 0.0 | 干扰变量 |
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 说明 |
QLMNUP | OUT | BOOL | FALSE | 正向脉冲 | ||
QLMNDN | OUT | BOOL | FALSE | 负向脉冲 | ||
PV | OUT | REAL | 0.0 | 当前值输出 | ||
ER | OUT | REAL | 0.0 | 偏差 |
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 说明 |
LMNRS_ON | STATS | BOOL | FALSE | 虚拟位置反馈输出开关 | 一个脉冲周期内的脉冲个数,倒数计数 | |
LMNRSVAL | STATS | REAL | 0 | 虚拟位置反馈输出量程 | 0~100% | |
LMNR_SIM | STATS | REAL | 0.0 | 虚拟位置反馈输出 | ||
stImpDauer | STATS | TIME | T#0MS | 最小脉冲时间当前值 | ||
stImpDauer | STATS | TIME | T#0MS | 最短中断时间当前值 |