Перейти к содержанию
    

W5500, фрагментация пакета

9 minutes ago, k155la3 said:

Я бы посмотрел серверную часть. Потому как есть вероятность что идут очень частые запросы на клиента по каналу управления. 

И они "не сторговались" в этой части. Или вообще проблема не в W5500 а в работе софта-сервера (настройки).

Серверная часть- это Винда 7. Этот каркас сервера уже несколько раз использовался в проектах с другими контроллерами, тем удивительней для меня столкнуться с такой проблемой. Куда рыть- не понятно.

2 minutes ago, tonyk_av said:

Серверная часть- это Винда 7. Этот каркас сервера уже несколько раз использовался в проектах с другими контроллерами, тем удивительней для меня столкнуться с такой проблемой. Куда рыть- не понятно.

А как они должны были "сторговаться"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, tonyk_av said:

Серверная часть- это Винда 7. Этот каркас сервера уже несколько раз использовался в проектах с другими контроллерами, тем удивительней для меня столкнуться с такой проблемой. Куда рыть- не понятно.

Я не забыл, что выше было сказано (с остальными нормально). На этапе установления соединения сервер должен "договорится" с клиентом. С "другими контроллерами" он договорился успешно (потомукак они другие, а не W5500). Надо бы промониторить трафик на этапе установления соединения для "нормального" контроллера и в случае W5500 (канал управления)

ps (повтор) по каналу передаются пакеты Modbus ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, k155la3 said:

Я не забыл, что выше было сказано (с остальными нормально). На этапе установления соединения сервер должен "договорится" с клиентом. С "другими контроллерами" он договорился успешно (потомукак они другие, а не W5500). Надо бы промониторить трафик на этапе установления соединения для "нормального" контроллера и в случае W5500 (канал управления)

ps (повтор) по каналу передаются пакеты Modbus ?

Тех контроллеров у меня уже давно нет, работают на объектах.

Каркас сервера в своё время делался для работы как раз с Модбас. Был зоопарк разных контроллеров, поэтому я написал каркасы сервера и клиента. Собирал их в разных вариантах для тестов. Тогда всё сходу завелось и заработало. А тут затык, и не понятно куда рыть.

Just now, tonyk_av said:

Надо бы промониторить трафик на этапе установления соединения для "нормального" контроллера и в случае W5500 (канал управления)

А что это даст? Вроде, и так видно, что 5500 пилит сообщение и повторяет отправку, хотя его никто явно не просит это делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, tonyk_av said:

. . . Каркас сервера в своё время делался для работы как раз с Модбас. Был зоопарк разных контроллеров, поэтому я написал каркасы сервера и клиента. Собирал их в разных вариантах для тестов. Тогда всё сходу завелось и заработало. А тут затык, и не понятно куда рыть.

А что это даст? Вроде, и так видно, что 5500 пилит сообщение и повторяет отправку, хотя его никто явно не просит это делать.

C "зоопарком" понятно, сам нечто подобное до(раз)рабатывал, делал перенос системы с USART/GSM/итд физ. уровня на распределенную корп. интранет. Я пользовал UDP. В качестве клиентов были конверторы (Ethernet-->RS485) на базе PC104 (QNX). Умышленно не использовал TCP из-за сложности с "пакетизацией".

А чем делались дампы (то что скрины выше) с трафиком ?

>> Что даст 

Возможно отрицательный результат, но это тоже результат. Хотя есть шанс и на положительный.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, k155la3 said:

А чем делались дампы (то что скрины выше) с трафиком ?

Wireshark 1.10

Свежие версии не хотели работать, а эта легко и без вопросов завелась.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы косвено (методом исключения) удостоверился, что виноват именно W5500, а не софт/настройка серверной части и "ньюансы" TCP.

Для этого из "сервера" сделал бы эмулятор "клиента" или просто "ответчик" для проверки корректности передачи информации (без дробления) которую Вы запланировали. Лучше - физически соединить 2 PC (клиент-сервер). Хотя можно попробовать и через 127.0.0.1 сделать локально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, k155la3 said:

Я бы косвено (методом исключения) удостоверился, что виноват именно W5500, а не софт/настройка серверной части и "ньюансы" TCP.

Для этого из "сервера" сделал бы эмулятор "клиента" или просто "ответчик" для проверки корректности передачи информации (без дробления) которую Вы запланировали. Лучше - физически соединить 2 PC (клиент-сервер). Хотя можно попробовать и через 127.0.0.1 сделать локально.

Это уже сделано и очень просто. Терминал переводится в RAW-режим и настраивается на отправку целой строки, а не каждого символа. При таком способе дробления строки нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, aaarrr said:

Те же аккуратные 10мс между исходящими пакетами.

Завтра ещё раз посмотрю осциллографом ноги у 5500. Может, где-то чё-то осталось, что дёргает ноги у 5500, вот он и дурит. Мне тут приходится прикручивать к проекту на ХАЛ свои наработки, возможно, где-то чё-то не доглядел, глаз замылился и на, получите-распишитесь.

Я же помню, что года 3 назад, когда щупал 5500, у меня сообщения нормально передавались.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался с фрагментацией. Ошибка была у меня, причём на стороне сервера, работающего под Виндой.

Вот описание буферов:

        char
            *inputMessage,
            *outputMessage;

        uint16  
            sizeOfInputMessage,
            sizeOfOutputMessage;

Вот так получал сообщение:

// Получаю данные от клиента.
clientSockErr = \
    recv( clientSock, inputMessage, sizeof( inputMessage ), 0 );

А вот так должен был:

// Получаю данные от клиента.
clientSockErr = \
    recv( clientSock, inputMessage, sizeOfInputMessage, 0 );

Спасибо Ирине Ким с сайта Wiznet, котороя обратила моё внимание на то, что с сервера уходят подтверждения получения на части пакета от клиента, а не на весь пакет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, tonyk_av сказал:

. . . что с сервера уходят подтверждения получения на части пакета от клиента, а не на весь пакет.

Уходят подтверждения о получении n-байт из приемной очереди. Никаких "пакетов" как небыло, так и нет.

То что Вы называете "пакетом" - последовательность байт положенная или считанная в/из буфера потока. Стоит там затесаться или пропасть одному байту и вся "пакетная" синхронизация между клиентом и сервером теряется. Это будет не ошибка стека TCP. К примеру, Вы забыли синхронизировать размер Вашего "пакета" на клиенте и сервере после изменений в софте. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...