Перейти к содержанию
    

Remote controlling power supply by VISA library

Здравствуйте, хотелось бы найти человек который сможет помочь с решением вопроса. За две недели накипело... Буду крайне благодарен за помощь

Проблема связана с удаленным общением с устройством Tektronix PWS4323 через команды visa библиотеки. после подключения к устройству со стороны хоста, а именно:

  • обнаружение устройства системой

  • добавление файла устройства usbtmc

  • открытие сеанса вызовом viOpenDefaultRM

  • открытие сеанса с устройством viOpen

успешно выполняются все команды на запись и не требующие ответа, со статусом VI_SUCCESS (включая команды "*RST", "VOLTAGE 3V", "SYSTEM:REMOTE" ....), передача которых осуществляется через вызов viWrite, также операции на чтение и запись в регистры выполняются без ошибок viSetAttribute,

Однако команды требующие чтения на запрос через viBufRead или viScanf зачастую не выполняются, возвращая ошибку VI_ERROR_TMO . Почему так написал, выглядит как-будто устройство не успевает выполнить запить в буфер чтения. Например команды *ESR?, *TST?, возвращающие короткий ответ в несколько символов, в случае дополнительной задержки по времени после операции записи, viRead может отработать корректно, без ошибок. Однако в случае с командой *IDN? Ошибка наблюдается всегда, успешно только один раз из 1000.

Что может послужить причиной такого поведения?

Спасибо за помощь.

 

Дополнительная информация: работа осуществляется в системе LINUX, установка библиотек visa была выполнена вручную через зависимые deb пакеты.

libivivisa0_7.0.0-0_x86_64.deb, libivivisa0-devel_7.0.0-0_x86_64.deb, libivivisa-confmgr0_7.0.0-0_x86_64.deb, libivivisa-confmgr0_7.0.0-0_x86_64.deb, libivivisa-utilities0_7.0.0-0_x86_64.deb.

После открытия сеанса также были попытки наладить работу через установку атрибутов:

VI_ATTR_TMO_VALUE, VI_ATTR_TERMCHAR, VI_ATTR_TERMCHAR_EN, VI_ATTR_SEND_END_EN.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вариантов немного. Проблемы с железом, вашим или сторонним софтом. Попробуйте некоторые вещи заменить. Например, самое просто - вместо libivivisa использовать библиотеку librevisa из репозитория (пакеты libvisa-dev, libvisa0), там скорее всего даже исходный код менять не придётся, просто линкеру указать другую библиотек для сборки вашего ПО. Если поведение не изменится - можно попробовать на ПК с windows поставить какой-нибудь сторонний софт для работы с VISA (TekVISA, NI-VISA, R&S VISA и т.п.). Там обычно есть готовые утилиты для базовой работы с прибором (OpenChoice Talker Listener, VISA Tester Tools, NIvisaic/VISA Test Panel). Если и они нормально IDN не читают, то наверное что-то с прибором. Если они с прибором работают нормально, но ваш код ни с libivivisa, ни с librevisa не работает - то проблема остаётся в вашем коде. Обрезайте до минимального компилируемого примера, когда IDN не читается и выкладывайте сюда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может таймаут какой попало стоит по умолчанию, вот и не успевает?

status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000);

 

upd, дочитал исходное сообщение до конца, увидел что уже VI_ATTR_TMO_VALUE пробовали.

с gpib похожие грабли были как раз из-за глобальных настроек таймаутов и терминальных символов (особенно у старого оборудования весьма своеобразный взгляд на то что должно быть по умолчанию), возможно есть ещё какие-нибудь таймауты отдельно у USB части визы.

 

присоединюсь к совету arhiv6 поставить сторонний софт, только лучше пожалуй  от NI, там и io trace есть который позволяет подглядывать со стороны за всей коммуникацией и ручками можно читать/писать.

keysight которые вроде как нынче уже тектроникс, это ужоснах какой-то даже по сравнению с NI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, arhiv6 сказал:

Вариантов немного. Проблемы с железом, вашим или сторонним софтом. Попробуйте некоторые вещи заменить. Например, самое просто - вместо libivivisa использовать библиотеку librevisa из репозитория (пакеты libvisa-dev, libvisa0), там скорее всего даже исходный код менять не придётся, просто линкеру указать другую библиотек для сборки вашего ПО. Если поведение не изменится - можно попробовать на ПК с windows поставить какой-нибудь сторонний софт для работы с VISA (TekVISA, NI-VISA, R&S VISA и т.п.). Там обычно есть готовые утилиты для базовой работы с прибором (OpenChoice Talker Listener, VISA Tester Tools, NIvisaic/VISA Test Panel). Если и они нормально IDN не читают, то наверное что-то с прибором. Если они с прибором работают нормально, но ваш код ни с libivivisa, ни с librevisa не работает - то проблема остаётся в вашем коде. Обрезайте до минимального компилируемого примера, когда IDN не читается и выкладывайте сюда.

Спасибо за подсказку, но навряд ли проблема с пакетами, потому что .deb пакеты выцепил из одного большого .run поставляемый keysight. При использовании их установщика работает все корректно (проверка проводилась в отдельном экземпляре виртуальной системы, где установка велась целиком через .run пакет), однако они добавляют в автоматическую загрузку скрипт, который, такое чувство,  меняет какие-то настройки сеанса, возможно те же регистры. Вмешательство процесса фирмы keysight просто очевидное, так как при проверки количества экземпляров используемых модулей usbtmc через lsmod, автоматически инкрементируется при обнаружении устройства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте нормальные свободные вещи для работы с USBTMC, гугол сразу же мне выдал вот это. В любом случае, сдается мне, что проще свое будет написать, руководствуясь документацией, чем гадать, что там в этом "черном ящике" от непонятно кого!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.08.2022 в 17:36, Kira_strike сказал:

Спасибо за подсказку, но навряд ли проблема с пакетами, потому что .deb пакеты выцепил из одного большого .run поставляемый keysight.

Читайте внимательнее, я предлагаю использовать не тот же самый пакет (libivi_visa) из другого места (из репозитория), я предлагаю использовать совсем другую библиотеку (libre_visa), как раз по причине что она никак не связана с keysight. "Внешне" она не должна отличаться (вам даже свой код переделывать скорее всего не придётся), а внутри - совсем другая.  Может внутри в libivivisa как раз чего-то и не хватает, что "процесс фирмы keysight" меняет.

 

В 09.08.2022 в 13:17, _pv сказал:

keysight которые вроде как нынче уже тектроникс, это ужоснах какой-то даже по сравнению с NI.

Keysight я не предлагаю. И они с Tektronix никак не связаны (вы наверное с Keithley путаете).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, arhiv6 сказал:

Вариантов немного. Проблемы с железом, вашим или сторонним софтом. Попробуйте некоторые вещи заменить. Например, самое просто - вместо libivivisa использовать библиотеку librevisa из репозитория (пакеты libvisa-dev, libvisa0), там скорее всего даже исходный код менять не придётся, просто линкеру указать другую библиотек для сборки вашего ПО. Если поведение не изменится - можно попробовать на ПК с windows поставить какой-нибудь сторонний софт для работы с VISA (TekVISA, NI-VISA, R&S VISA и т.п.). Там обычно есть готовые утилиты для базовой работы с прибором (OpenChoice Talker Listener, VISA Tester Tools, NIvisaic/VISA Test Panel). Если и они нормально IDN не читают, то наверное что-то с прибором. Если они с прибором работают нормально, но ваш код ни с libivivisa, ни с librevisa не работает - то проблема остаётся в вашем коде. Обрезайте до минимального компилируемого примера, когда IDN не читается и выкладывайте сюда.

Да, я так и сделал неделю назад. Пришлось откатиться, по сути исходник взял с экземпляра предложенного в руководстве Tektronix. Там внутри одного файла все заголовки и определения функций, можно просто скомпелировать, только нужно подкл библ visa. Только тут в явном виде указывается имя устройства с которым сеанс запускается, не через функцию viFind поиск

main.cpp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, arhiv6 said:

Keysight я не предлагаю. И они с Tektronix никак не связаны (вы наверное с Keithley путаете).

наверное путаю,

просто появилось ряд "аналогов" различной степени программной и аппаратной совместимости с NI, и некоторые были на редкость кривые, даже по сравнению с "оригиналом".

например те же GPIB адаптеры не от NI но якобы совместимые, которые напрямую работают более менее нормально, а если через visa - начинают иногда отваливаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...