You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

318 lines
5.6 KiB

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