FUNCTION_BLOCK BS_EVC VAR_EXTERNAL END_VAR VAR_INPUT RUN : BOOL ; (* PID鍔熻兘鍧楀惎鐢� *) SET : REAL ; (* 璋冭妭鐩爣鍊� *) FB : REAL ; (* 璋冭妭鐩爣鍊肩殑鍙嶉鍊� *) Dead_Band : REAL :=0.5 ; (* 姝诲尯 *) Delay : TIME :=t#30s;(* 寤舵椂鏃堕棿 *) SW : INT ; (* 瀛h妭妯″紡 0澶忓 1鍐 2杩囨浮 *) END_VAR VAR_OUTPUT EVC : BOOL ; (* 鐢电闃€鎺у埗 *) END_VAR VAR ton1 : TON ; ton2 : TON ; END_VAR (*Automatically declared*) VAR_EXTERNAL END_VAR (** {* **) (** **) (** 时 间:20191003 **) (** 版 本:1.0 **) (** 作 者:姚立 **) (** 名 称:电磁阀/开关阀值控程序 **) (** 说 明:用于电磁阀/开关阀类的开关量阀门的值控程序 **) (** 备 注:适用于温度、湿度等控制 **) (** 依赖块:无 **) (** **) (** 输入变量 **) (** RUN : BOOL ; PID功能块启用 **) (** SET : REAL ; 调节目标值 **) (** FB : REAL ; 调节目标值的反馈值 **) (** Dead_Band : REAL ; 死区,默认0.5 **) (** Delay : TIME ; 延时时间,默认30S **) (** SW : INT ; 季节模式 0夏季 1冬季 **) (** 输出变量 **) (** EVC : BOOL ; 电磁阀/开关阀控制输出 **) (** **) (** *} **) (** **) (** {* **) (** 夏季:FB>SET EVC:=1 **) (** FB-(SET+D)>=0 EVC:=1 **) (** FB-(SET-D)<0 EVC:=0 **) (** 冬季:SET>FB EVC:=1 **) (** (SET-D)-FB>=0 EVC:=1 **) (** (SET+D)-FB<0 EVC:=0 **) (** *} **) (** ton1(pt:=Delay); **) (* call - Stmt *) CAL ton1 ( pt := Delay ) (** ton2(pt:=Delay); **) (* call - Stmt *) CAL ton2 ( pt := Delay ) (** **) (** if RUN =1 then **) (* if - Cond *) LD RUN EQ 1 JMPCN ODK_SKIP_000000000000001_000000000000001 (* then - Stmts *) (** if SW=0 then **) (* if - Cond *) LD SW EQ 0 JMPCN ODK_SKIP_000000000000002_000000000000001 (* then - Stmts *) (** if FB-(SET+Dead_Band)>=0.0 then **) (* if - Cond *) LD FB SUB ( SET ADD Dead_Band ) GE 0.0 JMPCN ODK_SKIP_000000000000003_000000000000001 (* then - Stmts *) (** ton1.in:=1; **) (* assign - Stmt *) LD 1 ST ton1.in JMP ODK_END_IF_000000000000003 (** else **) (* else *) ODK_SKIP_000000000000003_000000000000001: (* else - Stmts *) (** ton1.in:=0; **) (* assign - Stmt *) LD 0 ST ton1.in (** end_if; **) (* if - End *) ODK_END_IF_000000000000003: (** if ton1.q=1 then **) (* if - Cond *) LD ton1.q EQ 1 JMPCN ODK_SKIP_000000000000004_000000000000001 (* then - Stmts *) (** EVC:=1; **) (* assign - Stmt *) LD 1 ST EVC JMP ODK_END_IF_000000000000004 (** end_if; **) (* if - End *) ODK_SKIP_000000000000004_000000000000001: ODK_END_IF_000000000000004: (** if FB-(SET-Dead_Band)<0.0 then **) (* if - Cond *) LD FB SUB ( SET SUB Dead_Band ) LT 0.0 JMPCN ODK_SKIP_000000000000005_000000000000001 (* then - Stmts *) (** ton2.in:=1; **) (* assign - Stmt *) LD 1 ST ton2.in JMP ODK_END_IF_000000000000005 (** else **) (* else *) ODK_SKIP_000000000000005_000000000000001: (* else - Stmts *) (** ton2.in:=0; **) (* assign - Stmt *) LD 0 ST ton2.in (** end_if; **) (* if - End *) ODK_END_IF_000000000000005: (** if ton2.q=1 then **) (* if - Cond *) LD ton2.q EQ 1 JMPCN ODK_SKIP_000000000000006_000000000000001 (* then - Stmts *) (** EVC:=0; **) (* assign - Stmt *) LD 0 ST EVC JMP ODK_END_IF_000000000000006 (** end_if; **) (* if - End *) ODK_SKIP_000000000000006_000000000000001: ODK_END_IF_000000000000006: JMP ODK_END_IF_000000000000002 (** else **) (* else *) ODK_SKIP_000000000000002_000000000000001: (* else - Stmts *) (** if (SET-Dead_Band)-FB>=0.0 then **) (* if - Cond *) LD SET SUB Dead_Band SUB FB GE 0.0 JMPCN ODK_SKIP_000000000000007_000000000000001 (* then - Stmts *) (** ton1.in:=1; **) (* assign - Stmt *) LD 1 ST ton1.in JMP ODK_END_IF_000000000000007 (** else **) (* else *) ODK_SKIP_000000000000007_000000000000001: (* else - Stmts *) (** ton1.in:=0; **) (* assign - Stmt *) LD 0 ST ton1.in (** end_if; **) (* if - End *) ODK_END_IF_000000000000007: (** if ton1.q=1 then **) (* if - Cond *) LD ton1.q EQ 1 JMPCN ODK_SKIP_000000000000008_000000000000001 (* then - Stmts *) (** EVC:=1; **) (* assign - Stmt *) LD 1 ST EVC JMP ODK_END_IF_000000000000008 (** end_if; **) (* if - End *) ODK_SKIP_000000000000008_000000000000001: ODK_END_IF_000000000000008: (** if (SET+Dead_Band)-FB<0.0 then **) (* if - Cond *) LD SET ADD Dead_Band SUB FB LT 0.0 JMPCN ODK_SKIP_000000000000009_000000000000001 (* then - Stmts *) (** ton2.in:=1; **) (* assign - Stmt *) LD 1 ST ton2.in JMP ODK_END_IF_000000000000009 (** else **) (* else *) ODK_SKIP_000000000000009_000000000000001: (* else - Stmts *) (** ton2.in:=0; **) (* assign - Stmt *) LD 0 ST ton2.in (** end_if; **) (* if - End *) ODK_END_IF_000000000000009: (** if ton2.q=1 then **) (* if - Cond *) LD ton2.q EQ 1 JMPCN ODK_SKIP_00000000000000A_000000000000001 (* then - Stmts *) (** EVC:=0; **) (* assign - Stmt *) LD 0 ST EVC JMP ODK_END_IF_00000000000000A (** end_if; **) (* if - End *) ODK_SKIP_00000000000000A_000000000000001: ODK_END_IF_00000000000000A: (** end_if; **) (* if - End *) ODK_END_IF_000000000000002: JMP ODK_END_IF_000000000000001 (** end_if; **) (* if - End *) ODK_SKIP_000000000000001_000000000000001: ODK_END_IF_000000000000001: (** **) (** **) END_FUNCTION_BLOCK