[INDENT][SIZE=2]FUNCTION_BLOCK fb10
[/SIZE] [SIZE=2]VAR_INPUT
[/SIZE] [SIZE=2] zahl:DINT;
[/SIZE] [SIZE=2]END_VAR
[/SIZE] [SIZE=2]VAR_OUTPUT
[/SIZE] [SIZE=2] zyklus:BOOL;
[/SIZE] [SIZE=2]END_VAR
[/SIZE] [SIZE=2]VAR
[/SIZE] [SIZE=2] merker1:ARRAY[1..10]OF INT;
[/SIZE] [SIZE=2] merker2:ARRAY[1..10]OF INT;
[/SIZE] [SIZE=2] period:ARRAY[1..10]OF INT;
[/SIZE] [SIZE=2] zaehler1:INT:=1;
[/SIZE] [SIZE=2] zaehler2:INT:=0;
[/SIZE] [SIZE=2] break:BOOL:=false;
[/SIZE] [SIZE=2]END_VAR
[/SIZE] [SIZE=2]VAR_TEMP
[/SIZE] [SIZE=2] index:INT;
[/SIZE] [SIZE=2] index1:INT;
[/SIZE] [SIZE=2] index2:INT;
[/SIZE] [SIZE=2]END_VAR
[/SIZE] [SIZE=2]///////////////////////////////////////////////////////////////////////////////////////////////
[/SIZE] [SIZE=2]BEGIN
[/SIZE] [SIZE=2]index:=DINT_TO_INT(zahl);
[/SIZE] [SIZE=2]IF break=true AND zaehler2<11 THEN
[/SIZE] [SIZE=2] zaehler2:=zaehler2+1;
[/SIZE] [SIZE=2] period[zaehler2]:=zaehler1;
[/SIZE] [SIZE=2] zaehler1:=1;
[/SIZE] [SIZE=2] break:=false;
[/SIZE] [SIZE=2]END_IF;
[/SIZE] [SIZE=2]zaehler1:=zaehler1+1;
[/SIZE] [SIZE=2]IF zaehler1 <=11 THEN
[/SIZE] [SIZE=2]merker1[zaehler1-1]:=index;
[/SIZE] [SIZE=2]merker2[zaehler1-1]:=index;
[/SIZE] [SIZE=2]ELSE
[/SIZE] [SIZE=2] FOR index2:= 2 TO 10 BY +1 DO
[/SIZE] [SIZE=2] merker2[index2-1]:=merker2[index2];
[/SIZE] [SIZE=2] END_FOR;
[/SIZE] [SIZE=2]merker2[10]:=index;
[/SIZE] [SIZE=2]END_IF;
[/SIZE] [SIZE=2] IF zaehler1> 11 THEN
[/SIZE] [SIZE=2] FOR index1:=1 TO 10 BY +1 DO
[/SIZE] [SIZE=2] IF merker1[index1] = merker2[index1] THEN
[/SIZE] [SIZE=2] break:=true;
[/SIZE] [SIZE=2] zyklus:=true;
[/SIZE] [SIZE=2] ELSE break:=false;
[/SIZE] [SIZE=2] zyklus:=false;
[/SIZE] [SIZE=2] EXIT;
[/SIZE] [SIZE=2] END_IF;
[/SIZE] [SIZE=2] END_FOR;
[/SIZE] [SIZE=2] END_IF;
[/SIZE] [SIZE=2]END_FUNCTION_BLOCK[/SIZE]
[/INDENT]