видимо из-за этих строк
IF stIPAddress <> '' THEN
sa.sin_addr:=GetIPAddress(stIPAddress);
ELSE
sa.sin_addr:=SOCKET_INADDR_BROADCAST;
END_IF
лучше адрес сделать массивом, типа stIPAddress : ARRAY [0..3] OF BYTE := 192,168,0,8;
а sa.sin_addr переделать на sa.sin_addr := SHL( SHL( SHL(
BYTE_TO_DWORD(stIPAddress[0] ), 8 )
OR BYTE_TO_DWORD( stIPAddress[1] ), 8 )
OR BYTE_TO_DWORD( stIPAddress[2] ), 8 )
OR BYTE_TO_DWORD( stIPAddress[3] );