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