45 lines
792 B
Plaintext
45 lines
792 B
Plaintext
|
|
(* @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
|