Итак, попробовал все сначала. Создал проект с таргетом на ПЛК 110-24.30.K-M02. Во вкладке сетевая функциональность прописал ручкам UDP. Сразу в менеджере библиотек добавил SysLibSockets, NETVARUDP, SYSLIBCALLBACK. Сбрасываю ПЛК (рычаг на 6 секунд в положение сброс) мало ли сокетов на создавалось не может теперь открыть новый. Пишу программу (ниже). Компилирую, Загружаю, Запускаю. После меняю start на true и тут происхоидт зависание и связь теряется через несколько секунд. Связь с ПЛК установлена через RS-232 Debug - переходник USB (COM6). К слову таймер запускается отрабатывает нормально. Ну и простые алгоритмы OR AND и т.п. к потере связи не приводят.
HandleSocket как был -1 так и остается, хотя это может сязана с потерей связи ПЛК-ПК, последняя инфо от ПЛК полученная. Подскажите пожалуйста в чем могу ошибаться.
IF start THEN
IF HandleSocket<0 THEN
HandleSocket:=SysSockCreate(SOCKET_AF_INET, SOCKET_DGRAM, SOCKET_IPPROTO_UDP);
sa.sin_family:=SOCKET_AF_INET;
sa.sin_addr:=SOCKET_INADDR_ANY;
sa.sin_port:=SysSockHtons(iPort);
SysSockBind(HandleSocket, ADR(sa), SIZEOF(sa));
ELSE
SysSockRecvFrom(HandleSocket, ADR(MessageFromPC), 1600, 0, ADR(sa), SIZEOF(sa));
END_IF
ELSE
IF HandleSocket<>SOCKET_INVALID THEN
SysSockClose(HandleSocket);
HandleSocket:=SOCKET_INVALID;
MessageFromPC:=Zero;
END_IF
END_IF
tik(IN:=tik.IN,PT:=T#20s);
IF tik.Q THEN
tik(IN:=FALSE);
IF HandleSocket <> SOCKET_INVALID THEN
SysSockClose(HandleSocket);
HandleSocket := SOCKET_INVALID;
END_IF;
END_IF;




Ответить с цитированием