FUNCTION_BLOCK IJ_FCU
VAR_EXTERNAL

END_VAR

VAR_INPUT
FCU_STRUCT_IN  :FCU_IN;
END_VAR

VAR_OUTPUT
FCU_STRUCT_OUT :FCU_OUT;
END_VAR

VAR

FCU_RunTime		     :BS_Runtime;
RunTon1         	 :TON;
RunTof1         	 :TOF;
DevCheck1_time  	 :TIME :=t#15s;  (*璁惧杩愯鐘舵€佸弽棣�*)
DevCheck2_time  	 :TIME :=t#15s;  (*璁惧杩愯鐘舵€佸弽棣�*)
Status0				 :INT;
Status1				 :INT;
Status2				 :INT;
Status3				 :INT;
FCU_EVC				 :BS_EVC;	
END_VAR

(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {*  **)
(**  **)
(** 时  间:20191003 **)
(** 版  本:1.0 **)
(** 作  者:姚立 **)
(** 名  称:吾悦定制风机盘管程序功能块 **)
(** 说  明: **)
(**  **)
(** 	输入变量 **)
(** 	FCU_IN:STRUCT **)
(** 		SM              :INT ; 季节模式 0夏季 1冬季 2过渡  **)
(** 		Run             :BOOL; 运行状态 **)
(** 		Auto            :BOOL; 自动状态 **)
(** 		Control         :BOOL; 程序控制 **)
(** 		TSET			:REAL; 温度设定 **)
(** 		EVC				:BOOL; 电磁阀控制 **)
(** 		EVA				:BOOL; 电磁阀自动状态 **)
(** 		EVR				:BOOL; 电磁阀运行状态 **)
(** 		EVMC			:BOOL; 电磁阀手动控制 **)
(** 		EVMV    		:BOOL; 电磁阀手动控制值 **)
(** 		TS         		:REAL; 回风温度 **)
(** 		ISO1   			:BOOL; 运行故障反馈隔离 **)
(** 		RST      		:BOOL; 运行时间累计重置 **)
(** 		RSTV			:REAL; 运行时间累计重置值 **)
(** 	END_STRUCT; **)
(** 	输出变量 **)
(** 	FCU_OUT:STRUCT **)
(** 		EVC     		:BOOL ;水阀控制转换值,放大100倍 **)
(** 		Control         :BOOL; 启停控制 **)
(** 		RH        		:REAL; 运行小时 **)
(** 		SN        		:INT ; 设备状态代码	 **)
(** 	END_STRUCT; **)
(** 	 **)
(** 	包含以下几点功能 **)
(** 		1.运行故障回检,输出故障代码,支持故障报警隔离 **)
(** 		2.水阀开关控制/手动调节 **)
(** 		3.运行时间累计 **)
(** 				 **)
(** 	备  注: **)
(** 	依赖块: **)
(** 			BS_Runtime; **)
(** 			BS_EVC; **)
(** *} **)
(**  **)
(** {******************************************************运行故障回检******************************************************} **)
(** RunTon1( IN:=FCU_STRUCT_IN.Control , PT:=DevCheck1_time); **)
	(* call - Stmt *)
	CAL RunTon1 (
		IN := FCU_STRUCT_IN.Control,
		PT := DevCheck1_time
	)

(**  **)
(** {*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等为Status0*}; **)
(** FCU_STRUCT_OUT.Control:=FCU_STRUCT_IN.Control; **)
	(* assign - Stmt *)
	LD FCU_STRUCT_IN.Control
	ST FCU_STRUCT_OUT.Control

(** if FCU_STRUCT_IN.ISO1=0 then **)
	(* if - Cond *)
	LD FCU_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 FCU_STRUCT_OUT.Control<>FCU_STRUCT_IN.Run then **)
			(* if - Cond *)
			LD FCU_STRUCT_OUT.Control
			NE FCU_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:

			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

(** end_if; **)
	(* if - End *) 
	ODK_END_IF_000000000000001:

(**  **)
(** {*输出故障代码*} **)
(** if FCU_STRUCT_OUT.Control<>0 then **)
	(* if - Cond *)
	LD FCU_STRUCT_OUT.Control
	NE 0
	JMPCN ODK_SKIP_000000000000004_000000000000001

		(* then - Stmts *)

(** 	FCU_STRUCT_OUT.SN := Status0*1 ;  **)
		(* assign - Stmt *)
		LD Status0
		MUL 1
		ST FCU_STRUCT_OUT.SN

		JMP ODK_END_IF_000000000000004

(** 	else **)
	(* else *) 
	ODK_SKIP_000000000000004_000000000000001:

		(* else - Stmts *)

(** 	FCU_STRUCT_OUT.SN := 0 ; **)
		(* assign - Stmt *)
		LD 0
		ST FCU_STRUCT_OUT.SN

(** end_if; **)
	(* if - End *) 
	ODK_END_IF_000000000000004:

(**  **)
(** {******************************************************水阀控制******************************************************} **)
(** if FCU_STRUCT_IN.EVMC=0 then **)
	(* if - Cond *)
	LD FCU_STRUCT_IN.EVMC
	EQ 0
	JMPCN ODK_SKIP_000000000000005_000000000000001

		(* then - Stmts *)

(** 	if FCU_STRUCT_IN.Run=1 then **)
		(* if - Cond *)
		LD FCU_STRUCT_IN.Run
		EQ 1
		JMPCN ODK_SKIP_000000000000006_000000000000001

			(* then - Stmts *)

(** 		{*制冷季*} **)
(** 		if FCU_STRUCT_IN.SM=0 then		 **)
			(* if - Cond *)
			LD FCU_STRUCT_IN.SM
			EQ 0
			JMPCN ODK_SKIP_000000000000007_000000000000001

				(* then - Stmts *)

(** 		   FCU_EVC(RUN :=FCU_STRUCT_IN.RUN , SET :=FCU_STRUCT_IN.TSET , FB :=FCU_STRUCT_IN.TS , DEAD_BAND :=0.5 , DELAY :=t#60s , SW :=FCU_STRUCT_IN.SM  |  FCU_STRUCT_OUT.EVC:= EVC); **)
				(* call - Stmt *)
				CAL FCU_EVC (
					Run := FCU_STRUCT_IN.Run,
					SET := FCU_STRUCT_IN.TSET,
					FB := FCU_STRUCT_IN.TS,
					DEAD_BAND := 0.5,
					DELAY := t#60s,
					SW := FCU_STRUCT_IN.SM
					|
					FCU_STRUCT_OUT.EVC := EVC
				)

				JMP ODK_END_IF_000000000000007

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_000000000000007_000000000000001:
			ODK_END_IF_000000000000007:

(** 		{*制热季*} **)
(** 		if FCU_STRUCT_IN.SM=1 then **)
			(* if - Cond *)
			LD FCU_STRUCT_IN.SM
			EQ 1
			JMPCN ODK_SKIP_000000000000008_000000000000001

				(* then - Stmts *)

(** 		   FCU_EVC(RUN :=FCU_STRUCT_IN.RUN , SET :=FCU_STRUCT_IN.TSET , FB :=FCU_STRUCT_IN.TS , DEAD_BAND :=0.5 , DELAY :=t#60s , SW :=FCU_STRUCT_IN.SM  |  FCU_STRUCT_OUT.EVC:= EVC); **)
				(* call - Stmt *)
				CAL FCU_EVC (
					Run := FCU_STRUCT_IN.Run,
					SET := FCU_STRUCT_IN.TSET,
					FB := FCU_STRUCT_IN.TS,
					DEAD_BAND := 0.5,
					DELAY := t#60s,
					SW := FCU_STRUCT_IN.SM
					|
					FCU_STRUCT_OUT.EVC := EVC
				)

				JMP ODK_END_IF_000000000000008

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_000000000000008_000000000000001:
			ODK_END_IF_000000000000008:

(** 		{*过渡季*} **)
(** 		if FCU_STRUCT_IN.SM=2 then 	 **)
			(* if - Cond *)
			LD FCU_STRUCT_IN.SM
			EQ 2
			JMPCN ODK_SKIP_000000000000009_000000000000001

				(* then - Stmts *)

(** 		   FCU_STRUCT_OUT.EVC:=0; **)
				(* assign - Stmt *)
				LD 0
				ST FCU_STRUCT_OUT.EVC

				JMP ODK_END_IF_000000000000009

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_000000000000009_000000000000001:
			ODK_END_IF_000000000000009:

			JMP ODK_END_IF_000000000000006

(** 	else **)
		(* else *) 
		ODK_SKIP_000000000000006_000000000000001:

			(* else - Stmts *)

(** 		FCU_STRUCT_OUT.EVC:=0 ;		 **)
			(* assign - Stmt *)
			LD 0
			ST FCU_STRUCT_OUT.EVC

(** 	end_if; **)
		(* if - End *) 
		ODK_END_IF_000000000000006:

		JMP ODK_END_IF_000000000000005

(** else **)
	(* else *) 
	ODK_SKIP_000000000000005_000000000000001:

		(* else - Stmts *)

(** 	FCU_STRUCT_OUT.EVC:=FCU_STRUCT_IN.EVMV; **)
		(* assign - Stmt *)
		LD FCU_STRUCT_IN.EVMV
		ST FCU_STRUCT_OUT.EVC

(** end_if; **)
	(* if - End *) 
	ODK_END_IF_000000000000005:

(**  **)
(** {******************************************************运行时间累计******************************************************} **)
(** FCU_RunTime(RUN :=FCU_STRUCT_IN.Run , RUNTIMESET :=FCU_STRUCT_IN.RSTV , RUNTIMERST :=FCU_STRUCT_IN.RST ,RunTimeRec_In :=FCU_STRUCT_OUT.RH |  FCU_STRUCT_OUT.RH:= RUNTIME); **)
	(* call - Stmt *)
	CAL FCU_RunTime (
		Run := FCU_STRUCT_IN.Run,
		RUNTIMESET := FCU_STRUCT_IN.RSTV,
		RUNTIMERST := FCU_STRUCT_IN.RST,
		RunTimeRec_In := FCU_STRUCT_OUT.RH
		|
		FCU_STRUCT_OUT.RH := RUNTIME
	)

(**  **)
(**  **)

END_FUNCTION_BLOCK