
Требование: У меня на Windows запущено программное обеспечение, которое взаимодействует с внешним устройством через порт RS232. Оборудование получает команды, отправленные с ПК, и отвечает ПК. При использовании простого кабеля между компьютером и оборудованием, без каких-либо адаптеров, передача и прием завершаются, скажем, за 50 мс. При использовании адаптера Ethernet-RS232 общее время связи составляет (50 + x) мс, с задержкой x мс.
В сети доступно множество продуктов, я просмотрел некоторые листы данных продуктов. Там была информация о параметрах Ethernet и последовательной связи, таких как биты данных, скорость передачи данных, скорость, но нигде я не мог найти информацию о задержке.
До сих пор Я использовал адаптер (макс. скорость передачи данных 230,4 кбит/с) для тестирования своего программного обеспечения, но столкнулся с исключением тайм-аута последовательного порта.
Вопрос
От каких критериев зависит эта задержка?
Зависит ли задержка от скорости передачи данных?
Что мне следует проверить в таблицах данных, чтобы определить (приблизительную) задержку?
Предоставляют ли производители информацию о задержке?
решение1
От каких критериев зависит эта задержка?
Я полагаю, что основными из них являются буферизация, кадрирование данных, передача, протокол и тайм-аут.
Как отметили другие комментаторы, как минимум у вас есть задержки трансляции протоколов. Вам нужно будет учесть буферизацию данных конечной точки и моста, перекодирование, накладные расходы протокола и время передачи. Задержка будет зависеть от того, буферизируется ли полный кадр данных перед передачей, и какими могут быть внутренние тайм-ауты. Их можно настроить в некоторых устройствах.
Это также будет зависеть от того, использует ли протокол Ethernet UDP, TCP или пользовательский протокол. Это будет зависеть от того, поддерживает ли протокол повторную передачу и добавляет ли он дополнительную информацию о целостности или сигнализации. Опять же, это можно настроить в некоторых устройствах. Не глядя, я бы предположил, что устройства низкого уровня будут склонны использовать UDP без какой-либо целостности или повторной передачи и склонны буферизировать полный кадр UDP данных с некоторым внутренним тайм-аутом для отправки частичного кадра, если поток данных останавливается.
Зависит ли задержка от скорости передачи данных?
Это действительно зависит от того, какую задержку вы измеряете. Разница в скорости последовательных данных, вероятно, повлияет на вашпропускная способностьболее значительно, чем вашзадержка. Да, это влияет на задержку, но имейте в виду, что при скорости 9600 бит/с передача байта занимает около 1 мс.
Что мне следует проверить в таблицах данных, чтобы определить (приблизительную) задержку?
Предоставляют ли производители информацию о задержке?
Мосты для промышленных приложений иногда предоставляют информацию о задержке и/или пропускной способности. Напримеродна такая страница продуктауказывает задержку в 2 мс. Также есть некоторые отчеты о спонсируемых компанией тестах, например, этотСравнение с конкурентами 2003 годаилиэтот отчет 2002 годакоторый сравнивает задержки для нескольких устройств. Задержки в их тесте варьируются от нескольких миллисекунд до 861 мс в среднем.
В любом случае, похоже, что ваша основная проблема заключается в тайм-ауте последовательного порта, а не в проблеме с задержкой. Из того немногого, что вы сказали, я предварительно подозреваю ошибку программного обеспечения или конфигурации. Обычно в библиотеке последовательного интерфейса указывается несколько тайм-аутов, таких как межбайтовое время, время многобайтового чтения и время записи. Также возникают ошибки переполнения буфера, если буферизованные данные не очищаются достаточно быстро. Как вы, возможно, знаете, вы обычно можете настроить или отключить каждый тайм-аут в вашем последовательном клиенте.
Я бы начал с определения источника ошибки. Вы также можете уменьшить скорость до 9600, поскольку дешевые адаптеры не всегда хорошо работают на своих номинальных максимальных скоростях.