海南电网项目下位机程序
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.
 
 
 
 
 
 

512 lines
11 KiB

FUNCTION_BLOCK TimerForm
VAR_EXTERNAL
END_VAR
VAR_INPUT
OnH1st :INT:=0;
OnM1st :INT:=0;
OffH1st :INT:=0;
OffM1st :INT:=0;
Enable1st :BOOL:=FALSE;
OnH2nd :INT:=0;
OnM2nd :INT:=0;
OffH2nd :INT:=0;
OffM2nd :INT:=0;
Enable2nd :BOOL:=FALSE;
OnH3rd :INT:=0;
OnM3rd :INT:=0;
OffH3rd :INT:=0;
OffM3rd :INT:=0;
Enable3rd :BOOL:=FALSE;
OnH4th :INT:=0;
OnM4th :INT:=0;
OffH4th :INT:=0;
OffM4th :INT:=0;
Enable4th :BOOL:=FALSE;
OnH5th :INT:=0;
OnM5th :INT:=0;
OffH5th :INT:=0;
OffM5th :INT:=0;
Enable5th :BOOL:=FALSE;
OnH6th :INT:=0;
OnM6th :INT:=0;
OffH6th :INT:=0;
OffM6th :INT:=0;
Enable6th :BOOL:=FALSE;
END_VAR
VAR_OUTPUT
TimeSw1 :BOOL;
TimeSw2 :BOOL;
TimeSw3 :BOOL;
TimeSw4 :BOOL;
TimeSw5 :BOOL;
TimeSw6 :BOOL;
OUT_Z :bool;
END_VAR
VAR
HOUR : byte;
YEAR : word;
MON : byte;
DAY : byte;
MI : byte;
SEC : byte;
WEEK : byte;
WD_HOUR :INT;
WD_MI :INT;
SetCompare1st :bool; (*1反之为0*)
TrueSetCloseCompare1st :bool; (*1反之为0*)
TrueSetOpenCompare1st :bool; (*1反之为0*)
SetCompare2nd :bool; (*1反之为0*)
TrueSetCloseCompare2nd :bool; (*1反之为0*)
TrueSetOpenCompare2nd :bool; (*1反之为0*)
SetCompare3rd :bool; (*1反之为0*)
TrueSetCloseCompare3rd :bool; (*1反之为0*)
TrueSetOpenCompare3rd :bool; (*1反之为0*)
SetCompare4th :bool; (*1反之为0*)
TrueSetCloseCompare4th :bool; (*1反之为0*)
TrueSetOpenCompare4th :bool; (*1反之为0*)
SetCompare5th :bool; (*1反之为0*)
TrueSetCloseCompare5th :bool; (*1反之为0*)
TrueSetOpenCompare5th :bool; (*1反之为0*)
SetCompare6th :bool; (*1反之为0*)
TrueSetCloseCompare6th :bool; (*1反之为0*)
TrueSetOpenCompare6th :bool; (*1反之为0*)
Clock : NW_DateTimeGet;
p1,p2 : pointer;
v2v : NW_MemCopy;
END_VAR
Clock( EN:=1 , B_TWELVE_HOUR:=0 | YEAR:= W_YEAR, MON:= BY_MONTH, DAY:= BY_DAY, HOUR:= BY_HOUR,MI := BY_MIN, SEC:= BY_SEC,WEEK := BY_WDAY );
WD_HOUR:=BYTE_TO_int(HOUR);
WD_MI:=BYTE_TO_int(MI);
IF Enable1st=TRUE AND (NOT(OnH1st=OffH1st AND OnM1st=OffM1st)) THEN(**)
(*1判断开关设定时间之间的大小*)
IF OnH1st>OffH1st THEN
SetCompare1st := 1;
END_IF;
IF OnH1st<OffH1st THEN
SetCompare1st := 0;
END_IF;
IF OnH1st=OffH1st THEN
IF OnM1st>OffM1st THEN
SetCompare1st := 1;
ELSE
SetCompare1st := 0;
END_IF;
END_IF;
(*1判断开设定时间与实际时间之间的大小*)
IF OnH1st>WD_HOUR THEN
TrueSetOpenCompare1st := 1;
END_IF;
IF OnH1st<WD_HOUR THEN
TrueSetOpenCompare1st := 0;
END_IF;
IF OnH1st=WD_HOUR THEN
IF OnM1st>=WD_MI THEN
TrueSetOpenCompare1st := 1;
ELSE
TrueSetOpenCompare1st := 0;
END_IF;
END_IF;
(*1判断关设定时间与实际时间之间的大小*)
IF OffH1st>WD_HOUR THEN
TrueSetCloseCompare1st := 1;
END_IF;
IF OffH1st<WD_HOUR THEN
TrueSetCloseCompare1st := 0;
END_IF;
IF OffH1st=WD_HOUR THEN
IF OffM1st>=WD_MI THEN
TrueSetCloseCompare1st := 1;
ELSE
TrueSetCloseCompare1st := 0;
END_IF;
END_IF;
(*1控制输出*)
IF SetCompare1st THEN(*1*)
IF TrueSetOpenCompare1st AND NOT (TrueSetCloseCompare1st) THEN
TimeSw1:=0;
ELSE
TimeSw1:=1;
END_IF;
ELSE
IF TrueSetCloseCompare1st AND NOT (TrueSetOpenCompare1st) THEN
TimeSw1:=1;
ELSE
TimeSw1:=0;
END_IF;
END_IF;
ELSE
TimeSw1:=0;
END_IF;
IF Enable2nd=TRUE AND (NOT(OnH2nd=OffH2nd AND OnM2nd=OffM2nd)) THEN(**)
(*2判断开关设定时间之间的大小*)
IF OnH2nd>OffH2nd THEN
SetCompare2nd := 1;
END_IF;
IF OnH2nd<OffH2nd THEN
SetCompare2nd := 0;
END_IF;
IF OnH2nd=OffH2nd THEN
IF OnM2nd>OffM2nd THEN
SetCompare2nd := 1;
ELSE
SetCompare2nd := 0;
END_IF;
END_IF;
(*2判断开设定时间与实际时间之间的大小*)
IF OnH2nd>WD_HOUR THEN
TrueSetOpenCompare2nd := 1;
END_IF;
IF OnH2nd<WD_HOUR THEN
TrueSetOpenCompare2nd := 0;
END_IF;
IF OnH2nd=WD_HOUR THEN
IF OnM2nd>=WD_MI THEN
TrueSetOpenCompare2nd := 1;
ELSE
TrueSetOpenCompare2nd := 0;
END_IF;
END_IF;
(*2判断关设定时间与实际时间之间的大小*)
IF OffH2nd>WD_HOUR THEN
TrueSetCloseCompare2nd := 1;
END_IF;
IF OffH2nd<WD_HOUR THEN
TrueSetCloseCompare2nd := 0;
END_IF;
IF OffH2nd=WD_HOUR THEN
IF OffM2nd>=WD_MI THEN
TrueSetCloseCompare2nd := 1;
ELSE
TrueSetCloseCompare2nd := 0;
END_IF;
END_IF;
(*2控制输出*)
IF SetCompare2nd THEN(*1*)
IF TrueSetOpenCompare2nd AND NOT (TrueSetCloseCompare2nd) THEN
TimeSw2:=0;
ELSE
TimeSw2:=1;
END_IF;
ELSE
IF TrueSetCloseCompare2nd AND NOT (TrueSetOpenCompare2nd) THEN
TimeSw2:=1;
ELSE
TimeSw2:=0;
END_IF;
END_IF;
ELSE
TimeSw2:=0;
END_IF;
IF Enable3rd=TRUE AND (NOT(OnH3rd=OffH3rd AND OnM3rd=OffM3rd)) THEN(**)
(*3判断开关设定时间之间的大小*)
IF OnH3rd>OffH3rd THEN
SetCompare3rd := 1;
END_IF;
IF OnH3rd<OffH3rd THEN
SetCompare3rd := 0;
END_IF;
IF OnH3rd=OffH3rd THEN
IF OnM3rd>OffM3rd THEN
SetCompare3rd := 1;
ELSE
SetCompare3rd := 0;
END_IF;
END_IF;
(*3判断开设定时间与实际时间之间的大小*)
IF OnH3rd>WD_HOUR THEN
TrueSetOpenCompare3rd := 1;
END_IF;
IF OnH3rd<WD_HOUR THEN
TrueSetOpenCompare3rd := 0;
END_IF;
IF OnH3rd=WD_HOUR THEN
IF OnM3rd>=WD_MI THEN
TrueSetOpenCompare3rd := 1;
ELSE
TrueSetOpenCompare3rd := 0;
END_IF;
END_IF;
(*3判断关设定时间与实际时间之间的大小*)
IF OffH3rd>WD_HOUR THEN
TrueSetCloseCompare3rd := 1;
END_IF;
IF OffH3rd<WD_HOUR THEN
TrueSetCloseCompare3rd := 0;
END_IF;
IF OffH3rd=WD_HOUR THEN
IF OffM3rd>=WD_MI THEN
TrueSetCloseCompare3rd := 1;
ELSE
TrueSetCloseCompare3rd := 0;
END_IF;
END_IF;
(*3控制输出*)
IF SetCompare3rd THEN(*1*)
IF TrueSetOpenCompare3rd AND NOT (TrueSetCloseCompare3rd) THEN
TimeSw3:=0;
ELSE
TimeSw3:=1;
END_IF;
ELSE
IF TrueSetCloseCompare3rd AND NOT (TrueSetOpenCompare3rd) THEN
TimeSw3:=1;
ELSE
TimeSw3:=0;
END_IF;
END_IF;
ELSE
TimeSw3:=0;
END_IF;
IF Enable4th=TRUE AND (NOT(OnH4th=OffH4th AND OnM4th=OffM4th)) THEN(**)
(*4判断开关设定时间之间的大小*)
IF OnH4th>OffH4th THEN
SetCompare4th := 1;
END_IF;
IF OnH4th<OffH4th THEN
SetCompare4th := 0;
END_IF;
IF OnH4th=OffH4th THEN
IF OnM4th>OffM4th THEN
SetCompare4th := 1;
ELSE
SetCompare4th := 0;
END_IF;
END_IF;
(*4判断开设定时间与实际时间之间的大小*)
IF OnH4th>WD_HOUR THEN
TrueSetOpenCompare4th := 1;
END_IF;
IF OnH4th<WD_HOUR THEN
TrueSetOpenCompare4th := 0;
END_IF;
IF OnH4th=WD_HOUR THEN
IF OnM4th>=WD_MI THEN
TrueSetOpenCompare4th := 1;
ELSE
TrueSetOpenCompare4th := 0;
END_IF;
END_IF;
(*4判断关设定时间与实际时间之间的大小*)
IF OffH4th>WD_HOUR THEN
TrueSetCloseCompare4th := 1;
END_IF;
IF OffH4th<WD_HOUR THEN
TrueSetCloseCompare4th := 0;
END_IF;
IF OffH4th=WD_HOUR THEN
IF OffM4th>=WD_MI THEN
TrueSetCloseCompare4th := 1;
ELSE
TrueSetCloseCompare4th := 0;
END_IF;
END_IF;
(*4控制输出*)
IF SetCompare4th THEN(*1*)
IF TrueSetOpenCompare4th AND NOT (TrueSetCloseCompare4th) THEN
TimeSw4:=0;
ELSE
TimeSw4:=1;
END_IF;
ELSE
IF TrueSetCloseCompare4th AND NOT (TrueSetOpenCompare4th) THEN
TimeSw4:=1;
ELSE
TimeSw4:=0;
END_IF;
END_IF;
ELSE
TimeSw4:=0;
END_IF;
IF Enable5th=TRUE AND (NOT(OnH5th=OffH5th AND OnM5th=OffM5th)) THEN(**)
(*5判断开关设定时间之间的大小*)
IF OnH5th>OffH5th THEN
SetCompare5th := 1;
END_IF;
IF OnH5th<OffH5th THEN
SetCompare5th := 0;
END_IF;
IF OnH5th=OffH5th THEN
IF OnM5th>OffM5th THEN
SetCompare5th := 1;
ELSE
SetCompare5th := 0;
END_IF;
END_IF;
(*5判断开设定时间与实际时间之间的大小*)
IF OnH5th>WD_HOUR THEN
TrueSetOpenCompare5th := 1;
END_IF;
IF OnH5th<WD_HOUR THEN
TrueSetOpenCompare5th := 0;
END_IF;
IF OnH5th=WD_HOUR THEN
IF OnM5th>=WD_MI THEN
TrueSetOpenCompare5th := 1;
ELSE
TrueSetOpenCompare5th := 0;
END_IF;
END_IF;
(*5判断关设定时间与实际时间之间的大小*)
IF OffH5th>WD_HOUR THEN
TrueSetCloseCompare5th := 1;
END_IF;
IF OffH5th<WD_HOUR THEN
TrueSetCloseCompare5th := 0;
END_IF;
IF OffH5th=WD_HOUR THEN
IF OffM5th>=WD_MI THEN
TrueSetCloseCompare5th := 1;
ELSE
TrueSetCloseCompare5th := 0;
END_IF;
END_IF;
(*5控制输出*)
IF SetCompare5th THEN(*1*)
IF TrueSetOpenCompare5th AND NOT (TrueSetCloseCompare5th) THEN
TimeSw5:=0;
ELSE
TimeSw5:=1;
END_IF;
ELSE
IF TrueSetCloseCompare5th AND NOT (TrueSetOpenCompare5th) THEN
TimeSw5:=1;
ELSE
TimeSw5:=0;
END_IF;
END_IF;
ELSE
TimeSw5:=0;
END_IF;
IF Enable6th=TRUE AND (NOT(OnH6th=OffH6th AND OnM6th=OffM6th)) THEN(**)
(*6判断开关设定时间之间的大小*)
IF OnH6th>OffH6th THEN
SetCompare6th := 1;
END_IF;
IF OnH6th<OffH6th THEN
SetCompare6th := 0;
END_IF;
IF OnH6th=OffH6th THEN
IF OnM6th>OffM6th THEN
SetCompare6th := 1;
ELSE
SetCompare6th := 0;
END_IF;
END_IF;
(*6判断开设定时间与实际时间之间的大小*)
IF OnH6th>WD_HOUR THEN
TrueSetOpenCompare6th := 1;
END_IF;
IF OnH6th<WD_HOUR THEN
TrueSetOpenCompare6th := 0;
END_IF;
IF OnH6th=WD_HOUR THEN
IF OnM6th>=WD_MI THEN
TrueSetOpenCompare6th := 1;
ELSE
TrueSetOpenCompare6th := 0;
END_IF;
END_IF;
(**)
IF OffH6th>WD_HOUR THEN
TrueSetCloseCompare6th := 1;
END_IF;
IF OffH6th<WD_HOUR THEN
TrueSetCloseCompare6th := 0;
END_IF;
IF OffH6th=WD_HOUR THEN
IF OffM6th>=WD_MI THEN
TrueSetCloseCompare6th := 1;
ELSE
TrueSetCloseCompare6th := 0;
END_IF;
END_IF;
(*6控制输出*)
IF SetCompare6th THEN(*1*)
IF TrueSetOpenCompare6th AND NOT (TrueSetCloseCompare6th) THEN
TimeSw6:=0;
ELSE
TimeSw6:=1;
END_IF;
ELSE
IF TrueSetCloseCompare6th AND NOT (TrueSetOpenCompare6th) THEN
TimeSw6:=1;
ELSE
TimeSw6:=0;
END_IF;
END_IF;
ELSE
TimeSw6:=0;
END_IF;
if TimeSw1 or TimeSw2 or TimeSw3 or TimeSw4 or TimeSw5 or TimeSw6 then
OUT_Z:=1;
else
OUT_Z:=0;
end_if;
END_FUNCTION_BLOCK