Страница 98 из 121 ПерваяПервая ... 488896979899100108 ... ПоследняяПоследняя
Показано с 971 по 980 из 1205

Тема: Обновленный ПЛК110?

  1. #971

    По умолчанию

    для TSDA - перед вызовом Accept для сервера, либо Connect для клиента, сокет нужно перевести в неблокирующийся режим -

    RES := SysSockSetOption( SOCK, SOCKET_SOL, SOCK_NBIO, 0, 0 ); (* ÏÅÐÅÂÅÑÒ&# 200; ÑÎÊÅÒ Â ÍÅÁËÎÊÈÐ&# 211;ÞÙÈÉÑß ÐÅÆÈÌ *)

    до прошивки 0.43 - сокеты овена работали только в неблокирующихся режимах, без дополнительных настроек, а теперь они сделали более глубокое соответствие стандартам.

    По второму вопросу - пока вы отлаживаете проект - не делайте загрузочный образ, тогда при собаке вы получите остановку ПЛК (но память конечно все равно слетит), если проект отлаженный - то собака - способ выйти из случайной ошибки алгоритма и восстановить работоспособность установки. циклическая перезагрузка - грубая ошибка программиста и вряд ли это нужно патентовать )))

    а примера не было, было только упоминание о данном факте, без описания ужасов связанных с блокирующимися режимами в концепции ПЛК
    Последний раз редактировалось Дмитрий Артюховский; 15.01.2016 в 12:47.

  2. #972
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Вот лог сниффера с проблемой большого (>255 bytes) пакета.
    101.71 - PLC110-30-24L с последней прошивкой.
    101.111 - Сервер под Win
    Один пакт (№8 в сниффере, 9.0972) проходит нормально
    следующий большой не проходит и далее все пакеты не идут.
    Вложения Вложения
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  3. #973

    По умолчанию

    Хм. PLC посылает аск на сегмент 1 и свой сегмент №13
    И в ответ получает аск на сегмент 13 (правильно) и сегмент от ПК №17???

    Т.к. 17-1=16> размера окна (3 или 4 пакета), то он естественно пишет в ответ предыдущие сегменты не получены.
    Причем этих пакетов в сети не наблюдается.
    Тут ПК уже 28 сегмент шлёт и понеслось.
    Что-то тут не так.

    Проектик и ПО для ПК то можно увидеть?

    P.S. И где тут пакеты больше 255 байт?
    Тролль-наседка, добрый, нежный и ласковый

  4. #974

    По умолчанию

    во вложении кусок кода сервера
    RCV_SND_BUF[ 4 ] = 22 - метка "длинного" пакета, если его длина 255 ( пробовал и 220 - тоже глухо ) - то детектор не срабатывает, ставишь длину пакета 200 - проходит... остальные пакеты короче - 100 и 60 байт проходят
    Вложения Вложения

  5. #975

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    во вложении кусок кода сервера
    (* размер буфера должен быть не менее чем в 4 раза больше чем MSS - типовое значение 8192 *) - Это откуда? Размер буфера MTU+40, MTU=1500. Все что больше - благие пожелания.
    А MSS=MTU-40

    Окно размером с буфер. Так что даже чтение по 1536 не имеет смысла


    IF RCV_SND_BUF[ 4 ] = 22 THEN
    DET22 := DET22 + 1;
    END_IF
    Метка то есть, а где в сети пакеты больше 255 байт?
    Самый большой пакет 65 байт?!
    А передача вообще по 10 байт данных, т.е. тоже мало.
    Последний раз редактировалось Филоненко Владислав; 18.01.2016 в 13:15.
    Тролль-наседка, добрый, нежный и ласковый

  6. #976

    По умолчанию

    пакет с этой меткой (22) и имеет длину 255 байт, а вот где он в "сети" я у вас и спрашиваю ))) на 0.2.53 все передавалось - разница в том что accept не блокирующимся был

    а про буфер где в описании канонических сокетов вычитал - не вдаваясь в подробности установил рекомендуемый, предположив что система ставит маленький MTU, разбивает отправку на маленькие пакеты, а при сборке косячит где-то...

    по идее, буфер то должен вмещать много пакетов, чтобы обеспечить очередь, а также сборку и хранение, возможно не синхронно полученных сегментов одного пакета

  7. #977

    По умолчанию

    SND_CNT := SysSockSend( SOCK_ACC, ADR( SEND_BUFFER[ 0 ] ), 10, 0 ); И где тут 255 байт? Или это не тот код?
    В 9 пакете нет числа 22 в 4(5) байте. Т.е. пакет до ПЛК просто не дошёл.
    Тролль-наседка, добрый, нежный и ласковый

  8. #978

    По умолчанию

    на ПЛК поднят СЕРВЕР. Клиент (компьютер) посылает ему пакеты разной длины. ПЛК принимает ( FASE_OBMEN = 0 ) и обрабатывает пакеты ( FASE_OBMEN = 1 ) и посылает ответ в 10 байт ( FASE_OBMEN = 2 ). Ну так вот - пакет с меткой 22 и длиной 255 байт (пробовал еще 220) не появляется в обработчике, хотя клиент его отправляет. 200 байт уже проходят.

  9. #979

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    на ПЛК поднят СЕРВЕР. Клиент (компьютер) посылает ему пакеты разной длины. ПЛК принимает ( FASE_OBMEN = 0 ) и обрабатывает пакеты ( FASE_OBMEN = 1 ) и посылает ответ в 10 байт ( FASE_OBMEN = 2 ). Ну так вот - пакет с меткой 22 и длиной 255 байт (пробовал еще 220) не появляется в обработчике, хотя клиент его отправляет. 200 байт уже проходят.
    Итак с компьютера должен приходить пакет размером более 255 байт. Не так ли?
    Покажите мне этот мифический пакет размером в 255 байт? Где он в снифере то? На что смотреть?
    Тролль-наседка, добрый, нежный и ласковый

  10. #980
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Вот мини-сервер и часть кода для ПЛК... (нужен питон v3)

    Дмитрий, выложите пожалуйста лог сниффера где проявляется проблема.

    P.S. И где тут пакеты больше 255 байт?
    Следующий после хорошего должен быть. Но он уже не доходит. Всё рушится на нём.

    ЗЫ: раньше работало
    Вложения Вложения
    Последний раз редактировалось _Pavel_; 18.01.2016 в 20:41.
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

Страница 98 из 121 ПерваяПервая ... 488896979899100108 ... ПоследняяПоследняя

Похожие темы

  1. приобрел обновленный плк110
    от Ruffian в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 04.12.2009, 12:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •