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 ;		(* 季节模式 0夏季 1冬季 2过渡 *)
END_VAR

VAR_OUTPUT
EVC			 : BOOL ;		(* 电磁阀控制 *)
END_VAR

VAR
ton1 		 : TON  ;
ton2 		 : TON  ;
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);
ton2(pt:=Delay);

if RUN =1 then
	if SW=0 then
		if FB-(SET+Dead_Band)>=0.0 then
			ton1.in:=1;
			else
			ton1.in:=0;
		end_if;
		if ton1.q=1 then
			EVC:=1;
		end_if;
		if FB-(SET-Dead_Band)<0.0 then
			ton2.in:=1;
			else
			ton2.in:=0;
	    end_if;
		if ton2.q=1 then
			EVC:=0;
		end_if;
	else
		if (SET-Dead_Band)-FB>=0.0 then
			ton1.in:=1;
			else
			ton1.in:=0;
		end_if;
		if ton1.q=1 then
			EVC:=1;
		end_if;
		if (SET+Dead_Band)-FB<0.0 then
			ton2.in:=1;
			else
			ton2.in:=0;
	    end_if;
		if ton2.q=1 then
			EVC:=0;
		end_if;
	end_if;
end_if;

 
END_FUNCTION_BLOCK