2

Я использую 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, со скоростью, с которой приходят сообщения? Это звучит очень странно.

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

1 ответ1

2

Устройства 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, у него, скорее всего, не осталось пропускной способности, и у хоста есть проблемы с планированием транзакций и помехами в чем-то.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .