Download this file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
FUNCTION_BLOCK MessageQueue VAR_IN_OUT Client : Client; END_VAR VAR 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