(* @PATH := '\/Functions_Collection' *) (* @SYMFILEFLAGS := '0' *) FUNCTION_BLOCK MessageScroll VAR_INPUT msg_array : ARRAY [0..70] OF BOOL; scroll_sec : INT; END_VAR VAR_OUTPUT msg_code: INT; END_VAR VAR mONS: R_TRIG ; msg_ptr: POINTER TO BYTE; i_sec: INT; i_msg: INT; msg_active: BOOL; END_VAR (* @END_DECLARATION := '0' *) mONS(CLK:=gClock_1s) ; IF i_msg < SIZEOF(msg_array) THEN msg_ptr := ADR (msg_array[i_msg]) ; IF msg_ptr^ = 1 THEN msg_active := TRUE; msg_code := i_msg ; IF mONS.Q THEN IF i_sec <= scroll_sec THEN i_sec := i_sec + 1; ELSE i_sec := 0; i_msg := i_msg + 1; END_IF END_IF ELSE i_msg := i_msg + 1; i_sec := 0; END_IF ELSE i_msg := 0 ; msg_active := FALSE; msg_code := i_msg ; END_IF END_FUNCTION_BLOCK