EN和ENO能作为附加参数加以设置。
表示
符号
VOIDCTU(CU,R,PV,Q,CV)
参数描述
参数
数据类型
含义
CU
BOOL
计数开关
R
BOOL
复位
PV
INT
预置数值
Q
BOOL
输出指示
CV
INT
计算值
CTUD模块
简介
该模块(增减计数器)的功能是:
当R=ON时,CV=0,QU=OFF,QD=ON(增计数器清零);
当LD=ON时,CV=PV,QU=ON,QD=OFF(减计数器清零);
如果在R和LD端同时为ON,则R(复位)优先。
当R=LD=OFF时,若CU=ON,CD=OFF,则为增计数器,CV自加1;至CV≥PV时,QU变为ON,CV继续自加至32767。
当R=LD=OFF时,若CU=OFF,CD=ON,则为减计数器,CV自减1;至CV≤0时QD变为ON,CV继续自减到-32767为止。
EN和ENO能作为附加参数加以设置。
表示
符号
VOIDCTUD(CU,CD,R,LD,PV,QU,QD,CV)
参数描述
参数
数据类型
含义
CU
BOOL
增计数触发输入
CD
BOOL
减计数触发输入
R
BOOL
复位
LD
BOOL
数据载入
PV
INT
预置数值
QU
BOOL
增指示开关
QD
BOOL
减指示开关
CV
INT
计算值(真实值)
XOR_BOOL模块
简介
该模块功能是将输入值进行逻辑异或操作,并将结果赋给输出值。
输入值个数不限,拖动该模块会出现多个输入引脚。
EN和ENO能作为附加参数加以设置。
表示
符号
公式
OUT=IN1XORIN2XOR┅XORINn
参数描述
参数
数据类型
含义
IN1
BOOL
第一输入
IN2
BOOL
第二输入
INn
BOOL
第n个输入
OUT
BOOL
输出
ABS_FLOAT模块
简介
该模块的功能是计算输入值的绝对值并将结果赋给输出值。
EN和ENO可作为附加参数加以设置。
表示
符号
公式
OUT=|IN|
参数描述
参数
数据类型
含义
IN
FLOAT
输入值
OUT
FLOAT
输出值
MUL_FLOAT模块
简介
该模块的功能是将输入值相乘,并将结果赋给输出值。
EN和ENO能作为附加参数加以设置。
表示
符号
公式:
OUT=IN1×IN2
参数描述
参数
数据类型
含义
IN1
FLOAT
第一输入
IN2
FLOAT
第二输入
OUT
FLOAT
输出
DIV_FLOAT模块
简介
该模块的功能是将输入值相除,并将结果赋给输出值。
EN和ENO能作为附加参数加以设置。
表示
符号
公式
OUT=IN1/IN2
参数描述
参数
数据类型
含义
IN1
FLOAT
第一输入
IN2
FLOAT
第二输入
OUT
FLOAT
输出值
MOVE_FLOAT模块
简介
该模块的功能是将输入值赋给输出值。
EN和ENO能作为附加参数加以设置。
表示
符号
公式
OUT=IN1
参数描述
参数
数据类型
含义
IN1
FLOAT
第一输入
OUT
FLOAT
输出
ADD_FLOAT模块
简介
该模块的功能是将输入值相加,并将结果赋给输出值。
输入值的个数不限,拖动该模块会出现多个输入引脚。
EN和ENO能作为附加参数加以设置。
表示
符号
公式
OUT=IN1+IN2+INn
参数描述
参数
数据类型
含义
IN1
FLOAT
第一输入
IN2
FLOAT
第二输入
INn
FLOAT
第n输入
OUT
FLOAT
输出
SUB_FLOAT模块
简介
该模块的功能是将输入值相减,并将结果赋给输出值。
EN和ENO能作为附加参数加以设置。
表示
符号
公式
OUT=IN1-IN2
参数描述
参数
数据类型
含义
IN1
FLOAT
第一输入
IN2
FLOAT
第二输入
OUT
FLOAT
输出
AVE_FLOAT模块
简介
该模块的功能是求输入值的平均值,并将结果赋给输出值。
输入值的个数不限,拖动该模块会出现多个输入引脚。
EN和ENO能作为附加参数加以设置。
表示
符号
公式
OUT=(IN1+IN2+┅)/N
参数描述
参数
数据类型
含义
IN1
FLOAT
第一输入
IN2
FLOAT
第二输入
INn
FLOAT
第二n
OUT
FLOAT
输出
单回路模块
简介
该模块是对在自定义回路中声明的单回路进行定义,确定它的输入输出,组成一个控制回路。
通过序号N与自定义回路中的声明相对应,将它在自定义回路中所相应序号所对应的位号组入监控画面中,可在监控画面中对其进行参数设置。
其中BSCX可以有更多的参数让用户来设置。
表示
符号
算法
该模块是PID单回路控制模块,流程图如下所示:
参数描述
参数
数据类型
含义
补充说明
PV
SFLOAT
测量值
N
UINT
BSC序号
范围[0,31]
MV
SFLOAT
输出阀位
g_bsc[N].SwSV
BOOL
内/外给定开关
ON—外给定
g_bsc[N].SwAM
BOOL
手/自动开关
ON—自动
g_bsc[N].SwNeg
BOOL
正/反作用开关
ON—反作用
g_bsc[N].SwTV
BOOL
输出跟踪开关
ON—跟踪
g_bsc[N].SwDT
BOOL
微分方式切换开关
ON=dPV/dtOFF=dErr/dt
g_bsc[N].SV
SFLOAT
内给定值
g_bsc[N].ESV
SFLOAT
外给定值
g_bsc[N].KP
SFLOAT
比例常数
Kp*2=1/P
g_bsc[N].TI
INT
积分时间
单位为0.1秒
g_bsc[N].TD
INT
微分时间
单位为0.1秒
g_bsc[N].TV
SFLOAT
输出跟踪量
g_bsc[N].IA
SFLOAT
输入补偿
g_bsc[N].OA
SFLOAT
输出补偿
g_bsc[N].ER
SFLOAT
偏差报警值
g_bsc[N].ML
SFLOAT
输出限幅下限
g_bsc[N].MH
SFLOAT
输出限幅上限
g_bsc[N].KV
SFLOAT
可变增益
g_bsc[N].RESERVED_6B
BOOL
比例微分先行开关
ON=比例微分先行
注意
对BSCX模块,需要特别注意所设置的参数不能与AdvanTrol等监控画面中的相关参数相冲突,否则将导致AdvanTrol中监控画面中的相关参数设置功能无效!
各项
∙内外给定选择
用户可以通过参数SwSV来选择内给定或外给定。
当SwSV为ON时,设定值等于外给定值ESV;当SwSV为OFF时,设定值等于内给定值SV。
同时为了防止内外给定切换时发生扰动,在外给定时,将外给定值赋给内给定值;在内给定时,将内给定值赋给外给定值(监控画面中所看到的内给定值就等于系统的设定值)。
用户可以通过BSCX模块给内外给定值分别赋数值、变量和位号。
也可以在ST语言中进行这些赋值操作,其操作语句如下:
sfloattt;
intN;
g_bsc[N].ESV=0.5f;
g_bsc[N].ESV=AI02000000PV;
g_bsc[N].ESV=S02_B0000;
g_bsc[N].ESV=tt;
g_bsc[N].SV=0.5;
g_bsc[N].SV=AI02000000.PV;
g_bsc[N].SV=S02_B0000;
g_bsc[N].SV=tt;
其中:
N为BSC序号,S02_B0000为自定义半浮点,AI02000000为AI位号。
内给定和外给定的唯一区别就是,内给定值可以在监控画面上进行设置。
∙报警处理
误差等于设定值减去测量值,同时在BSC中,对误差进行了报警处理。
误差报警值缺省值为100%,用户也可以通过ST语言,对ER进行修改,如下所示:
g_bsc[0].ER=0.01f;
当BSC回路0的误差大于0.01f或小于-0.01f时,就会发出一个偏差报警。
但在手动状态下,不发生任何偏差报警。
∙正反作用处理
正反作用处理是根据正反作用开关,对偏差进行处理,把处理后的值送到PID算法中进行运算。
当SwNeg为ON时,系统处于反作用状态,这个时候PID算法中的输入等于负偏差;当SwNeg为OFF时,系统处于正作用状态,这个时候PID算法的输入等于正偏差。
正反作用可以在调整画面中进行修改,也可以在BSCX模块中进行修改,或在SCX语言中直接对其赋值。
PID计算
单回路控制器PID计算示意图
AutoMV为上一周期的控制输出值减去输出补偿值。
采用增量式的PID算法,最终的控制输出值与上一周期的控制输出值有关,由于使用在输出补偿之前进行累加的方法,如果不减去上一周期的输出补偿值,而直接使用会造成对输出补偿值的累加。
在串级控制回路中的原理亦是如此。
自动值为本周期PID计算后的值,这个变量对用户不可见。
PID算法
∙PID算法框图
上图中-PV为测量值乘以负1。
∙基本算式
所采用的算法为采用增量式算法,其中微分器为不完全微分方法,其表达式如下:
其中P为比例带。
为积分时间(I),为微分时间(D),为微分增益。
∙ 微分先行
当控制系统的给定值发生阶跃变化时,微分动作将导致控制量的大幅度变化,这样不利于生产的稳定操作。
因此,在微分项中不考虑给定值,只对测量值(即被控量)进行微分。
这种方法就是微分先行方法,即
式中:
y(n)为本周期测量值PV,y(n-1)为上一周期PV值,为本周期微分项值,为上一周期微分项值。
对于串级控制的副回路而言,因给定值是主回路提供的,故上述仅对测量值微分的做法并不适用,仍应按原微分项算式对偏差进行微分。
∙参数说明
比例度P(%):
P最小值为P=6.25%,P的最大值为P=204800%。
微分时间常数D(单位秒):
最大为3276.8s,最小值可以为0s。
积分时间常数I(单位分):
其最大值与D一致,3276.8/60=54.61分;而因为I在计算时表现为倒数形式,如果太小会引起计算的溢出,因此将I最低限制为1s,1/60=0.02分。
输出处理
∙单回路控制器输出处理框图
∙手自动处理
手自动处理根据开关量SwAM判断当前回路处于自动或手动状态。
当SwAM为OFF时,回路处于手动状态;当SwAM为ON时,回路处于自动状态,将自动值赋给手动值。
SwAM缺省值为OFF。
∙跟踪处理
当SwTV等于ON时,系统处于跟踪状态。
当回路处于跟踪状态下,系统的手自动状态开关(SwAM)处于手动状态,并将跟踪值赋给手动值。
SwTV缺省值为OFF。
∙量程限幅处理
将经过跟踪处理后的手动值进行量程限幅处理,当其超出量程时发生一个报警。
经过量程限幅后的手动值就是最后要输出的控制输出值(MV)。
闪光模块
简介
该模块用来产生一个脉冲的输出信号,当输入IN1=OFF,则输出为OUT=OFF;
当输入IN1=ON且IN2=OFF,则输出跟踪IN1状态,即OUT=ON;
当输入IN1=IN2=ON时,输出将交替为逻辑0和逻辑1,交替周期为扫描周期。
表示
符号
算法
当IN1=OFF,输出OUT=OFF;
当IN1=ON且IN2=OFF,输出OUT=ON;
当IN1=IN2=ON,输出OUT交替为ON或OFF,交替周期为扫描周期,即当程序第2次运行到该模块,输出就发生跳变。
参数描述
参数
数据类型
含义
IN1
BOOL
报警信号
IN2
BOOL
确认报警信号
OUT
BOOL
输出
LD程序段的结构对应于继电器开关操作的梯级。
在LD编辑器中,窗口背景是逻辑网格。
在它的左边划出所谓的左汇流条。
这个左汇流条对应于梯级的相线(L线路)。
正如在梯级中一样,只有接至电源即接至左汇流条的LD目标(触点、线圈)将在LD编程期间被编辑。
对应于中线的右汇流条不进行显示。
但是,在内部,所有的线圈和基本功能块输出都接在它上面,从而建立起电流通路。
编程语言LD的目标为触点、线圈和功能模块。
这些目标通过实际参数和链路来互连。
1触点
触点是LD元素,它将状态传送至其右侧的水平链路。
这一状态是在其左侧的水平链路中的状态与相关变量/直接地址的状态进行布尔与的结果。
触点不改变相关变量/直接地址的值。
1.1常开触点
在常开触点中,如果相关BOOL变量的状态为ON时,左链路的状态复制至右链路。
否则的话,右链路的状态为OFF。
常开触点对应于两个输入的AND_BOOL功能。
两个并行的常开触点对应于两个通过OR功能连接的AND_BOOL功能。
1.2常闭触点
在常闭触点中,如果相关BOOL变量的状态为OFF时,左链路的状态复制至右链路。
否则的话,右链路的状态为OFF。
常闭触点对应于含两个输入的AND_BOOL功能,其中一个是反相的。
1.3正跳变触点
在正跳变触点中,如果相关BOOL变量的状态从OFF跳变为ON时,同时左链路的状态为ON的话,则右链路在下一个程序周期为ON。