Зависает или VISA или USB порт
-
- beginner
- Сообщения: 10
- Зарегистрирован: 26 фев 2012, 23:47
- Версия LabVIEW: 2010
- Контактная информация:
Зависает или VISA или USB порт
Добрый день!
Делаю устройство сбора данных. Цепочка устройств такая:
1. ПК
LabView->VISA COM->USB->
2. Вычислительный модуль
USB->FT232R->STM32F4->CAN
3. Датчик
->CAN->STM32F3
Датчик связан с вычислительным модулем через CAN шину длинной 2м. Вся связка на этапе отладки питается от USB портов компьютера (с внешним источником питания та же проблема).
Скорость передачи данных в COM порту 921кБит/с (снижение скорости проблему не решает).
Данные приходят строками длинной от 100 до 300 символов через 10 мс (100 раз в сек).
Для переходника USB->FT232R думаю что нормальная.
В LabView поступают данные (считывается строка по event -> termination char). Когда я начинаю шевелить датчик или даже прикасаться к нему, то получение данных в LabView ЗАВИСАЕТ. Если открыть COM порт в программе Terminal при шевелении датчика можно наблюдать пропадание одного или нескольких символов. Похоже что в это время зависает VISA в LabView.
Что можно сделать, чтобы LabView не зависала?
Прилагаю файлы проекта:
Делаю устройство сбора данных. Цепочка устройств такая:
1. ПК
LabView->VISA COM->USB->
2. Вычислительный модуль
USB->FT232R->STM32F4->CAN
3. Датчик
->CAN->STM32F3
Датчик связан с вычислительным модулем через CAN шину длинной 2м. Вся связка на этапе отладки питается от USB портов компьютера (с внешним источником питания та же проблема).
Скорость передачи данных в COM порту 921кБит/с (снижение скорости проблему не решает).
Данные приходят строками длинной от 100 до 300 символов через 10 мс (100 раз в сек).
Для переходника USB->FT232R думаю что нормальная.
В LabView поступают данные (считывается строка по event -> termination char). Когда я начинаю шевелить датчик или даже прикасаться к нему, то получение данных в LabView ЗАВИСАЕТ. Если открыть COM порт в программе Terminal при шевелении датчика можно наблюдать пропадание одного или нескольких символов. Похоже что в это время зависает VISA в LabView.
Что можно сделать, чтобы LabView не зависала?
Прилагаю файлы проекта:
-
Oleg B.
- leader
- Сообщения: 674
- Зарегистрирован: 25 сен 2011, 11:30
- Награды: 2
- Версия LabVIEW: 5 .. 2021
- Откуда: Israel
- Контактная информация:
Re: Зависает или VISA или USB порт
Мой USB->RS232 нормально работает до скорости 460800
на 921600 принимает мусор
на 921600 принимает мусор
Код: Выделить всё
скорость : передача -> приём
460800 : 500000055555550 -> 500000055555550
921600 : 500000055555550 -> ƒ‚ƒ‚ƒ‚ÿÿÿÿÿÿÿƒ
veni, vidi, phallomorphi
-
- beginner
- Сообщения: 10
- Зарегистрирован: 26 фев 2012, 23:47
- Версия LabVIEW: 2010
- Контактная информация:
Re: Зависает или VISA или USB порт
Дело не в мусоре. Вот что я получаю (записано в терминале):Oleg B. писал(а):Мой USB->RS232 нормально работает до скорости 460800
на 921600 принимает мусор
Код: Выделить всё
5212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49,827076 36,507050 0,15 97,90 21,75 113340,100 021112
5213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 /* потеряно часть строки */
/* и строки данных между 5214 и 5541 */
5541 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49,827065 36,507050 0,06 97,50 21,75 113343,500 021112
5542 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49,827065 36,507050 0,06 97,50 21,75 113343,500 021112
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Зависает или VISA или USB порт
В чем выражается зависание? Не отвисает VISA node или крутится бесконечный цикл, потому что as_IsData теряет синхронизацию?
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Oleg B.
- leader
- Сообщения: 674
- Зарегистрирован: 25 сен 2011, 11:30
- Награды: 2
- Версия LabVIEW: 5 .. 2021
- Откуда: Israel
- Контактная информация:
Re: Зависает или VISA или USB порт
А кабель не пробовал укоротить?Датчик связан с вычислительным модулем через CAN шину длинной 2м
Был у нас в лаборатории случай.
Программатор подключается к компьютеру USB кабелем, длина которого около 30 см.
Однажды по какой-то причине вместо этого кабеля использовали другой, 2-х метровый.
На длинном кабеле программатор даже не был опознан - компьютер его не "видит".
veni, vidi, phallomorphi
-
- beginner
- Сообщения: 10
- Зарегистрирован: 26 фев 2012, 23:47
- Версия LabVIEW: 2010
- Контактная информация:
Re: Зависает или VISA или USB порт
Не отвисает VISA Wait on Event. И далее не идёт чтение с ком порта.mzu2006 писал(а):Не отвисает VISA node или крутится бесконечный цикл, потому что as_IsData теряет синхронизацию?
Error: 0xBFFF0015 . VISA Wait on Event in as_imu_read.vi->as_main.vi
Кабель другой пробовал. Даже гальваническую развязку. не помогло.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Зависает или VISA или USB порт
происходит VISA timeout. Я рекомендую вместо events использовать корректную конфигурацию последовательного порта (терминаторы + прерываться по терминатору).
после VISA timeout можно попробовать сделать close/open, если это поможет, значит "отваливается" драйвер USB<->RS232
после VISA timeout можно попробовать сделать close/open, если это поможет, значит "отваливается" драйвер USB<->RS232
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Зависает или VISA или USB порт
Судя по вот этой фразе у вас проблемы с железом или с одним из МК: "Когда я начинаю шевелить датчик или даже прикасаться к нему, то получение данных в LabView ЗАВИСАЕТ". Первое что нужно сделать, это отвязать FT232R от STM32F4 и замкнуть FT232R на себя (в режиме эхо)- после этого проверить устойчивость связи в цепочке LabView->VISA COM->USB->FT232R. Если с этим проблем нет- проверяйте прошивки в своих МК, вполне возможно что у вас подвисает программа в МК (либо софтовая ошибка, либо аппаратная, например сбой тактирования)
-
- beginner
- Сообщения: 10
- Зарегистрирован: 26 фев 2012, 23:47
- Версия LabVIEW: 2010
- Контактная информация:
Re: Зависает или VISA или USB порт
Спасибо за совет. Я тоже грешу на ошибку тактирования, но FT232R. Пошёл разбираться.Konstantin Sumenko писал(а):Первое что нужно сделать, это отвязать FT232R от STM32F4 и замкнуть FT232R на себя (в режиме эхо)...
проверить устойчивость связи в цепочке LabView->VISA COM->USB->FT232R...(либо софтовая ошибка, либо аппаратная, например сбой тактирования)
-
- beginner
- Сообщения: 10
- Зарегистрирован: 26 фев 2012, 23:47
- Версия LabVIEW: 2010
- Контактная информация:
Re: Зависает или VISA или USB порт
Проблема оказалась в следующем. Виноват FT232R. Он поддерживает стандарт USB 1.1 Full speed. Следовательно, максимальный размер буфера отправки составляет 128 байт и пакеты по USB передаются через 10 ms. Передача пакета большей длинны приводит к потере конца пакета (чаще всего termination char), поэтому VISA и порождает ошибку Error: 0xBFFF0015 . VISA Wait on Event .
Для устранения проблемы буду пробовать ft2232d в режиме USB 2.0 High speed и свяжу с контроллером через SPI или I2C.
Спасибо за помощь и советы!
Для устранения проблемы буду пробовать ft2232d в режиме USB 2.0 High speed и свяжу с контроллером через SPI или I2C.
Спасибо за помощь и советы!
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Зависает или VISA или USB порт
FT232R по умолчанию работает в режиме 2.0 Full speed, 1.1 можно выставить принудительно при перепрошивке чипа. Далее, действительно при работе с USB-шными мостами подобного рода надо всегда держать в уме особенность реализации USB шины (кол-ва ендпоинтов на вход-выход, длины пакетов, тип передачи и настройки таймингов хоста (100мкс-1мс-10мс в зависимости от версии USB и скорости)), плюс размер буфера в FTDI. Помнится я гонял в одну сторону от FT на комп в непрерывном режиме с делением на пакеты (чтобы оптимально использовать встроенный буфер FTDI и передачу по USB) данные на скорости в 3мбит/с
-
- beginner
- Сообщения: 10
- Зарегистрирован: 26 фев 2012, 23:47
- Версия LabVIEW: 2010
- Контактная информация:
Re: Зависает или VISA или USB порт
Проанализировал даташиты
FT232RL длинна RX=128, TX=256 байт
FT2232D длинна RX, TX buffer по 128 байт
MCP2200 длинна RX, TX buffer по 128 байт
CP2102 длинна RX = 640, TX=576 байт, т.е. мне нужен адаптер на CP2102 или разбивать на пакеты по 127 байт, что я и собираюсь сделать на данном этапе.
FT232RL длинна RX=128, TX=256 байт
FT2232D длинна RX, TX buffer по 128 байт
MCP2200 длинна RX, TX buffer по 128 байт
CP2102 длинна RX = 640, TX=576 байт, т.е. мне нужен адаптер на CP2102 или разбивать на пакеты по 127 байт, что я и собираюсь сделать на данном этапе.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 4 Ответы
- 246 Просмотры
-
Последнее сообщение Embedder74
-
- 2 Ответы
- 662 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 622 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 485 Просмотры
-
Последнее сообщение Eugene543210