ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:26.83KB ,
资源ID:26994473      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26994473.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整FB41的SCL源码.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整FB41的SCL源码.docx

1、完整FB41的SCL源码最近在论坛看到好多网友寻找西门子PLC FB41的SCL源码,现在就将我从网上搜集(因原始出处好像不能访问了,时间久了我也忘记了,)的源码贴出来,此源程序来源于网络,不保证编译后与原版一致,仅供参考.源码我粗略看了一遍,好象是不完全微分PID,但由于使用的是位置式PID,所以里面还做了手自动的无扰动切换,但个人感觉无扰动切换还是增量PID好,无需做任何处理就直接支持.源码可以通过编译,内容如下:FUNCTION_BLOCK ”CONT_C”TITLE =continuous PID controllerAUTHOR : MTFAMILY : ICONTNAME : CO

2、NT_CVERSION : 1.5KNOW_HOW_PROTECTVAR_INPUT COM_RST : BOOL := FALSE;/完全重启动 MAN_ON : BOOL := TRUE; /手动值打开 PVPER_ON : BOOL := FALSE;/外设过程变量打开 P_SEL : BOOL := TRUE; /比例作用打开 I_SEL : BOOL := TRUE; /积分作用打开 INT_HOLD : BOOL := FALSE;/积分作用保持 I_ITL_ON : BOOL := FALSE;/积分作用初始化 D_SEL : BOOL := FALSE;/微分作用打开 CYCL

3、E : TIME := T#1S; /采样时间 SP_INT : REAL := 0。0; /内部设定值 PV_IN : REAL := 0.0; /过程变量输入 PV_PER : WORD := W#160; /外设过程变量 MAN : REAL := 0.0; /手动值 GAIN : REAL := 2。0; /比例增益 TI : TIME := T20S;/积分复位时间 TD : TIME := T10S;/微分时间 TM_LAG : TIME := T#2S; /微分作用时间延时 DEADB_W : REAL := 0.0; /死区带宽 LMN_HLM : REAL := 100。0;

4、/积分值上限 LMN_LLM : REAL := 0.0; /积分值下限 PV_FAC : REAL := 1。0; /过程变量因子 PV_OFF : REAL := 0.0; /过程变量偏移量 LMN_FAC : REAL := 1.0; /调节值因子 LMN_OFF : REAL := 0。0; /调节值偏移量 I_ITLVAL : REAL := 0.0; /积分作用的初始化值 DISV : REAL := 0.0; /干扰变量END_VARVAR_OUTPUT LMN : REAL := 0.0; /调节值 LMN_PER : WORD := W#160; /外设调节值 QLMN_HL

5、M : BOOL := FALSE;/达到调节值上限 QLMN_LLM : BOOL := FALSE;/达到调节值下限 LMN_P : REAL := 0.0; /比例分量 LMN_I : REAL := 0。0; /积分分量 LMN_D : REAL := 0。0; /微分分量 PV : REAL := 0。0; / ER : REAL := 0.0; /误差信号END_VARVAR sInvAlt : REAL := 0.0; /上周期比例偏差值 sIanteilAlt : REAL := 0.0; /上周期积分值 sRestInt : REAL := 0。0; /上周期积分偏差量(浮点

6、数计算偏差) sRestDif : REAL := 0.0; /上周期微分偏差量(浮点数计算偏差) sRueck : REAL := 0。0; / sLmn : REAL := 0。0; /上周期调节值 sbArwHLmOn : BOOL := FALSE;/上周期达到调节值上限 sbArwLLmOn : BOOL := FALSE;/上周期达到调节值下限 sbILimOn : BOOL := TRUE; /备用-本程序没有使用该变量END_VARVAR_TEMP rCycle : REAL ; /采样时间浮点值 Iant : REAL ; /积分增量 Diff : REAL ; /积分量 I

7、stwert : REAL ; /过程变量浮点值 ErKp : REAL ; /偏差比例值 rTi : REAL ; /积分时间浮点值 rTd : REAL ; /微分时间浮点值 rTmLag : REAL ; /微分作用时间延时浮点值 Panteil : REAL ; /比例值 Ianteil : REAL ; /积分值 Danteil : REAL ; /微分值 Verstaerk : REAL ; / RueckDiff : REAL ; / RueckAlt : REAL ; /上周期积分量 dLmn : REAL ; /调节量 gf : REAL ; /Hilfwert rVal :

8、 REAL ; /Real HilfsvariableEND_VAR IF COM_RST THEN /PID初始化 sIanteilAlt := I_ITLVAL ; LMN := 0。0 ; QLMN_HLM := FALSE ; QLMN_LLM := FALSE ; LMN_P := 0.0 ; LMN_I := 0.0 ; LMN_D := 0.0 ; LMN_PER := W16#0 ; PV := 0.0 ; ER := 0.0 ; sInvAlt := 0。0 ; sRestInt := 0.0 ; SRestDif := 0。0 ; sRueck := 0.0 ; sLmn

9、:= 0.0 ; sbArwHLmOn := FALSE ; sbArwLLmOn := FALSE ; ELSE rCycle := DINT_TO_REAL( TIME_TO_DINT( CYCLE ) ) / 1000。0 ; /采样时间转换为浮点数值 Istwert := DINT_TO_REAL( INT_TO_DINT( WORD_TO_INT ( PV_PER ) ) ) 0。003616898 ; Istwert := Istwert PV_FAC + PV_OFF ; /外设输入转换为浮点数值 IF NOT PVPER_ON THEN /过程变量选择 Istwert := P

10、V_IN ; END_IF; PV := Istwert ; ErKp := SP_INT PV ; /计算偏差 IF ErKp DEADB_W THEN ER := ErKp + DEADB_W ; ELSIF ErKp DEADB_W THEN ER := ErKp DEADB_W ; ELSE ER := 0.0 ; END_IF; ErKp := ER GAIN ; /偏差比例增益 rTi := DINT_TO_REAL( TIME_TO_DINT( TI ) ) / 1000.0 ; rTd := DINT_TO_REAL( TIME_TO_DINT( TD ) ) / 1000。0

11、 ; rTmLag := DINT_TO_REAL( TIME_TO_DINT( TM_LAG ) ) / 1000.0 ; IF rTi rCycle * 0.5 THEN /积分时间必须 = 采样时间的0。5倍 rTi := rCycle 0.5 ; END_IF; IF rTd = 采样时间的0.5倍 rTmLag := rCycle * 0.5 ; END_IF; IF P_SEL THEN /比例作用投入 Panteil := ErKp ; ELSE Panteil := 0。0 ; END_IF; IF I_SEL THEN /积分作用投入 IF I_ITL_ON THEN /积分

12、初始化 Ianteil := I_ITLVAL ; sRestInt := 0.0 ; ELSIF MAN_ON THEN /手动值输入时的积分量计算,用于用于手动切换自动无扰切换 Ianteil := sLmn Panteil - DISV ; sRestInt := 0.0 ; ELSE /积分计算 Iant := ( rCycle / rTi ) * ( ErKp + sInvAlt ) 0.5 + sRestInt ; IF ( ( Iant 0。0 AND sbArwHLmOn ) OR INT_HOLD ) OR ( Iant LMN_HLM AND dLmn - LMN_D LM

13、N_HLM THEN rVal := LMN_HLM DISV ; gf := dLmn - LMN_HLM ; rVal := Ianteil - rVal ; IF rVal gf THEN rVal := gf ; END_IF; Ianteil := Ianteil rVal ; ELSIF Ianteil LMN_LLM - DISV AND dLmn LMN_LLMAND dLmn - LMN_D LMN_LLMTHEN rVal := LMN_LLM DISV ; gf := dLmn - LMN_LLM ; rVal := Ianteil - rVal ; IF rVal =

14、LMN_HLMTHEN /调节辆限幅(上限) QLMN_HLM := TRUE ; QLMN_LLM := FALSE ; dlmn := LMN_HLM ; sbArwHLmOn := TRUE ; ELSE QLMN_HLM := FALSE ; IF dLmn = 32512.0 THEN dLmn := 32512.0 ; ELSIF dLmn = -32512.0 THEN dLmn := 32512.0 ; END_IF; LMN_PER := INT_TO_WORD( DINT_TO_INT( REAL_TO_DINT( dLmn) ) ) ; END_IF;END_FUNCTI

15、ON_BLOCKyanyan pid块 FB41 SCL 源代码 查看日志列表 发表于01月26日 15:08 FUNCTION_BLOCK CONT_C” TITLE =continuous PID controller AUTHOR : MT FAMILY : ICONT NAME : CONT_C VERSION : 1。5 KNOW_HOW_PROTECT VAR_INPUT COM_RST : BOOL := FALSE; /完全重启动 MAN_ON : BOOL := TRUE; /手动值打开 PVPER_ON : BOOL := FALSE; /外设过程变量打开 P_SEL :

16、BOOL := TRUE; /比例作用打开 I_SEL : BOOL := TRUE; /积分作用打开 INT_HOLD : BOOL := FALSE; /积分作用保持 I_ITL_ON : BOOL := FALSE; /积分作用初始化 D_SEL : BOOL := FALSE; /微分作用打开 CYCLE : TIME := T1S; /采样时间 SP_INT : REAL := 0.0; /内部设定值 PV_IN : REAL := 0.0; /过程变量输入 PV_PER : WORD := W16#0; /外设过程变量 MAN : REAL := 0。0; /手动值 GAIN :

17、REAL := 2。0; /比例增益 TI : TIME := T20S; /积分复位时间 TD : TIME := T10S; /微分时间 TM_LAG : TIME := T#2S; /微分作用时间延时 DEADB_W : REAL := 0。0; /死区带宽 LMN_HLM : REAL := 100.0; /积分值上限 LMN_LLM : REAL := 0。0; /积分值下限 PV_FAC : REAL := 1.0; /过程变量因子 PV_OFF : REAL := 0.0; /过程变量偏移量 LMN_FAC : REAL := 1.0; /调节值因子 LMN_OFF : REAL

18、 := 0.0; /调节值偏移量 I_ITLVAL : REAL := 0.0; /积分作用的初始化值 DISV : REAL := 0.0; /干扰变量 END_VAR VAR_OUTPUT LMN : REAL := 0.0; /调节值 LMN_PER : WORD := W160; /外设调节值 QLMN_HLM : BOOL := FALSE; /达到调节值上限 QLMN_LLM : BOOL := FALSE; /达到调节值下限 LMN_P : REAL := 0.0; /比例分量 LMN_I : REAL := 0.0; /积分分量 LMN_D : REAL := 0.0; /微分分量 PV : REAL := 0.0; / ER : REAL := 0.0; /误差信号 END_VAR VAR sInvAlt : REAL := 0.0; /上周期比例偏差值 sIanteilAlt : REAL := 0。0; /上周期积分值 sRestInt : REAL := 0.0; /上周期积分偏差量(浮点数计算偏差) sRestDif : REAL := 0。0; /上周期微分偏差量(浮点数

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1