FUNCTION FC_Time: VOID VAR_INPUT InCode :INT; // 1 SD 2 SF IN :BOOL; PT :INT; //MS END_VAR VAR_IN_OUT TIME_DB :STRUCT IN :BOOL; Q :BOOL; PT :INT; //MS value :INT; END_STRUCT ; OB1_PREV_CYCLE :INT; END_VAR VAR_OUTPUT END_VAR VAR_TEMP END_VAR BEGIN TIME_DB.IN:=IN; TIME_DB.PT:=PT; //Time Delay IF InCode= 1 THEN IF TIME_DB.IN AND (TIME_DB.value < TIME_DB.PT) THEN TIME_DB.value:= TIME_DB.value + OB1_PREV_CYCLE; END_IF; IF NOT TIME_DB.IN THEN TIME_DB.value:=0; END_IF; TIME_DB.Q:=TIME_DB.IN AND (TIME_DB.value >= TIME_DB.PT);//Out END_IF; //Time Off Delay IF InCode= 2 THEN IF NOT TIME_DB.IN AND TIME_DB.Q AND (TIME_DB.value < TIME_DB.PT) THEN TIME_DB.value:= TIME_DB.value + OB1_PREV_CYCLE; END_IF; IF TIME_DB.IN THEN TIME_DB.value:=0; TIME_DB.Q:=TRUE; END_IF; IF TIME_DB.value >= TIME_DB.PT THEN TIME_DB.Q:=FALSE; END_IF; END_IF; //Other IF InCode<> 1 AND InCode<> 2 THEN TIME_DB.Q:=FALSE; END_IF; OK:= true; END_FUNCTION