FUNCTION_BLOCK IJDAHU
VAR_EXTERNAL

END_VAR

VAR_INPUT
DAHU_STRUCT_IN  :DAHU_IN;
END_VAR

VAR_OUTPUT
DAHU_STRUCT_OUT :DAHU_OUT;
END_VAR

VAR

DAHU_SPID       	 :PID;
DAHU_WPID			 :PID;
DAHU_WVCTEMP		 :REAL;
DAHU_SPID_VP		 :REAL;
DAHU_SPID_VI		 :REAL;
DAHU_WPID_VP		 :REAL;
DAHU_WPID_VI		 :REAL;
PID_in				 :BOOL;
PID_timer			 :TON;
DAHU_R				 :BOOL;

FPSSIM_timer		 :TON;

END_VAR

(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {******************************检测风机运行类别 0压差或电流值 1仅压差 2仅电流*************************************} **)
(**  **)
(** if DAHU_STRUCT_IN.RunMode=0 then  **)
	(* if - Cond *)
	LD DAHU_STRUCT_IN.RunMode
	EQ 0
	JMPCN ODK_SKIP_000000000000001_000000000000001

		(* then - Stmts *)

(** 	if DAHU_STRUCT_IN.FPS=1 or DAHU_STRUCT_IN.CTV>50 then **)
		(* if - Cond *)
		LD DAHU_STRUCT_IN.FPS
		EQ 1
		OR ( DAHU_STRUCT_IN.CTV
			GT 50
		)
		JMPCN ODK_SKIP_000000000000002_000000000000001

			(* then - Stmts *)

(** 	   DAHU_R:= 1; **)
			(* assign - Stmt *)
			LD 1
			ST DAHU_R

			JMP ODK_END_IF_000000000000002

(** 	   else **)
		(* else *) 
		ODK_SKIP_000000000000002_000000000000001:

			(* else - Stmts *)

(** 	   DAHU_R:= 0; **)
			(* assign - Stmt *)
			LD 0
			ST DAHU_R

(** 	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:

(** if DAHU_STRUCT_IN.RunMode=1 then  **)
	(* if - Cond *)
	LD DAHU_STRUCT_IN.RunMode
	EQ 1
	JMPCN ODK_SKIP_000000000000003_000000000000001

		(* then - Stmts *)

(** 	if DAHU_STRUCT_IN.FPS=1  then **)
		(* if - Cond *)
		LD DAHU_STRUCT_IN.FPS
		EQ 1
		JMPCN ODK_SKIP_000000000000004_000000000000001

			(* then - Stmts *)

(** 	   DAHU_R:= 1; **)
			(* assign - Stmt *)
			LD 1
			ST DAHU_R

			JMP ODK_END_IF_000000000000004

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

			(* else - Stmts *)

(** 	   DAHU_R:= 0; **)
			(* assign - Stmt *)
			LD 0
			ST DAHU_R

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

		JMP ODK_END_IF_000000000000003

(** end_if; **)
	(* if - End *) 
	ODK_SKIP_000000000000003_000000000000001:
	ODK_END_IF_000000000000003:

(** if DAHU_STRUCT_IN.RunMode=2 then  **)
	(* if - Cond *)
	LD DAHU_STRUCT_IN.RunMode
	EQ 2
	JMPCN ODK_SKIP_000000000000005_000000000000001

		(* then - Stmts *)

(** 	if DAHU_STRUCT_IN.CTV>50  then **)
		(* if - Cond *)
		LD DAHU_STRUCT_IN.CTV
		GT 50
		JMPCN ODK_SKIP_000000000000006_000000000000001

			(* then - Stmts *)

(** 	   DAHU_R:= 1; **)
			(* assign - Stmt *)
			LD 1
			ST DAHU_R

			JMP ODK_END_IF_000000000000006

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

			(* else - Stmts *)

(** 	   DAHU_R:= 0; **)
			(* assign - Stmt *)
			LD 0
			ST DAHU_R

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

		JMP ODK_END_IF_000000000000005

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

(** {******************************************************压差信号模拟**************************************************} **)
(** {********************************************原则上不使用,谨慎使用**************************************************} **)
(**  **)
(** FPSSIM_timer( IN:=DAHU_R , PT:=t#2s ); **)
	(* call - Stmt *)
	CAL FPSSIM_timer (
		IN := DAHU_R,
		PT := t#2s
	)

(** if DAHU_R=1 then  **)
	(* if - Cond *)
	LD DAHU_R
	EQ 1
	JMPCN ODK_SKIP_000000000000007_000000000000001

		(* then - Stmts *)

(** 	DAHU_STRUCT_OUT.FPSSIM:=FPSSIM_timer.q; **)
		(* assign - Stmt *)
		LD FPSSIM_timer.q
		ST DAHU_STRUCT_OUT.FPSSIM

		JMP ODK_END_IF_000000000000007

(** 	else **)
	(* else *) 
	ODK_SKIP_000000000000007_000000000000001:

		(* else - Stmts *)

(** 	DAHU_STRUCT_OUT.FPSSIM:=0; **)
		(* assign - Stmt *)
		LD 0
		ST DAHU_STRUCT_OUT.FPSSIM

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

(**  **)
(** {******************************************************水阀控制******************************************************} **)
(**  **)
(** PID_in:= not PID_timer.q; **)
	(* assign - Stmt *)
	LD PID_timer.q
	NOT
	ST PID_in

(** PID_timer(in:=PID_in, pt:=t#1s );{*PID积分时间*} **)
	(* call - Stmt *)
	CAL PID_timer (
		IN := PID_in,
		PT := t#1s
	)

(**  **)
(** if DAHU_STRUCT_IN.WVMC=0 then **)
	(* if - Cond *)
	LD DAHU_STRUCT_IN.WVMC
	EQ 0
	JMPCN ODK_SKIP_000000000000008_000000000000001

		(* then - Stmts *)

(** 	if DAHU_R=1 then **)
		(* if - Cond *)
		LD DAHU_R
		EQ 1
		JMPCN ODK_SKIP_000000000000009_000000000000001

			(* then - Stmts *)

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

				(* then - Stmts *)

(** 			if  DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET>=2.0 then **)
				(* if - Cond *)
				LD DAHU_STRUCT_IN.RTS
				SUB DAHU_STRUCT_IN.TSET
				GE 2.0
				JMPCN ODK_SKIP_00000000000000B_000000000000001

					(* then - Stmts *)

(** 				DAHU_WVCTEMP:=100.0; **)
					(* assign - Stmt *)
					LD 100.0
					ST DAHU_WVCTEMP

					JMP ODK_END_IF_00000000000000B

(** 			end_if; **)
				(* if - End *) 
				ODK_SKIP_00000000000000B_000000000000001:
				ODK_END_IF_00000000000000B:

(** 			if  DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET>0.2 and DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET<2.0 then {*死区*} **)
				(* if - Cond *)
				LD DAHU_STRUCT_IN.RTS
				SUB DAHU_STRUCT_IN.TSET
				GT 0.2
				AND ( DAHU_STRUCT_IN.RTS
					SUB DAHU_STRUCT_IN.TSET
					LT 2.0
				)
				JMPCN ODK_SKIP_00000000000000C_000000000000001

					(* then - Stmts *)

(** 				if PID_timer.q then **)
					(* if - Cond *)
					LD PID_timer.q
					JMPCN ODK_SKIP_00000000000000D_000000000000001

						(* then - Stmts *)

(** 					DAHU_WVCTEMP:=(DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET)*49.0; **)
						(* assign - Stmt *)
						LD DAHU_STRUCT_IN.RTS
						SUB DAHU_STRUCT_IN.TSET
						MUL 49.0
						ST DAHU_WVCTEMP

						JMP ODK_END_IF_00000000000000D

(** 				end_if; **)
					(* if - End *) 
					ODK_SKIP_00000000000000D_000000000000001:
					ODK_END_IF_00000000000000D:

					JMP ODK_END_IF_00000000000000C

(** 			end_if; **)
				(* if - End *) 
				ODK_SKIP_00000000000000C_000000000000001:
				ODK_END_IF_00000000000000C:

(** 			if  DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET<=0.0 then **)
				(* if - Cond *)
				LD DAHU_STRUCT_IN.RTS
				SUB DAHU_STRUCT_IN.TSET
				LE 0.0
				JMPCN ODK_SKIP_00000000000000E_000000000000001

					(* then - Stmts *)

(** 				DAHU_WVCTEMP:=0.0; **)
					(* assign - Stmt *)
					LD 0.0
					ST DAHU_WVCTEMP

					JMP ODK_END_IF_00000000000000E

(** 			end_if; **)
				(* if - End *) 
				ODK_SKIP_00000000000000E_000000000000001:
				ODK_END_IF_00000000000000E:

				JMP ODK_END_IF_00000000000000A

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000A_000000000000001:
			ODK_END_IF_00000000000000A:

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

				(* then - Stmts *)

(** 			if  DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS>=2.0 then **)
				(* if - Cond *)
				LD DAHU_STRUCT_IN.TSET
				SUB DAHU_STRUCT_IN.RTS
				GE 2.0
				JMPCN ODK_SKIP_00000000000000G_000000000000001

					(* then - Stmts *)

(** 				DAHU_WVCTEMP:=100.0; **)
					(* assign - Stmt *)
					LD 100.0
					ST DAHU_WVCTEMP

					JMP ODK_END_IF_00000000000000G

(** 			end_if; **)
				(* if - End *) 
				ODK_SKIP_00000000000000G_000000000000001:
				ODK_END_IF_00000000000000G:

(** 			if  DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS>0.2 and DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS<2.0 then {*死区*} **)
				(* if - Cond *)
				LD DAHU_STRUCT_IN.TSET
				SUB DAHU_STRUCT_IN.RTS
				GT 0.2
				AND ( DAHU_STRUCT_IN.TSET
					SUB DAHU_STRUCT_IN.RTS
					LT 2.0
				)
				JMPCN ODK_SKIP_00000000000000H_000000000000001

					(* then - Stmts *)

(** 				if PID_timer.q then **)
					(* if - Cond *)
					LD PID_timer.q
					JMPCN ODK_SKIP_00000000000000I_000000000000001

						(* then - Stmts *)

(** 					DAHU_WVCTEMP:=(DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS)*49.0; **)
						(* assign - Stmt *)
						LD DAHU_STRUCT_IN.TSET
						SUB DAHU_STRUCT_IN.RTS
						MUL 49.0
						ST DAHU_WVCTEMP

						JMP ODK_END_IF_00000000000000I

(** 				end_if; **)
					(* if - End *) 
					ODK_SKIP_00000000000000I_000000000000001:
					ODK_END_IF_00000000000000I:

					JMP ODK_END_IF_00000000000000H

(** 			end_if;	 **)
				(* if - End *) 
				ODK_SKIP_00000000000000H_000000000000001:
				ODK_END_IF_00000000000000H:

(** 			if  DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS<=0.0 then **)
				(* if - Cond *)
				LD DAHU_STRUCT_IN.TSET
				SUB DAHU_STRUCT_IN.RTS
				LE 0.0
				JMPCN ODK_SKIP_00000000000000J_000000000000001

					(* then - Stmts *)

(** 				DAHU_WVCTEMP:=0.0; **)
					(* assign - Stmt *)
					LD 0.0
					ST DAHU_WVCTEMP

					JMP ODK_END_IF_00000000000000J

(** 			end_if; **)
				(* if - End *) 
				ODK_SKIP_00000000000000J_000000000000001:
				ODK_END_IF_00000000000000J:

				JMP ODK_END_IF_00000000000000F

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000F_000000000000001:
			ODK_END_IF_00000000000000F:

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

				(* then - Stmts *)

(** 			DAHU_WVCTEMP:=0.0; **)
				(* assign - Stmt *)
				LD 0.0
				ST DAHU_WVCTEMP

				JMP ODK_END_IF_00000000000000K

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000K_000000000000001:
			ODK_END_IF_00000000000000K:

			JMP ODK_END_IF_000000000000009

(** 	else **)
		(* else *) 
		ODK_SKIP_000000000000009_000000000000001:

			(* else - Stmts *)

(** 		DAHU_WVCTEMP:=0.0;		 **)
			(* assign - Stmt *)
			LD 0.0
			ST DAHU_WVCTEMP

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

		JMP ODK_END_IF_000000000000008

(** elsif DAHU_STRUCT_IN.WVMC=1 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000008_000000000000001:
	LD DAHU_STRUCT_IN.WVMC
	EQ 1
	JMPCN ODK_SKIP_000000000000008_000000000000002

		(* elsif - Stmts *)

(** 	DAHU_WVCTEMP:=DAHU_STRUCT_IN.WVMV; **)
		(* assign - Stmt *)
		LD DAHU_STRUCT_IN.WVMV
		ST DAHU_WVCTEMP

		JMP ODK_END_IF_000000000000008

(** else **)
	(* else *) 
	ODK_SKIP_000000000000008_000000000000002:

		(* else - Stmts *)

(** 	DAHU_WVCTEMP:=100.0; **)
		(* assign - Stmt *)
		LD 100.0
		ST DAHU_WVCTEMP

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

(**  **)
(** {*水阀赋值量程转换*} **)
(** DAHU_STRUCT_OUT.WVCS:=REAL_TO_INT(DAHU_WVCTEMP*100.0); **)
	(* assign - Stmt *)
	LD DAHU_WVCTEMP
	MUL 100.0
	REAL_TO_INT 
	ST DAHU_STRUCT_OUT.WVCS

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

END_FUNCTION_BLOCK