Проблема с VISA

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
MillyVolt
beginner
beginner
Сообщения: 11
Зарегистрирован: 23 мар 2016, 00:43
Версия LabVIEW: 2013

Re: Проблема с VISA

Сообщение MillyVolt »

Вот скрины настроек COM3 (есть ещё USB Serial Port в контроллерах USB, тоже относится к этому устройству)
Скрин2.jpg
Скрин1.jpg
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Проблема с VISA

Сообщение Blackman »

Здесь похоже конфликт между размерами буферов драйвера и VISA. Попробуй уменьшить входной буфер драйвера до 128 байтов.
MillyVolt
beginner
beginner
Сообщения: 11
Зарегистрирован: 23 мар 2016, 00:43
Версия LabVIEW: 2013

Re: Проблема с VISA

Сообщение MillyVolt »

Вот что получилось
Video.rar
(1.17 МБ) 168 скачиваний
Причём в 1й раз с самого начала после нажатия стоп на FP вылезла ошибка связи, но больше её не было и самые первые буквы были не "Д", а "D", штук 15, далее только "Д".
Попробую изменить байт, посылаемый с контроллера, интересно, поменяется ли буква.
Blackman писал(а): Да, по поводу ошибки Scan From String. В прошлый раз упустил из виду. что передача в бинарном формате. В этом случае лучше всего конвертировать строку в массив U8 при помощи функции Tape Cast .
Вот тут не очень понятно :)
dadreamer писал(а): А как он вообще происходит? У него стоит 4096 на входной и на выходной буфер. И в :labview: по дефолту 4096 задаётся, если иного не укажешь (VISA Set I/O Buffer Size). Может, обычное переполнение со стороны МК? То есть, МК пишет по 1 байту очень часто и буфер переполняется.
Почему очень часто? Скорость UART при инициализации задана 9600
Последний раз редактировалось MillyVolt 26 мар 2016, 17:34, всего редактировалось 3 раза.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Проблема с VISA

Сообщение dadreamer »

MillyVolt писал(а):то есть приходят пустые байты что-ли постоянно.
Ну, не пустые они, на самом деле.
MillyVolt писал(а):Программа на МК всё, что делает, это посылает по UART байт 0x001C.
Если Display Style переключить на HEX или \, то будет видно. Посмотрите снова тот же мой пример, я его чуть переделал. И нажимать Run Continuously не надо - это вредная кнопка, лучше юзать обычный Run. И Abort'ом не останавливайте - сессия VISA не закрывается при таком останове. Либо поставьте галку Tools -> Options -> Environment -> Automatically close VISA sessions.
Blackman писал(а):После первой же ошибки VISA Read уже не работает, так как на ее вход еггог in будет постоянно приходить ошибка из-за Shift Register, и VI будет "молотить" c максимально возможной скоростью нагружая проц.
Забыл ИЛИ вставить, чтоб по ошибке цикл вставал. Исправил.
Blackman писал(а):Здесь похоже конфликт между размерами буферов драйвера и VISA. Попробуй уменьшить входной буфер драйвера до 128 байтов.
А как он вообще происходит? У него стоит 4096 на входной и на выходной буфер. И в :labview: по дефолту 4096 задаётся, если иного не укажешь (VISA Set I/O Buffer Size). Может, обычное переполнение со стороны МК? То есть, МК пишет по 1 байту очень часто и буфер переполняется.
MillyVolt
beginner
beginner
Сообщения: 11
Зарегистрирован: 23 мар 2016, 00:43
Версия LabVIEW: 2013

Re: Проблема с VISA

Сообщение MillyVolt »

Теперь похоже на правду. Правда 1й раз опять ошибка эта обычная выскочила, но только один раз, и при перезапусках программы не было ошибок больше. (почему она всё-таки выскакивала?..)
2016_03_26_17_39_48_1920x1080.rar
(148.26 КБ) 167 скачиваний
С4 - то же самое показывает терминальная программа, а "Д" - тот же символ в ANCII
Вернул параметр порта обратно, на 4096, всё работает также, ошибок пока не было.

В вашей программе для меня много непонятного, буду разбираться.
Почему изначально пример, по которому я повторил программу не заработал? Он вообще может заработать в таком виде?
Последний раз редактировалось MillyVolt 26 мар 2016, 17:58, всего редактировалось 1 раз.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Проблема с VISA

Сообщение dadreamer »

MillyVolt, у вас контроллер-то непрерывно данные "шлёпает"? Или вы его останавливаете? Попробуйте сперва запустить прогу в :labview: , а только потом уже запустить контроллер на передачу данных. Интересно, будет ли ошибка.
MillyVolt
beginner
beginner
Сообщения: 11
Зарегистрирован: 23 мар 2016, 00:43
Версия LabVIEW: 2013

Re: Проблема с VISA

Сообщение MillyVolt »

Да, МК передаёт непрерывно данные при включении. Сделаю передачу от нажатия кнопки, отпишусь)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Проблема с VISA

Сообщение dadreamer »

MillyVolt писал(а):Да, МК передаёт непрерывно данные при включении. Сделаю передачу от нажатия кнопки, отпишусь)
Ну, вот, пока у вас прога в :labview: не запущена, а контроллер шлёт данные, буфер и переполняется время от времени, так как некому его разгребать. Нужно либо вводить синхронизацию по некоторому признаку, либо тупо чистить буфер перед началом работы (если не жалко накопленные данные).
MillyVolt писал(а):Почему изначально пример, по которому я повторил программу не заработал? Он вообще может заработать в таком виде?
Не совсем в таком виде. Там инструмент ожидает число в строковом виде на входе. А пока что у вас идут от МК не числа, а непонятно что. Как только установите фиксированный протокол обмена (с собственной структурой), тогда начнёте парсить строку в :labview: согласно этому протоколу.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»