Просмотр полной версии : SysSockGetLastError
Здравствуйте,
знающие люди, подскажите SysSockGetLastError вообще реализовано? Если реализовано, то как этим пользоваться?
Техподдержка сказала, что эта функция не поддержана. Жаль.
Обычно упоминают о каких моделях контроллеров идет речь. И напрашивается вопрос какие такие ошибки Вы хотите отлавливать применительно к плк. Для КДС2.3 код установки соединения и самой работы предельно прост, если что то идет не так просто не создается соединение с дальнейшим перезапуском, во время работы ни чего кроме отслеживания таймаута больше не надо. Для КДС3.х в самих функциях аргументом идет указатель на возвращаемую ошибку, которую потом можно посмотреть через библиотеку ошибок, там тоже бывает где то одна две ошибки, которые сообщают об очевидных вещах. Поэтому мне так не жаль что её нет, пользы от неё ноль
Сейчас меня интересует тема сокетов в cds2. Надеялся применить SysSockGetLastError для отслеживания состояния соединения. Ну нет, так нет.
если у Вас возникли проблемы с потерей соединения, то в большинстве случаев это период отправки данных в сеть более 10 секунд, соединение автоматически рвется
если у Вас возникли проблемы с потерей соединения, то в большинстве случаев это период отправки данных в сеть более 10 секунд, соединение автоматически рвется
Да вроде пока все хорошо. Стенд с 4 ПЛК* на выходные оставлял, связь не падает. После "сбоя" питания или "обрыва линии" связь восстанавливается.
* - для тестирования использовал Modbus TCP, ПЛК110-30 М01, ПЛК110-30 М02, и два ПЛК100
Gazdovsky
30.03.2019, 16:15
если у Вас возникли проблемы с потерей соединения, то в большинстве случаев это период отправки данных в сеть более 10 секунд, соединение автоматически рвется
Использую SysLibSockets. Обмен по UDP. Периодически сокет падает. Вопрос как узнать что сокет "протух" и открыть заново? Иногда по несколько недель работает и все ок, а иногда рушится каждые два дня и ПЛК превращается в тыкву. Помогает только перезагруз с отключением питания
если связь только в одну сторону, то ни как
Gazdovsky
30.03.2019, 16:45
если связь только в одну сторону, то ни как
Связь по UDP в обе стороны, но как это поможет?
Связь по UDP в обе стороны, но как это поможет?
Организуй счетчик и гоняй его значение по кольцу. Если то, что принимаешь перестало меняться, значит связь пропала.
Gazdovsky
30.03.2019, 17:35
Сегодня нагуглил вот такое:
l := SysSockRecvFrom(diSocket, pbyData, diDataSize, 0, ADR(sa), SIZEOF(sa));
IF l < 0 THEN
SysSockClose(socket);
socket := SOCKET_INVALID;
RETURN;
END_IF
Интересно, рабочий вариант? Если да, работает ли это и и для SysSockSendTo()?
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot