Добрый день.
В том примере что вы сделали, пишет в топики отлично. а вот при чтении данные попадают куда им хочется, совсем не в те топики куда должны.
Попробуйте растяните пример на большее количество топиков, и вы увидите.
Вид для печати
Добрый день!
Появилась такая проблема. Обмен работает какое-то время, но потом перестает!
Посмотрел, все крутится в цикле: SERVER_STATE_CREATE - SERVER_STATE_BIND - SERVER_STATE_CLOSE
Вот код:
Код:CASE eState OF
SERVER_STATE_CREATE:
hServerSocket := SysSockCreate( SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP );
IF hServerSocket <> SOCKET_INVALID THEN
SysSockSetOption(hServerSocket, SOCKET_SOL, c_diSoNbio, ADR(diOption), SIZEOF(diOption) );
eState := SERVER_STATE_BIND;
ELSE
eState := SERVER_STATE_CLOSE;
END_IF
SERVER_STATE_BIND:
stServerSettings.sin_family := SOCKET_AF_INET;
stServerSettings.sin_addr := SysSockHtonl(SOCKET_INADDR_ANY);
stServerSettings.sin_port := SysSockHtons(wPort);
xBinded := SysSockBind(hServerSocket, ADR(stServerSettings), SIZEOF(stServerSettings) );
IF xBinded THEN eState := SERVER_STATE_LISTEN;
ELSE eState := SERVER_STATE_CLOSE;
END_IF
SERVER_STATE_LISTEN:
xListened := SysSockListen(hServerSocket, INT_TO_DINT(c_iMaxConnections) );
IF xListened THEN eState := SERVER_STATE_ACCEPT;
ELSE eState := SERVER_STATE_CLOSE;
END_IF
SERVER_STATE_CLOSE:
SysSockShutdown(hServerSocket, c_diHow);
SysSockClose(hServerSocket);
hServerSocket := SOCKET_INVALID;
eState := SERVER_STATE_CREATE;
Товарищи форумчане, всем доброго времени суток.
Подскажите, пожалуйста, возможно ли каким-либо "волшебным" способом на ПЛК100 (сервер) определить IP-адрес подключившегося клиента?
SOCKADDRESS.sin_addr даже в процессе обмена данными равен нулю...
Вопрос так же относится и к представителям ОВЕН, потому как в том же PLCWinNT24 с этим проблем нет.
Задача организовать связь сервера с одним единственным клиентом, имеющим определенный IP-адрес.
Добрый день.
Похоже на некорректное закрытие сокетов после сброса работы программы. Попробуйте привязать в системное событие "stop" закрытие сокетов. (стр. 30 https://ftp.owen.ru/CoDeSys23/10_Soc...ckets_v1.0.pdf )
Иван, спасибо за подсказку.
Добрый день.
Прошу подсказать.
Имеется ПЛК 110-30 [М].
Для считывания данных с другого устройства по modbus tcp в конфигураторе ПЛК в строке состояния ошибки пишет - ошибка 84.
Модбас сканом удается считать регистры другого устройства.
Делали пустой проект с одним соединением по modbus tcp, все равно пишет ошибка 84.
Прошивка контроллера сейчас стоит 0.3.67.
Какие предпринять шаги для устранения данной проблемы?
Может быть обновить прошивку ?
Если обновить прошивку, то возможен ли даунгрейд прошивки ?
84 - проблемы с сокетами (например они кончились)