[r26]: / branches / PackMLState / CODESYS_Control_Win_V3 / Plc Logic / Application / Function Blocks / MessageQueue / svnobj  Maximize  Restore  History

Download this file

31 lines (28 with data), 3.4 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
FUNCTION_BLOCK MessageQueue
VAR_IN_OUT
	Client 				: Client;
END_VAR
VAR
	NewMessage			: BOOL;
	TimeoutTimer		: TOF;
	InQueue				: INT;
	OutIndex			: INT;
	InIndex				: INT;
	Commands 			: ARRAY[0..15] OF CommandType;
	Values 				: ARRAY[0..15] OF STRING;
IF InQueue > 0 THEN
	IF NOT Client.bReadyFromPLC THEN
		Client.sCommandFromPLC:= Values[OutIndex];
		Client.iCommandFromPLC:= Commands[OutIndex];
		Client.bReadyFromPLC:= TRUE;
		
		IF OutIndex >= 15 THEN
			OutIndex := 0;		
		ELSE		
			OutIndex := OutIndex + 1;		
		END_IF			
		InQueue := InQueue - 1;
	END_IF	
END_IF
TimeoutTimer(IN := NewMessage,PT:=T#30S);
IF NewMessage THEN
	NewMessage := FALSE;