Kira_strike 0 8 августа, 2022 Опубликовано 8 августа, 2022 · Жалоба Здравствуйте, хотелось бы найти человек который сможет помочь с решением вопроса. За две недели накипело... Буду крайне благодарен за помощь Проблема связана с удаленным общением с устройством 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 18 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба Вариантов немного. Проблемы с железом, вашим или сторонним софтом. Попробуйте некоторые вещи заменить. Например, самое просто - вместо 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 не читается и выкладывайте сюда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 74 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба может таймаут какой попало стоит по умолчанию, вот и не успевает? status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000); upd, дочитал исходное сообщение до конца, увидел что уже VI_ATTR_TMO_VALUE пробовали. с gpib похожие грабли были как раз из-за глобальных настроек таймаутов и терминальных символов (особенно у старого оборудования весьма своеобразный взгляд на то что должно быть по умолчанию), возможно есть ещё какие-нибудь таймауты отдельно у USB части визы. присоединюсь к совету arhiv6 поставить сторонний софт, только лучше пожалуй от NI, там и io trace есть который позволяет подглядывать со стороны за всей коммуникацией и ручками можно читать/писать. keysight которые вроде как нынче уже тектроникс, это ужоснах какой-то даже по сравнению с NI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kira_strike 0 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба 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, автоматически инкрементируется при обнаружении устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба Попробуйте нормальные свободные вещи для работы с USBTMC, гугол сразу же мне выдал вот это. В любом случае, сдается мне, что проще свое будет написать, руководствуясь документацией, чем гадать, что там в этом "черном ящике" от непонятно кого! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 18 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба В 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 путаете). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kira_strike 0 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 74 9 августа, 2022 Опубликовано 9 августа, 2022 · Жалоба 30 minutes ago, arhiv6 said: Keysight я не предлагаю. И они с Tektronix никак не связаны (вы наверное с Keithley путаете). наверное путаю, просто появилось ряд "аналогов" различной степени программной и аппаратной совместимости с NI, и некоторые были на редкость кривые, даже по сравнению с "оригиналом". например те же GPIB адаптеры не от NI но якобы совместимые, которые напрямую работают более менее нормально, а если через visa - начинают иногда отваливаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться