Добрый день!
Появилась такая проблема. Обмен работает какое-то время, но потом перестает!
Посмотрел, все крутится в цикле: 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-адрес.
Последний раз редактировалось Spawn; 24.10.2021 в 14:27.
Добрый день.
Похоже на некорректное закрытие сокетов после сброса работы программы. Попробуйте привязать в системное событие "stop" закрытие сокетов. (стр. 30 https://ftp.owen.ru/CoDeSys23/10_Soc...ckets_v1.0.pdf )
Инженер по продуктам «ПЛК и модули»
e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen
Инженер по продуктам «ПЛК и модули»
e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen
Добрый день.
Прошу подсказать.
Имеется ПЛК 110-30 [М].
Для считывания данных с другого устройства по modbus tcp в конфигураторе ПЛК в строке состояния ошибки пишет - ошибка 84.
Модбас сканом удается считать регистры другого устройства.
Делали пустой проект с одним соединением по modbus tcp, все равно пишет ошибка 84.
Прошивка контроллера сейчас стоит 0.3.67.
Какие предпринять шаги для устранения данной проблемы?
Может быть обновить прошивку ?
Если обновить прошивку, то возможен ли даунгрейд прошивки ?
84 - проблемы с сокетами (например они кончились)
Тролль-наседка, добрый, нежный и ласковый
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk