Скорость обмена с пультом

FORUM_NAME: Прочие преобразователи
Модератор: Модераторы

Уважаемые пользователи! В связи с отсутствием возможности оплачивать хостинг сайта и отсутствием материальной помощи от пользователей, Форум вынужден будет прекратить работу с Марта месяца 2024 года!.


Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #1 Phoenix » 04.10.2013, 09:01

Добрый день.
Ради интереса померил скорость обмена компьютера с пультом С2000М в linux и windows при разных вариантах подключения пульта к компьютеру:

    Windows XP
  • COM_________ - на скорости 9600: 71,3 обменов в секунду; на скорости 19200: 134,4 обменов в секунду;
  • USB-RS232____ - на скорости 9600: 62,5 обменов в секунду; на скорости 19200: 62,5 обменов в секунду;
  • С2000-Ethernet - на скорости 9600: 50,5 обменов в секунду; на скорости 19200: 78,3 обменов в секунду.

    Linux (kernel 3.10.9)
  • COM_________ - на скорости 9600: 71,2 обменов в секунду; на скорости 19200: 133,3 обменов в секунду;
  • USB-RS232____ - на скорости 9600: 92,4 обменов в секунду; на скорости 19200: 166,7 обменов в секунду;
  • С2000-Ethernet - на скорости 9600: 40,5 обменов в секунду; на скорости 19200: 62,9 обменов в секунду.

Преобразователь С2000-Ethernet в linux работает медленнее чем в windows предположительно из за излишней буферизации в linux.
Преобразователь USB-RS232 в window на скоростях порта 9600 и 19200 работает одинаково по непонятной причине, причем в linux он рекордсмен по количеству обменов в секунду. Драйвера для него пробовал и старые и новые - без изменений. У кого-нибудь есть предположения почему так происходит?

Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #2 Phoenix » 04.10.2013, 14:44

Нашел причину медленной работы преобразователя USB-RS232 в windows. В диспетчере устройств в свойствах порта есть такой параметр "Время ожидания (мсек):". Ниже приведены измерения для разных значений этого параметра, в виде: (параметр) - (значение при скорости 9600) - (значение при скорости 19200).

t(мс)-9600 - 19200
14 - 71,5 - 71,5
12 - 83,2 - 83,4
11 - 84,5 - 85,1
10 - 51,8 - 100,0
09 - 55,6 - 111,1
08 - 62,5 - 125,0
04 - 83,4 - 125,0

Для скорости 9600 оптимальное значение параметра 12, для 19200 - 8.

Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #3 Phoenix » 04.10.2013, 15:11

Думал что нет смысла устанавливать параметр меньше 4 (раз по умолчанию он аж 16), но ради интереса провел измерения:
t(мс)-9600 - 19200
2 - 84,0 - 154,5
1 - 87,9 - 149,2

Нужно еще провести тест на стабильность работы в долговременном режиме. Пока лучше остановиться на параметрах 12 для 9600 и 8 для 19200.

AlexRuden
AlexRuden
Возраст: 46
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 12 лет 2 месяца
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #4 AlexRuden » 04.10.2013, 15:25

А к чему всё это?
Пульту нужно время для подсчета CRC принятой команты и отправляемой тоже, да и всякие внутренние задержки в алгоритме работы пульта. Какова ни была скорость , пауза между командами боле-мене стабильная, примерно 11-12 мс. По умолчанию в пульте и софтах Болида выставлено 30 мс, для надёжности.
Курите man'ы , господа.

Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #5 Phoenix » 04.10.2013, 15:42

Статистика дает возможность замечать проблемы. Преобразователь USB-RS232 в linux так работает "по умолчанию" (без доп настроек). Вот и возник интерес почему он так работает в windows.

Пульту нужно время для подсчета CRC принятой команты и отправляемой тоже...
Я с этим и не спорю. Он прекрасно успевает все это сделать. Количество обменов измерялось между работающим пультом и программой, а не гипотетически.

Добавлю.
"Разгон" осуществляет пульт, а не программа. Если пульт не отвечает, программа какое-то время не посылает следующий запрос.

Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #6 Phoenix » 04.10.2013, 16:14

AlexRuden, мне кажется вы не о тех задержках подумали. Параметр "Время ожидания (мсек):" это не настройки в реестре параметра порта для Ориона. Это настройки драйвера порта, то как долго он будет ждать окончания пакета и держать данные в своем промежуточном буфере. Например в преобразователе Moxa тоже нужно настраивать аналогичные задержки чтобы он корректно заработал.

Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #7 Phoenix » 04.10.2013, 16:27

Ё-мое, это в инструкции к USB-RS232 черным по белому написано:
В дополнительных свойствах «USB Serial Port (COM x)» можно изменить номер СОМ-порта. Буфер приёма и передачи выберите 256 байт, время ожидания установите 1 мкс. Сохраните изменённые параметры.
;;-)))

Я давно уже не читал инструкции на такие простые преобразователи. Думаю наши наладчики никогда этого не делали :-) Жаль драйвер не настраивает это автоматически.

Phoenix M
Автор темы
Аватара
Phoenix M
Автор темы
Возраст: 42
Репутация: 108
Сообщения: 579
Зарегистрирован: 21.09.2012
С нами: 11 лет 6 месяцев
Профессия: Проектировщик
Откуда: Пятигорск

Непрочитанное сообщение #8 Phoenix » 21.05.2016, 23:17

Добавлю статистику для USB-RS232 (производства Болид) на разных микросхемах при работе в Linux (kernel 4.4.9).

USB-RS232 (FTDI FT232RL) - на скорости 9600: 92,9 обменов в секунду; на скорости 19200: 166,8 обменов в секунду;
USB-RS232 (Exar XR21B1411) - на скорости 9600: 99,8 обменов в секунду; на скорости 19200: 196,5 обменов в секунду;

Exar заработал со встроенным в ядро драйвером, правда чтобы он заработал в таком режиме, пришлось этому преобразователю вправить мозги (изменить регистры).


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Прочие преобразователи»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость

forum-bolid.ru : Отказ от ответственности