西门子PLCFB41SCL源码文档格式.docx
- 文档编号:14956004
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:8
- 大小:16.54KB
西门子PLCFB41SCL源码文档格式.docx
《西门子PLCFB41SCL源码文档格式.docx》由会员分享,可在线阅读,更多相关《西门子PLCFB41SCL源码文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
'
1.5'
KNOW_HOW_PROTECT
VAR_INPUT
COM_RST:
BOOL:
=FALSE;
//完全重启动
MAN_ON:
=TRUE;
//手动值打开
PVPER_ON:
//外设过程变量打开
P_SEL:
//比例作用打开
I_SEL:
//积分作用打开
INT_HOLD:
//积分作用保持
I_ITL_ON:
//积分作用初始化
D_SEL:
//微分作用打开
CYCLE:
TIME:
=T#1S;
//采样时间
SP_INT:
REAL:
=0.0;
//内部设定值
PV_IN:
//过程变量输入
PV_PER:
WORD:
=W#16#0;
//外设过程变量
MAN:
//手动值
GAIN:
=2.0;
//比例增益
TI:
=T#20S;
//积分复位时间
TD:
=T#10S;
//微分时间
TM_LAG:
=T#2S;
//微分作用时间延时
DEADB_W:
//死区带宽
LMN_HLM:
=100.0;
//积分值上限
LMN_LLM:
//积分值下限
PV_FAC:
=1.0;
//过程变量因子
PV_OFF:
//过程变量偏移量
LMN_FAC:
//调节值因子
LMN_OFF:
//调节值偏移量
I_ITLVAL:
//积分作用的初始化值
DISV:
//干扰变量END_VAR
VAR_OUTPUT
LMN:
//调节值
LMN_PER:
//外设调节值
QLMN_HLM:
//达到调节值上限
QLMN_LLM:
//达到调节值下限
LMN_P:
//比例分量
LMN_I:
//积分分量
LMN_D:
//微分分量
PV:
//
ER:
//误差信号
END_VAR
VAR
sInvAlt:
//上周期比例偏差值
sIanteilAlt:
//上周期积分值
sRestInt:
//上周期积分偏差量(浮点数计算偏差)
sRestDif:
//上周期微分偏差量(浮点数计算偏差)
sRueck:
sLmn:
//上周期调节值
sbArwHLmOn:
//上周期达到调节值上限
sbArwLLmOn:
//上周期达到调节值下限
sbILimOn:
//备用-本程序没有使用该变量END_VAR
VAR_TEMP
rCycle:
REAL;
//采样时间浮点值
Iant:
//积分增量
Diff:
//积分量
Istwert:
//过程变量浮点值
ErKp:
//偏差比例值
rTi:
//积分时间浮点值
rTd:
//微分时间浮点值
rTmLag:
//微分作用时间延时浮点值
Panteil:
//比例值
Ianteil:
//积分值
Danteil:
//微分值
Verstaerk:
RueckDiff:
RueckAlt:
//上周期积分量
dLmn:
//调节量
gf:
//Hilfwert
rVal:
//RealHilfsvariable
IFCOM_RSTTHEN//PID初始化
=I_ITLVAL;
=0.0;
=FALSE;
=W#16#0;
SRestDif:
ELSE
=DINT_TO_REAL(TIME_TO_DINT(CYCLE))/1000.0;
//采样时间转换为浮点数值
=DINT_TO_REAL(INT_TO_DINT(WORD_TO_INT(PV_PER)))*
0.003616898;
=Istwert*PV_FAC+PV_OFF;
//外设输入转换为浮点数值
IFNOTPVPER_ONTHEN//过程变量选择
=PV_IN;
END_IF;
=Istwert;
=SP_INT-PV;
//计算偏差
IFErKp<
-DEADB_WTHEN
=ErKp+DEADB_W;
ELSIFErKp>
DEADB_WTHEN
=ErKp-DEADB_W;
=ER*GAIN;
//偏差比例增益
=DINT_TO_REAL(TIME_TO_DINT(TI))/1000.0;
=DINT_TO_REAL(TIME_TO_DINT(TD))/1000.0;
=DINT_TO_REAL(TIME_TO_DINT(TM_LAG))/1000.0;
IFrTi<
rCycle*0.5THEN//积分时间必须>
=采样时间的0.5倍
=rCycle*0.5;
IFrTd<
rCycleTHEN//微分时间必须>
=采样时间
=rCycle;
IFrTmLag<
rCycle*0.5THEN//微分作用延时时间必须>
IFP_SELTHEN//比例作用投入
=ErKp;
IFI_SELTHEN//积分作用投入
IFI_ITL_ONTHEN//积分初始化
ELSIFMAN_ONTHEN//手动值输入时的积分量计算,用于用于手动切换自动无扰切换
=sLmn-Panteil-DISV;
ELSE//积分计算
=(rCycle/rTi)*(ErKp+sInvAlt)*0.5+sRestInt;
IF((Iant>
0.0ANDsbArwHLmOn)ORINT_HOLD)OR(Iant<
0.0AND
sbArwLLmOn)THEN//抗积分饱和
=sIanteilAlt+Iant;
//当前积分值:
=上时刻积分值+本次积分量
=sIanteilAlt-Ianteil+Iant;
//感觉sRestInt一直等于0.0;
?
不知为何,通过运行发现不为0.0,可能是浮点数计算误差
IFNOTMAN_ONANDD_SELTHEN//微分作用投入
=rTd/(rCycle*0.5+rTmLag);
=(Diff-sRueck)*Verstaerk;
=sRueck;
=rCycle/rTd*Danteil+sRestDif;
=RueckDiff+RueckAlt;
=RueckAlt-sRueck+RueckDiff;
//同积分一样计算微分误差量
ELSE//
=Diff;
=Panteil+Ianteil+Danteil+DISV;
//PID输出
IFMAN_ONTHEN//PID手动之打开
=MAN;
IFNOTI_ITL_ONANDI_SELTHEN//干扰量处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西门子 PLCFB41SCL 源码