(最新整理)FB41的SCL源码_第1页
(最新整理)FB41的SCL源码_第2页
(最新整理)FB41的SCL源码_第3页
(最新整理)FB41的SCL源码_第4页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(完整)fb41的scl源码(完整)fb41的scl源码 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)fb41的scl源码)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)fb41的scl源码的全部内容。最近在论坛看到好多网友寻找西门子plc fb41的scl源码,现在就将我从网上搜集(因原始出处好像不能

2、访问了,时间久了我也忘记了,)的源码贴出来,此源程序来源于网络,不保证编译后与原版一致,仅供参考。源码我粗略看了一遍,好象是不完全微分pid,但由于使用的是位置式pid,所以里面还做了手自动的无扰动切换,但个人感觉无扰动切换还是增量pid好,无需做任何处理就直接支持。源码可以通过编译,内容如下:function_block ”cont_ctitle =continuous pid controllerauthor : mtfamily : icontname : cont_cversion : 1。5know_how_protectvar_input com_rst : bool := fal

3、se;/完全重启动 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;/微分作用打开 cycle : time := t1s; /采样时间 sp_int : real := 0.0; /内部设定值 pv_in : real

4、 := 0.0; /过程变量输入 pv_per : word := w160; /外设过程变量 man : real := 0。0; /手动值 gain : real := 2.0; /比例增益 ti : time := t#20s;/积分复位时间 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; /过程变量因

5、子 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 := w16#0; /外设调节值 qlmn_hlm : bool := false;/达到调节值上限 qlmn_llm : bool := false;/达到调节值下限 lmn_

6、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; /上周期积分偏差量(浮点数计算偏差) srestdif : real := 0。0; /上周期微分偏差量(浮点数计算偏差) srueck : real :

7、= 0。0; / slmn : real := 0.0; /上周期调节值 sbarwhlmon : bool := false;/上周期达到调节值上限 sbarwllmon : bool := false;/上周期达到调节值下限 sbilimon : bool := true; /备用-本程序没有使用该变量end_varvar_temp rcycle : real ; /采样时间浮点值 iant : real ; /积分增量 diff : real ; /积分量 istwert : real ; /过程变量浮点值 erkp : real ; /偏差比例值 rti : real ; /积分时间浮

8、点值 rtd : real ; /微分时间浮点值 rtmlag : real ; /微分作用时间延时浮点值 panteil : real ; /比例值 ianteil : real ; /积分值 danteil : real ; /微分值 verstaerk : real ; / rueckdiff : real ; / rueckalt : real ; /上周期积分量 dlmn : real ; /调节量 gf : real ; /hilfwert rval : real ; /real hilfsvariableend_var if com_rst then /pid初始化 siante

9、ilalt := 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 := w#16#0 ; pv := 0.0 ; er := 0。0 ; sinvalt := 0。0 ; srestint := 0。0 ; srestdif := 0。0 ; srueck := 0。0 ; slmn := 0.0 ; sbarwhlmon := false ; sbarwllmon := false ; else rcycle

10、 := 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 := pv_in ; end_if; pv := istwert ; erkp := sp_int pv ; /计算偏差 if

11、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 ; rtmlag := dint_to_real( time_to_dint( tm_lag ) ) / 10

12、00.0 ; if rti rcycle * 0.5 then /积分时间必须 = 采样时间的0。5倍 rti := rcycle * 0。5 ; end_if; if rtd rcycle then /微分时间必须 = 采样时间 rtd := rcycle ; end_if; if rtmlag = 采样时间的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 the

13、n /积分初始化 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 disv and d

14、lmn lmn_hlm and dlmn lmn_d lmn_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

15、 := ianteil - rval ; if rval gf then rval := gf ; end_if; ianteil := ianteil rval ; end_if; end_if; end_if; lmn_p := panteil ; lmn_i := ianteil ; lmn_d := danteil ; sinvalt := erkp ; sianteilalt := ianteil ; sbarwhlmon := false ; sbarwllmon := false ; if dlmn = lmn_hlmthen /调节辆限幅(上限) qlmn_hlm := tru

16、e ; qlmn_llm := false ; dlmn := lmn_hlm ; sbarwhlmon := true ; else qlmn_hlm := false ; if dlmn = lmn_llm then/调节辆限幅(下限) qlmn_llm := true ; dlmn := lmn_llm ; sbarwllmon := true ; else qlmn_llm := false ; end_if; end_if; slmn := dlmn ; dlmn := dlmn lmn_fac + lmn_off ; lmn := dlmn ; dlmn := dlmn* 276.

17、48 ; 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_function_blockyanyan pid块 fb41 scl 源代码 查看日志列表 发表于01月26日 15:08 function_block cont_c title =continuous pid controller author : m

18、t 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 : bool := true; /比例作用打开 i_sel : bool := true; /积分作用打开 int_hold : bool := false; /积分作用保持 i_itl_on : bool := false; /积分作用初始化 d

19、_sel : bool := false; /微分作用打开 cycle : time := t#1s; /采样时间 sp_int : real := 0.0; /内部设定值 pv_in : real := 0.0; /过程变量输入 pv_per : word := w16#0; /外设过程变量 man : real := 0。0; /手动值 gain : real := 2。0; /比例增益 ti : time := t20s; /积分复位时间 td : time := t#10s; /微分时间 tm_lag : time := t2s; /微分作用时间延时 deadb_w : real :=

20、 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 := 0.0; /调节值偏移量 i_itlval : real := 0。0; /积分作用的初始化值 disv : real := 0.0; /干扰变量 end_var var_output lmn : real := 0。0; /调节值

21、lmn_per : word := w#16#0; /外设调节值 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;

22、/上周期积分值 srestint : real := 0。0; /上周期积分偏差量(浮点数计算偏差) srestdif : real := 0。0; /上周期微分偏差量(浮点数计算偏差) srueck : real := 0.0; / slmn : real := 0。0; /上周期调节值 sbarwhlmon : bool := false; /上周期达到调节值上限 sbarwllmon : bool := false; /上周期达到调节值下限 sbilimon : bool := true; /备用本程序没有使用该变量 end_var var_temp rcycle : real ; /采

23、样时间浮点值 iant : real ; /积分增量 diff : real ; /积分量 istwert : real ; /过程变量浮点值 erkp : real ; /偏差比例值 rti : real ; /积分时间浮点值 rtd : real ; /微分时间浮点值 rtmlag : real ; /微分作用时间延时浮点值 panteil : real ; /比例值 ianteil : real ; /积分值 danteil : real ; /微分值 verstaerk : real ; / rueckdiff : real ; / rueckalt : real ; /上周期积分量

24、dlmn : real ; /调节量 gf : real ; /hilfwert rval : real ; /real hilfsvariable end_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 := w160 ; pv := 0.0 ; er := 0.0 ; sinvalt := 0。0 ; srestint :

25、= 0。0 ; srestdif := 0.0 ; srueck := 0.0 ; slmn := 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 ; /外设输入转换

26、为浮点数值 if not pvper_on then /过程变量选择 istwert := pv_in ; end_if; pv := istwert ; erkp := sp_int pv ; /计算偏差 if erkp = 采样时间的0.5倍 rti := rcycle 0。5 ; end_if; if rtd = 采样时间 rtd := rcycle ; end_if; if rtmlag 0。0 and sbarwhlmon ) or int_hold ) or ( iant lmn_hlm disv and dlmn lmn_hlm and dlmn - lmn_d lmn_hlm then rval := lmn_hlm - d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论