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.
 
 
 
 
 
 

317 lines
6.7 KiB

FUNCTION_BLOCK IJ_EAF
VAR_EXTERNAL
END_VAR
VAR_INPUT
EAF_STRUCT_IN :EAF_IN;
END_VAR
VAR_OUTPUT
EAF_STRUCT_OUT :EAF_OUT;
END_VAR
VAR
EAF_RunTime :BS_Runtime;
EAF_DevC :BS_DevC;
EAF_WVCTEMP :REAL;
RunTon1 :TON;
RunTof1 :TOF;
DevCheck1_time :TIME :=t#15s; (*璁惧�杩愯�鐘舵€佸弽棣�*)
Status0 :INT;
Status1 :INT;
END_VAR
(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {* **)
(** 时 间:20200220 **)
(** 版 本:1.0 **)
(** 作 者: **)
(** 名 称:排风机组程序功能块 **)
(** 说 明: **)
(** 输入变量 **)
(** EAF_STRUCT_IN. **)
(** CM :BOOL; 运行模式 0手动 1联动 **)
(** Run :BOOL; 运行状态 **)
(** Auto :BOOL; 自动状态 **)
(** Fault :BOOL; 故障状态 **)
(** Control :BOOL; 程序控制 **)
(** COSET :REAL; CO设定 **)
(** COES :REAL; 车库CO值 **)
(** ISO1 :BOOL; 运行故障反馈隔离 **)
(** RST :BOOL; 运行时间累计重置 **)
(** RSTV :REAL; 运行时间累计重置值 **)
(** **)
(** EAF_STRUCT_OUT. **)
(** Control :BOOL; 启停控制 **)
(** RH :REAL; 运行小时 **)
(** SN :INT ; 设备状态代码 **)
(** **)
(** 包含以下几点功能 **)
(** 1.运行故障回检,输出故障代码,支持故障报警隔离 **)
(** 2.手动/联动运行模式控制 **)
(** 3.运行时间累计 **)
(** **)
(** 备 注: **)
(** 依赖块: **)
(** BS_Runtime; **)
(** BS_DevC; **)
(** *} **)
(** **)
(** {******************************************************运行故障回检******************************************************} **)
(** RunTon1( IN:=EAF_STRUCT_IN.Control , PT:=DevCheck1_time); **)
(* call - Stmt *)
CAL RunTon1 (
IN := EAF_STRUCT_IN.Control,
PT := DevCheck1_time
)
(** RunTof1( IN:=EAF_STRUCT_IN.Control , PT:=DevCheck1_time); **)
(* call - Stmt *)
CAL RunTof1 (
IN := EAF_STRUCT_IN.Control,
PT := DevCheck1_time
)
(** **)
(** **)
(** {*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等为Status0*}; **)
(** if EAF_STRUCT_IN.ISO1=0 then **)
(* if - Cond *)
LD EAF_STRUCT_IN.ISO1
EQ 0
JMPCN ODK_SKIP_000000000000001_000000000000001
(* then - Stmts *)
(** if RunTon1.q or not RunTof1.q then **)
(* if - Cond *)
LD RunTon1.q
OR ( RunTof1.q
NOT
)
JMPCN ODK_SKIP_000000000000002_000000000000001
(* then - Stmts *)
(** if EAF_STRUCT_OUT.Control<>EAF_STRUCT_IN.Run then **)
(* if - Cond *)
LD EAF_STRUCT_OUT.Control
NE EAF_STRUCT_IN.Run
JMPCN ODK_SKIP_000000000000003_000000000000001
(* then - Stmts *)
(** Status0:=1; **)
(* assign - Stmt *)
LD 1
ST Status0
JMP ODK_END_IF_000000000000003
(** else **)
(* else *)
ODK_SKIP_000000000000003_000000000000001:
(* else - Stmts *)
(** Status0:=0; **)
(* assign - Stmt *)
LD 0
ST Status0
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000003:
(** if EAF_STRUCT_IN.Fault=1 then **)
(* if - Cond *)
LD EAF_STRUCT_IN.Fault
EQ 1
JMPCN ODK_SKIP_000000000000004_000000000000001
(* then - Stmts *)
(** Status1:=1; **)
(* assign - Stmt *)
LD 1
ST Status1
JMP ODK_END_IF_000000000000004
(** else **)
(* else *)
ODK_SKIP_000000000000004_000000000000001:
(* else - Stmts *)
(** Status1:=0; **)
(* assign - Stmt *)
LD 0
ST Status1
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000004:
JMP ODK_END_IF_000000000000002
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000002_000000000000001:
ODK_END_IF_000000000000002:
JMP ODK_END_IF_000000000000001
(** else **)
(* else *)
ODK_SKIP_000000000000001_000000000000001:
(* else - Stmts *)
(** Status0:=0; **)
(* assign - Stmt *)
LD 0
ST Status0
(** Status1:=0; **)
(* assign - Stmt *)
LD 0
ST Status1
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000001:
(** **)
(** {*输出故障代码*} **)
(** if EAF_STRUCT_OUT.Control<>0 then **)
(* if - Cond *)
LD EAF_STRUCT_OUT.Control
NE 0
JMPCN ODK_SKIP_000000000000005_000000000000001
(* then - Stmts *)
(** EAF_STRUCT_OUT.SN := Status0*1 + Status1*4 ; **)
(* assign - Stmt *)
LD Status0
MUL 1
ADD ( Status1
MUL 4
)
ST EAF_STRUCT_OUT.SN
JMP ODK_END_IF_000000000000005
(** else **)
(* else *)
ODK_SKIP_000000000000005_000000000000001:
(* else - Stmts *)
(** EAF_STRUCT_OUT.SN := 0 ; **)
(* assign - Stmt *)
LD 0
ST EAF_STRUCT_OUT.SN
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000005:
(** **)
(** **)
(** {******************************************************手动开关控制******************************************************} **)
(** if EAF_STRUCT_IN.CM=0 then **)
(* if - Cond *)
LD EAF_STRUCT_IN.CM
EQ 0
JMPCN ODK_SKIP_000000000000006_000000000000001
(* then - Stmts *)
(** if EAF_STRUCT_IN.Control=1 then **)
(* if - Cond *)
LD EAF_STRUCT_IN.Control
EQ 1
JMPCN ODK_SKIP_000000000000007_000000000000001
(* then - Stmts *)
(** EAF_STRUCT_OUT.Control:=1; **)
(* assign - Stmt *)
LD 1
ST EAF_STRUCT_OUT.Control
JMP ODK_END_IF_000000000000007
(** else EAF_STRUCT_OUT.Control:=0; **)
(* else *)
ODK_SKIP_000000000000007_000000000000001:
(* else - Stmts *)
(* assign - Stmt *)
LD 0
ST EAF_STRUCT_OUT.Control
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000007:
JMP ODK_END_IF_000000000000006
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000006_000000000000001:
ODK_END_IF_000000000000006:
(** **)
(** {******************************************************联动开关控制******************************************************} **)
(** if EAF_STRUCT_IN.CM=1 then **)
(* if - Cond *)
LD EAF_STRUCT_IN.CM
EQ 1
JMPCN ODK_SKIP_000000000000008_000000000000001
(* then - Stmts *)
(** EAF_DevC(RUN :=EAF_STRUCT_IN.CM , SET :=EAF_STRUCT_IN.COSET , FB :=EAF_STRUCT_IN.COES , DEAD_BAND :=10.0 , DELAY :=t#20s | EAF_STRUCT_OUT.Control:= DevC); **)
(* call - Stmt *)
CAL EAF_DevC (
Run := EAF_STRUCT_IN.CM,
SET := EAF_STRUCT_IN.COSET,
FB := EAF_STRUCT_IN.COES,
DEAD_BAND := 10.0,
DELAY := t#20s
|
EAF_STRUCT_OUT.Control := DevC
)
JMP ODK_END_IF_000000000000008
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000008_000000000000001:
ODK_END_IF_000000000000008:
(** **)
(** **)
(** {******************************************************运行时间累计******************************************************} **)
(** EAF_RunTime(RUN :=EAF_STRUCT_IN.Run , RUNTIMESET :=EAF_STRUCT_IN.RSTV , RUNTIMERST :=EAF_STRUCT_IN.RST | EAF_STRUCT_OUT.RH:= RUNTIME); **)
(* call - Stmt *)
CAL EAF_RunTime (
Run := EAF_STRUCT_IN.Run,
RUNTIMESET := EAF_STRUCT_IN.RSTV,
RUNTIMERST := EAF_STRUCT_IN.RST
|
EAF_STRUCT_OUT.RH := RUNTIME
)
END_FUNCTION_BLOCK