Как устранить неполадки / тестировать / тестировать USB-концентратор (Концентраторы действуют как бутылочное горлышко ... Почему ??)

758
Mike

Я использую Ubuntu 14.04 LTS и некоторые необычные устройства с последовательным интерфейсом, которые используют конвертеры последовательного интерфейса в USB.

Я не могу подключить несколько медленных устройств (преобразователь RS232 в USB 2.0, преобразователь RS422 в USB 2.0 и другое устройство USB 2.0) в концентратор 3.0 без сбоя моего приложения из-за отсутствия входящих сообщений. Однако, если все устройства подключены непосредственно к ПК, все работает. Не могли бы вы объяснить, почему это происходит? Пожалуйста, продолжайте читать для деталей ...

Я купил USB-концентратор 3.0 производства Orico. Он имеет 4 порта и питается от USB-порта, к которому он подключается.

Я подключил 2 последовательных преобразователя (с устройствами для общения) и одно устройство USB к нему. Вот подробности:

  • От RS422 до USB (2.0) - настроен как / dev / ttyUSB0 на 500 000 8N1.
  • RS232 - USB (2.0) - настроен как / dev / ttyUSB1 в 115200 8N1.
  • Устройство USB 2.0 (Labjack U3, система ввода-вывода общего назначения ... собирает нажатые кнопки и т.п. ...).

Я наблюдал какое-то очень странное поведение, которое стоило мне двух 14-часовых дней высокого турбо-стресса, пока я не понял, что проблема в концентраторе.

«Плохое» поведение USB Hub, которое заняло некоторое время, чтобы обнаружить:

  • когда был подключен только RS232 к USB, последовательное устройство, с которым я общался, получало все данные, которые отправлял ПК, но все ответы от устройства отбрасывались концентратором (или, точнее, отбрасывались до тех пор, пока хаб был использован).
  • Когда были подключены два устройства (Labjack USB 2.0 Device + RS422 - USB 2.0), все работало (сообщения с обоих устройств поступали на ПК с хорошей скоростью). Если преобразователь RS232 в USB был подключен, в то время как два других устройства уже были подключены, все было в порядке, и я мог настроить порт RS232. Однако, как только последовательное устройство, подключенное к RS232, было включено и начало посылать «сообщения», приложение, работающее на ПК, зависало с ошибкой, указывающей, что ему не хватало сообщений от устройства RS422 (которые должны поступать через USB-порт). концентратор). Это произойдет в течение 5 секунд после включения (включения) последовательного устройства, которое было подключено к преобразователю RS232 в USB.

Некоторое время я был озадачен ... пока я не удалил USB-концентратор и не подключил все устройства непосредственно к ПК ... тогда все стало работать как чудо.

Не могли бы вы объяснить, почему это происходит? Кроме того, не могли бы вы предложить некоторые инструменты или методику, которая поможет мне точно определить, что происходит с сетью USB?

Мне нужен концентратор для переноса всех последовательных данных, которые преобразуются в сообщения USB на ПК без узкого места; и когда мы считаем, что последовательные скорости моих устройств RS232 и RS422 настолько медленные (по сравнению с USB ... не мои скорости устранения неполадок ...), я подумаю, что любой концентратор подойдет. Обнаружив эту проблему, мне любопытно, почему концентратор со скоростями, намного более быстрыми, чем устройства, подключенные к нему, действует как горлышко бутылки.

Пожалуйста, имейте в виду, что концентратор не является (вероятно, неисправным) ... Он отлично переносит данные; пока он не встретит 2 последовательных преобразователя и одновременно подключенное USB-устройство, и в этот момент его скорость (или, возможно, напряжение) сбивает моего робота.

################# EDIT # 1

Я подозревал, что падение напряжения вызывает проблему, поэтому я использовал концентратор 2.0 USB 7 с питанием, и результаты были такими же! Приложение перестает получать сообщения, как только все 3 устройства начинают отправлять сообщения.

########################################### EDIT # 2

Если я подключаю устройство RS422 непосредственно к ПК, а устройства USB RS232 и Labjack - к USB-концентратору (а затем к USB-концентратору - в ПК), Labjack U3 выходит из строя с ошибкой.

Означает ли это, что концентратор USB не может передавать данные, передаваемые ему двумя последовательными устройствами и одним устройством USB, со скоростью, с которой приходят сообщения? Это звучит очень странно.

Если я могу предоставить больше информации, пожалуйста, дайте мне знать. Заранее спасибо.

2
Некоторые "Орико" делают только печатные платы и пластмассы для ступиц. Какая микросхема контроллера концентратора находится внутри коробки? Об этом следует сообщать с помощью дескрипторов и отражать в журналах. Что это? Ale..chenski 6 лет назад 0
@ Али Чен, это веб-страница для продукта: http://www.orico.cc/goods.php?id=6056; они заявляют, что используют чип Via USB3.0. Какую команду Linux можно запустить, чтобы получить лучший дескриптор? Mike 6 лет назад 0
Если вы работаете с Linux, вы сможете создавать журналы ядра с некоторыми фильтрами, связанными с USB. Как? У меня очень мало идей. Вам не нужна лучшая команда, если продукт говорит, что это VIA. VIA это хорошо. Поэтому ваше программное обеспечение глючит. Если вы действительно хотите его отладить, вам нужен хороший анализатор протоколов USB с режимом HS, чтобы понять, почему «все ответы были отброшены концентратором», фактически два из них, на обоих концах концентратора. Невозможно, чтобы "все" были отброшены. Вероятно, у вас есть какая-то ошибка в каналах чтения. Ale..chenski 6 лет назад 0
Кроме того, ваши конвертеры действительно для USB 2.0 (режим HS, 480 Мбит / с), или стандартного типа FTDI только с протоколом FS? «LabJack» указан как режим FS. Какие другие? Кроме того, если концентратор VL811 / 12/13, он имеет только один TT, как я понял на сайте VIA. Один TT для 0.5Mbaud плюс другие потоки будут облагаться налогом. Ale..chenski 6 лет назад 0
Орико говорит, что это VL812. Вы купили не тот концентратор для этой работы. Ищите концентраторы "multi-TT", USB 2.0 будет достаточно для этой работы. Ale..chenski 6 лет назад 0
@ Али Чен, спасибо, что объяснили мне это. После более подробного изучения я понял, что один из драйверов Linux дает сбой. Вы были правы, это был не USB-концентратор. Спасибо! Mike 6 лет назад 0

1 ответ на вопрос

2
Ale..chenski

Устройства RS232 обычно являются устройствами FS, а протокол USB работает на скорости 12 Мбит / с. При подключении к концентратору USB2 или USB3 связь осуществляется через специальный коммуникационный процессор, называемый «Transaction Translator» или «TT», который встроен в каждый USB-концентратор. Существует два вида концентраторов: те, которые имеют только один TT для всех портов, и те, которые имеют индивидуальные TT для каждого нисходящего порта.

Если к одному концентратору с одним TT подключено несколько устройств FS, ресурс буферизации будет исчерпан, а пропускная способность FS (12 Мбит / с) будет распределена между подключенными устройствами. Чтобы получить полную полосу пропускания FS для каждого нисходящего соединения, вам необходимо иметь так называемый концентратор «Multi-TT».

Кроме того, обработка транзакций FS через TT требует специального подхода на стороне хоста, который называется «разделенные транзакции».

Современные компьютеры имеют встроенную поддержку FS через хост-контроллеры XHCI (USB 3.0), поэтому прямое соединение естественным образом обрабатывается драйвером XHCI. Старые компьютеры имеют поддержку FS внутри своего оборудования и мультиплексные порты для более старых контроллеров OHCI или UHCI, поэтому они также имеют прямую поддержку скорости трафика FS.

Однако, если промежуточный узел находится между ними, трафик FS должен обрабатываться методом разделения транзакций, который основан исключительно на программном обеспечении. Правила разделения ужасно сложны и охватывают около 150 страниц спецификаций USB. Если у вашего драйвера робота плохая (или нет) поддержка разделения транзакций, устройства FS и LS не смогут работать за концентратором, особенно если таких устройств много.

Дополнение: Концентратор Orico использует микросхему контроллера VL812, которая имеет только один TT в тракте HS. С (предположительно, FS) устройством 422-USB, настроенным на 500 000 бод и другими устройствами FS, у него, скорее всего, не осталось пропускной способности, и у хоста есть проблемы с планированием транзакций и помехами в чем-то.