Здоровья!

Прошу помощи!
Уже неделю не могу понять что происходит,ситуация следующая:
ПЛК 150 посредством программы с использованием SysLibSockets.lib через ETHERNET передает строку символов ПК.

В сети 1 Гбит и 100 Мбит – все ОК. Все отсылается и принимается на ура.
В сети 512 Кбит(через провайдера) – ПЛК не может даже проконнектиться для посыла…, хотя и может принимать данные через SysSockSend. Пинг проходит. Загрузка файлов командой plc_io.exe тоже идет. CoDeSys тоже работает.

Наверное что-то с программой.
Очень нужен совет…

PROGRAM CLIENT
VAR
SEND_DATA_REQ: BOOL := FALSE;
STATE_SEND: INT := 0;
SOCK_OUT: DINT;
TCP_ADR_OUT:SOCKADDRESS;
PADDR_OUT: DWORD;
OUT_TON:TON;
RCV_SND_BUF: ARRAY[ 0..65 ] OF BYTE;
RES_OUT : BOOL;
SEND_BYTES: DINT;
WAS_IT_SEND: BOOL := FALSE;
L: INT;
sts: STRING;
END_VAR

(* программа *)
L := L + 1;
CASE STATE_SEND OF
0: SOCK_OUT := SysSockCreate( SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP );
TCP_ADR_OUT.sin_family := SOCKET_AF_INET;
TCP_ADR_OUT.sin_port := 5544; TCP_ADR_OUT.sin_addr := 16#C0A8C8CF; (* 192.168.200.207 *)

PADDR_OUT := ADR( TCP_ADR_OUT );
OUT_TON( IN := FALSE, PT := T#50MS ); STATE_SEND := 1;
1: RES_OUT := SysSockConnect( SOCK_OUT, PADDR_OUT, SIZEOF( PADDR_OUT) ); OUT_TON( IN := TRUE, PT := T#5S ); (* ставил до 20 сек *)
IF OUT_TON.Q THEN
STATE_SEND := 2;
END_IF
2: sts := CONCAT(INT_TO_STRING(L), '-- проверка');
SEND_BYTES := SysSockSend( SOCK_OUT, ADR(sts), 32, 0 ); IF SEND_BYTES > 0 THEN SysSockClose( SOCK_OUT ); SEND_DATA_REQ := FALSE; STATE_SEND := 0;
ELSE
SysSockClose( SOCK_OUT ); SEND_DATA_REQ := FALSE; STATE_SEND := 0;
END_IF
(* end client*)