Показано с 1 по 6 из 6

Тема: Socket и ПЛК

  1. #1

    По умолчанию Socket и ПЛК

    Доброго времени суток.

    Пишу реализацию протокола поверх TCP/IP, использую SysLibSockets.
    Возникает несколько вопросов:
    Пока идет просто передача "неосмысленных" пустых пакетов без парсинга содержимого.
    ПЛК является сервером, ПК - клиентом, отправляю пакеты запроса 30 Кб с ПК на ПЛК, получаю ответы 30 Кб обратно.
    1. Максимальный объем принимаемых за 1 вызов SysSockRecv равен 512 Кб? можно ли увеличить этот объем?
    2. Максимальный объем передаваемых SysSockSend 1536 Кб? Аналогично, можно ли больше?
    3. Скорость обмена ПЛК - ПК через Ethernet выходит не более 100-200 Кбит/с, это нормальная скорость или можно сделать быстрее?
    4. Помимо реализации протокола поверх TCP на этом же контроллере идет прием широковещательных пакетов с двух других ПЛК по UDP (Ваша стандартная реализация). Может ли UDP мешать работе сокета?
    5. Можно в SysSockListen(socket, 1); использовать 2 и более соединения?
    6. Как определить IP-адрес присоединившегося к сокету клиента?, в структуре SOCKADDRESS его вроде не проявляется.
    7. ПЛК 304/308 уже в продаже? как у них обстоят дела с Ethernet?

  2. #2

    По умолчанию

    все-таки хотелось бы чтобы тех.поддержка овен ответила

  3. #3

    По умолчанию

    Цитата Сообщение от o_nik Посмотреть сообщение
    Доброго времени суток.

    Пишу реализацию протокола поверх TCP/IP, использую SysLibSockets.
    Возникает несколько вопросов:
    Пока идет просто передача "неосмысленных" пустых пакетов без парсинга содержимого.
    ПЛК является сервером, ПК - клиентом, отправляю пакеты запроса 30 Кб с ПК на ПЛК, получаю ответы 30 Кб обратно.
    1. Максимальный объем принимаемых за 1 вызов SysSockRecv равен 512 Кб? можно ли увеличить этот объем?
    512 Кб о_О???? Столько памяти в программе CoDeSys нету...

    Цитата Сообщение от o_nik Посмотреть сообщение
    2. Максимальный объем передаваемых SysSockSend 1536 Кб? Аналогично, можно ли больше?
    Нельзя. Но можно вызвать функцию 2 раза
    Цитата Сообщение от o_nik Посмотреть сообщение
    3. Скорость обмена ПЛК - ПК через Ethernet выходит не более 100-200 Кбит/с, это нормальная скорость или можно сделать быстрее?
    Нельзя, ПЛК предназначен для регулирования, Ethernet - вспомогательная функция и приоритет её низок. Опять же, откуда Вы берете 200Кбит/с данных?
    Цитата Сообщение от o_nik Посмотреть сообщение
    4. Помимо реализации протокола поверх TCP на этом же контроллере идет прием широковещательных пакетов с двух других ПЛК по UDP (Ваша стандартная реализация). Может ли UDP мешать работе сокета?
    какого сокета? 1 соединение-1 сокет. Число сокетов ограничено. Для сетевых переменных затят 1 UDP сокет (если их включили). Для CoDeSys занят 1 TCP сокет всегда.
    Цитата Сообщение от o_nik Посмотреть сообщение
    5. Можно в SysSockListen(socket, 1); использовать 2 и более соединения?
    Нет. 1 соединение-1 сокет. Число сокетов ограничено. Никакого произвольного распределения ресурсов. Хотите 5 соединений - сообщите об этом контроллеру явно. Чтобы в "ответственный" момент сокетов "вдруг" не оказалось меньше требуемых соединений.
    Цитата Сообщение от o_nik Посмотреть сообщение
    6. Как определить IP-адрес присоединившегося к сокету клиента?, в структуре SOCKADDRESS его вроде не проявляется.
    использовать функцию SysSockRecvFrom - в поле pSockAddr возвращается адрес и порт клиента.

    [QUOTE=o_nik;28902]


    7. ПЛК 304/308 уже в продаже? как у них обстоят дела с Ethernet?
    Нет. Есть 2 порта Ethernet в наличии.

  4. #4

    По умолчанию

    512 Кб о_О???? Столько памяти в программе CoDeSys нету...
    Ошибся, 512 байт и 1536 байт, естественно, я имел в виду
    Опять же, откуда Вы берете 200Кбит/с данных?
    Примерно прикинул скорость "на глазок" (тем более Кбит, а не Кбайт)

    Остальное понятно, спасибо.

  5. #5

    По умолчанию

    прочитать за раз можно тоже не более 1536, т.к. это максимальный размер 1 пакета. но и эту функцию можно вызвать 2 раза

    я имел в виду не измеренную на глазок скорость, так и есть, а потребность в ней. 200кбит/с еще надо умудрится сгенерить.

  6. #6

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    прочитать за раз можно тоже не более 1536, т.к. это максимальный размер 1 пакета. но и эту функцию можно вызвать 2 раза

    я имел в виду не измеренную на глазок скорость, так и есть, а потребность в ней. 200кбит/с еще надо умудрится сгенерить.
    1.
    А вот у меня никак не получается прочитатьбольше чем 492 байта в одной посылке!
    Нет ли у вас примерчика проектов где это получилось сделать?
    2.
    Если вызвать функцию чтения 2 раза, то если я хочу получить 3000 байт,
    нкжно первым вызовом прчитать первые 1500 байт , а вторым оставшиеся 1500 байт?
    C каим флагом в таком случае нужно вызывать функцию ?

Ваши права

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