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 25 26 27 28 29
FUNCTION_BLOCK POU_SCORECOUNTER VAR_INPUT xGoal : BOOL := FALSE; posBall : POSITION; iLimit : INT := 13; xReset: BOOL := FALSE; END_VAR VAR_OUTPUT iScore1 : INT := 0; iScore2 : INT := 0; xFinish : BOOL := FALSE; VAR iWidth: INT; IF (xReset) THEN xFinish := FALSE; xReset := FALSE; iScore1 := 0; iScore2 := 0; END_IF IF (iScore1 >= iLimit OR iLimit <= iScore2) THEN xFinish := TRUE; ELSE IF (xGoal) THEN IF (posBall.iXPos > iWidth /2) THEN iScore1 := iScore1 + 1; ELSE iScore2 := iScore2 + 1; END_IF END_IF