FUNCTION_BLOCK FB44 VAR_INPUT ipstring:STRING[16]; //adress ip string ipStnigDecode AT ipstring: STRUCT //zdekodowany sizemax:BYTE; sizeact:BYTE; //rozmiar stringa str:ARRAY[1..15]OF CHAR; //tablica znaków END_STRUCT; END_VAR VAR_OUTPUT ip_tab:ARRAY[0..3]OF INT; //tablica - zdekodowany ip END_VAR VAR IP_String_Index:INT;// index po literach IP_Octet_Index:INT;// index po kolejnych człony IP IP_octet_calculate:INT; //obliczany bait adresu ip END_VAR Begin IP_Octet_Index:=0; IP_octet_calculate:=0; FOR IP_String_Index:=1 TO BYTE_TO_INT(ipStnigDecode.sizeact) BY 1 DO //przeglądamy string po znakach pętla for IF ipStnigDecode.str[ IP_String_Index]='.' THEN ip_Tab[ IP_Octet_Index]:=IP_octet_calculate; IP_octet_calculate:=0; IP_Octet_Index:= IP_Octet_Index+1; ELSE IP_octet_calculate:=IP_octet_calculate*10+CHAR_TO_INT(ipStnigDecode.str[IP_String_Index])-48; // 48 to kod znaku 0 w asci END_IF; END_FOR; ip_Tab[ IP_Octet_Index]:=IP_octet_calculate; //ostatni bajt END_FUNCTION_BLOCK