Программирование PC NI-VISA: управление приборами через USB Fri, March 29 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

NI-VISA: управление приборами через USB Печать
Добавил(а) microsin   

Это руководство можно считать начальной точкой по изучению NI-VISA для обмена данными с устройством USB. Оно не предназначено для изучения архитектуры USB как таковой или протоколов USB, используемых для коммуникаций. После знакомства с этим руководством Вы сможете установить устройство USB и использовать NI-VISA для обмена данными с ним, если Вы понимаете используемый протокол этого устройства.

[USB и VISA: общая информация]

VISA это высокоуровневый программный интерфейс (API), предназначенное для коммуникаций через инструментальные шины. VISA не зависит ни от платформы, ни от шины, ни от рабочего окружения. Другими словами, используется одно и то же API, независимо от того, создана ли программа для обмена данными между устройством USB и системой LabVIEW на Windows 7, или же с устройством GPIB и приложением, работающим на Mac OS X.

USB это шина обмена, работа которой основана на сообщениях. Это означает, что компьютер PC и устройство USB обмениваются друг с другом через шину командами и данными, передаваемые либо в текстовом формате, либо как двоичные данные. Каждое устройство USB имеет свой набор команд. Вы можете использовать функции чтения (Read) и записи (Write) NI-VISA API, чтобы отправить эти команды в прибор и прочитать ответ на них. Список команд можно устройства USB Вашего прибора можно получить у его производителя.

NI-VISA поддерживает обмен по шине USB начиная с версии NI-VISA 3.0. Поддерживаются 2 класса ресурсов VISA: USB INSTR и USB RAW.

Устройства USB, которые удовлетворяют протоколу USB Test and Measurement Class (USBTMC), используют класс ресурсов USB INSTR. Выпускаются лицензированные устройства, и коробки поддерживающие протокол USBTMC [2]. Для коммуникации с таким устройством не требуется специальное конфигурирование, можно сразу переходить к изучению обмена с устройством (см. ниже "Использование NI-VISA для обмена с устройством USB").

Инструментальными устройствами USB RAW считаются любые приборы с интерфейсом USB, которые не удовлетворяют протоколу USBTMC. Если Вы используете устройство USB RAW, то для настройки обмена с ним см. инструкции в разделе "Конфигурирование NI-VISA для управления устройством USB RAW". Обратитесь к производителю Вашего прибора, чтобы получить подробную информацию по используемому коммуникационному протоколу Вашего устройства USB.

Информацию по NI-VISA API см. в NI-VISA Help и руководство пользователя NI-VISA [3]. Эта информация предоставляется вместе с устанавливаемым пакетом VISA, и также доступна на сайте National Instruments.

Примечание: NI-VISA Help доступен в утилите NI-MAX через меню Help -> Installed Products -> MAX Help for NI-VISA.

[Конфигурирование NI-VISA для управления устройством USB RAW]

Посмотрите 3-минутное видео, демонстрирующее быстрый старт по управлению устройством через USB [4].

В этой секции описываются шаги по конфигурированию доступа к устройству USB RAW для управления через NI-VISA 5.0 на компьютере с операционной системой Windows. Если Вы используете USBTMC-совместимое устройство, просто подключите Ваше устройство и сразу перейдите к третьему шагу во врезке "Проверка связи с устройством с помощью утилиты NI-VISA Interactive Control".

Начиная с этого момента подразумевается, что пакет NI-VISA уже установлен на Вашем компьютере, и Ваше устройство USB еще не подключено. Кроме того, на компьютере не должен быть установлен драйвер для Вашего устройства USB. Весь процесс установки будет заключаться из 3 шагов: создание INF-файла с помощью Driver Development Wizard, установка INF-файла для устройства USB, проверка связи с устройством с помощью утилиты NI-VISA Interactive Control.

В целях демонстрации в качестве примера устройства USB будет использовать Creative Webcam, устанавливаемой на Windows 7. Из-за того, что это руководство предназначен для объяснения конфигурирования обычного стандартного устройства USB, подробности специфического обмена данными с камерой Creative Webcam на рассматриваются.

Для использования NI-VISA сначала нужно указать Windows использовать NI-VISA в качестве драйвера по умолчанию для Вашего устройства USB. В среде Windows можно это сделать с помощью INF-файла (информационный файл подключаемого устройства). NI-VISA 3.0 и более новые версии имеют в своем составе Мастер Драйвера (NI-VISA Driver Wizard), предназначенный для создания INF-файла для Вашего устройства USB.

Чтобы открыть NI-VISA Driver Wizard, запустите его через ярлычок "Driver Wizard" (Start -> All Programs -> National Instruments -> VISA -> Driver Wizard). Рис. 1 показывает открытое окно диалога Мастера Драйвера.

NI VISA Driver Wizard Hardware Bus Selection fig01

Рис. 1. Начальное окно NI-VISA Driver Wizard, где выбирается тип шины подключения устройства.

Вы можете использовать этот Мастер для создания INF-файла устройства шины PXI/PCI или для устройства USB. Выберите шину USB и кликните по кнопке Next. Откроется окно выбора устройства USB, что показано на рис. 2.

NI VISA Driver Wizard USB Device Selection fig02

Рис. 2. Окно NI-VISA Driver Wizard USB Device Selection.

На этом шаге Вы должны заранее знать идентификаторы VID (Vendor ID) и PID (Product ID) вашего устройства USB, через которое подключается управляемый прибор. Это два числа 16-битных числа, предоставленных в шестнадцатеричном виде как 4 текстовых символа каждое, они идентифицируют Ваше устройство USB и служит адресом устройства в системе при организации связи с ним. Оба эти идентификаторы предоставляются поставщиком (производителем устройства). Если Вы не знаете идентификаторы VID и PID, то можете узнать их с помощью Диспетчера Устройств Windows (см. ниже "Как узнать VID и PID устройства USB").

Примечание: если Вы в момент подключения устройства получили сообщение операционной системы об обнаруженном новом устройстве, то отклоните её приглашение о запуске мастера установки нового устройства (Found New Hardware Wizard).

В окне выбора устройства (рис. 2) выберите устройство по известному vendor ID и product ID. Идентификаторы устройств будут отображаться в списке Device List. После того, как кликнули на выбранном устройстве, Вы должны увидеть в других полях окна информацию об устройстве. Проверьте корректность этой информации. Если Вы не увидели нужного устройства в списке Device List, попробуйте обновить список кнопкой Refresh, и если это все равно не сработало, то выберите вариант Other..., предполагающий прямой ввод идентификаторов в полях "USB Manufacturer ID (Vendor ID)" и "USB Model Code (Product ID)". Ниже показаны окна диалога, отображаемые при выборе варианта Other после клика на кнопке Next.

Первое окно предложит Вам подключить к компьютеру устройство USB (рис. 4): "Рекомендуется подключить устройство USB перед запуском Driver Wizard, чтобы обеспечить совместимость с VISA. Вы хотите установить драйвер для не подключенного устройства?".

NI VISA Connect USB Device Prompt fig04

Рис. 4. Приглашение подключить устройство USB.

Кликните Yes, отобразится окно для ввода информации о не подключенном устройстве USB (рис. 5). Введите информацию об устройстве в 4 полях этого диалога.

NI VISA USB Device Information fig05

Рис. 5. NI-VISA Driver Wizard USB - Device Information Window.

Кликните Next, отобразится окно генерации выходных файлов, как это показано на рис. 6.

NI VISA Output Files Generation fig06

Рис. 6. NI-VISA Driver Wizard Output Files Generation Window.

Поле ввода USB Instrument Prefix это просто описатель-префикс, который Вы будете использовать для идентификации файлов, используемых для этого устройства, здесь можно указать любой префикс, какой хотите. Введите USB instrument prefix, выберите желаемый каталог, куда будут сохранены файлы, и кликните Next. Отобразится окно опций установки (см. рис. 7).

NI VISA Installation Options fig07

Рис. 7. NI-VISA Driver Wizard Installation Options.

Выбранный по умолчанию вариант подразумевает установку сгенерированных файлов на Вашем компьютере. Обычно следует выбрать этот вариант (предпоследний вариант просто сохраняет файлы, а последний вариант не производит никаких действий, просто завершает работу мастера). После выбора варианта кликните Finish для выхода из Мастера Драйвера. Созданный INF-файл будет находиться в директории, которую Вы указали.

[Как узнать VID и PID устройства USB]

Подключите свое устройство USB к компьютеру. Откройте Менеджер Устройств (Device Manager) из Панели Управления (Control Panel), и найдите свое устройство USB в списке. Если устройство не опознано, то обычно оно может находиться в папке "Контроллеры USB" (Other Devices), у него может быть желтый маркер с восклицательным знаком, показывающий, что для системы это пока что неизвестное устройство (у которого не установлен корректный драйвер). Двойным кликом на устройстве откройте его свойства. Выберите закладку Details, чтобы отобразился список свойств, и выберите в выпадающем списке Property атрибут "Hardware Ids" (идентификаторы аппаратуры). Отобразится строка символов наподобие показанной на рис. 3. 4 символа после префикса "VID_" и "PID_" покажут vendor ID и product ID соответственно. Запишите на листочке эти символы, закройте Device Manager и отключите устройство от компьютера.

NI VISA Find Hardware ID fig03

Рис. 3. Как можно найти VID и PID устройства USB с помощью Менеджера Устройств Windows.

Для устройства Creative Webcam значения vendor ID и product ID будут 0x041E и 0x4036 соответственно. Имейте в виду, что значения vendor ID и product ID будут различаться для Вашего устройства в зависимости от его производителя и модели.

Установка INF-файлов отличается в зависимости от версии Windows. Из-за этих различий между Windows 2000/XP и Windows Vista/7 мастер драйвера NI-VISA создаст два INF-файла для каждой из этих двух групп операционных систем. В начале INF-файла будут даны инструкции по установке драйвер. INF-файлы это обычные текстовые файлы ASCII, поэтому их можно просто просмотреть или даже отредактировать обычным текстовым редактором, таким как Notepad (Блокнот). Подробную информацию о том, как следует установить Ваш INF-файл, прочитайте в заголовке этого файла. Это руководство подразумевает, что Вы используете Windows 7.

1. Чтобы установить INF-файлы на Windows 7, убедитесь, что Вы работаете с правами учетной записи Администратора (Administrator).

2. Пока Вам нужно отключить устройство USB, чтобы драйверы правильно были с ним ассоциированы при установке.

3. Сделайте копию INF-файла в папку INF. На Windows 7 это папка обычно находится в каталоге C:\WINDOWS\INF. Имейте в виду, что эта папка может быть скрыта от просмотра в Проводнике (hidden), поэтому используйте продвинутый менеджер файлов наподобие Total Commander для получения доступа к ней. Либо Вам нужно поменять опции, чтобы иметь возможность видеть скрытые элементы каталога. Для этого в Проводнике выберите в меню Tools -> Folder Options -> View -> Advanced Settings, и выберите Show hidden files, folders, and drives.

4. Выполните правый клик на INF-файле в каталоге C:\WINDOWS\INF и кликните Install (Установить). Это действие создаст PNF-файл для Вашего устройства. Теперь Вы готовы установить устройство USB.

5. Подключите устройство USB. Windows должна обнаружить Ваше устройство USB, при этом автоматически откроется окно Add New Hardware Wizard. После некоторого времени периода установки Windows должна сообщить об успешной установке устройства.

Замечание: в некоторых случаях у Windows может быть драйвер по умолчанию, уже привязанный к Вашему устройству USB. В этом случае Windows сначала установит именно этот драйвер (например, если Ваше устройство относится к классу устройств USB HID). Когда Вы подключили устройство USB, и Windows установила для него драйвер по умолчанию, откройте Менеджер Устройств (Device Manager) ярлычок его находится в Панели Управления (Control Panel). В Менеджере Устройств разверните категорию дерева, относящуюся к Вашему устройству, например Устройства HID (Human Interface Devices).

Кликните правой кнопкой на Вашем устройстве USB, и в контекстном меню выберите Update Driver Software (Обновить драйверы...).

На первом экране выберите "Browse my computer for driver software" (диалог для выбора каталога, где находится драйвер, в нашем случае это папка, где находится сгенерированный INF-файл). На втором экране кликните Let me pick from a list of drivers on my computer (разрешить выбор драйвера на моем компьютере). Третий экран показан на рис. 8, кликните Have Disk..., выберите путь до папки C:\WINDOWS\INF, и кликните OK. Убедитесь в окне рис. 8, что выбрали устройство, и кликните Next. Windows может выдать предупреждение о том, что драйвер не проверен цифровой подписью, выберите "Install the driver anyways" (все равно установить драйвер).

NI VISA Select the driver you want fig08

Рис. 8. Выбор драйвера для устройства USB.

1. Откройте утилиту Measurement & Automation Explorer (NI-MAX).  Выберите в меню Tools -> Refresh для гарантии, что Ваше устройство USB появится в списке. Устройство должно быть перечислено в разделе Devices and Interfaces, как это показано на рис. 9. Теперь Ваше устройство USB установлено и сконфигурировано для использования совместно с NI-VISA.

После того, как выбрано USB устройство, можно отобразить его информацию путем клика на закладку USB в нижней части окна. Вы можете просмотреть такую информацию о Вашем устройстве, как идентификатор производителя (manufacturer ID), код модели (model code) и серийный номер (serial number).

NI VISA Device in MAX fig09

Рис. 9. Устройство USB, показанное в утилите NI MAX.

2. Для коммуникации с Вашим устройством через VISA, используйте VISA instrument descriptor для этого устройства. Дескриптор устройства USB INSTR имеет формат:

USB[board]:: manufacturer ID:: model code:: serial number[:: USB interface number]::INSTR

Дескриптор устройства USB RAW имеет формат:

USB[board]:: manufacturer ID:: model code:: serial number[:: USB interface number]::RAW

По спецификации USBTMC все устройства должны иметь серийный номер. У некоторых устройств USB RAW может не быть серийного номера. Если серийного номера нет, то NI-VISA автоматически присвоит специфический серийный номер для устройства, как показано на рис. 9. Формат такого серийного номера NI-VISA-#, где # это автоматически сгенерированное число.

У некоторых устройств USB есть несколько интерфейсов. Это подобно плате (устройству) PCI, которая обрабатывает несколько функций. Если Ваше устройство USB поддерживает только один интерфейс (самый частый случай) не нужно добавлять номер интерфейса USB.

Creative Webcam в этом примере использует класс RAW и пару идентификаторов VID/PID 0x041E/0x4036. Для Creative Webcam тогда получится следующий дескриптор:

USB0::0x041E::0x12C0::NI-VISA-20002::RAW

Для проверки коммуникации откройте утилиту NI-MAX. Выберите Tools -> NI-VISA -> VISA Interactive Control. Должно открыться окно приблизительно как показано на рис. 10.

NI VISA Interactive Control fig10

Рис. 10. VISA Interactive Control.

3. Утилита VISA Interactive Control (VISAIC) предназначена для простого обмена с любым ресурсом VISA. После того, как устройство USB сконфигурировано для использования VISA, оно должно быть перечислено в ветке USB. Выполните двойной клик на устройстве окна 10, чтобы открыть сессию VISA с устройством. Откроется окно, показанное на рис. 11.

NI VISA Interactive Control Session fig11

Рис. 11. Открытая сессия VISA Interactive Control.

Когда Вы открыли в утилите VISAIC сессию VISA, автоматически выберется секция Configuration и закладка USB Settings. Чтобы прочитать свойства устройства, выберите закладку View Attributes. Это отобразит список атрибутов устройства, включая информацию наподобие Resource Name.

Для получения информации по использованию VISAIC см. [5], для информации по NI-VISA API см. NI-VISA Help и руководство [3]. Для получения списка допустимых команд для Вашего устройства обратитесь за информацией к его производителю.

[Использование NI-VISA для обмена с устройством USB]

В этой секции объясняется, как осуществить коммуникацию с Вашим устройством USB, используя NI-VISA 3.0 и более свежую версию. Как уже упоминалось, в контексте API NI-VISA существует 2 класса устройств USB, отличающихся по методу доступа к USB-устройству.

Класс USB INSTR (USBTMC). Устройства, удовлетворяющие спецификации USB Test and Measurement Class (USBTMC), используют класс NI-VISA USB INSTR. Эти устройства осуществляют коммуникацию в стиле IEEE-488.2. Для этих устройств Вы можете просто вызывать функции VISA Open, VISA Close, VISA Read и VISA Write точно так же, как если бы Вы общались с приборами GPIB.

На рис. 12 показан виртуальный инструмент (VI) системы LabVIEW, который обменивается данными с устройством USBTMC. В этом примере открывается сессия VISA к устройству USB. Команда записывается в устройство, и от устройства читается его обратно пришедший ответ. В этом примере посылается специальная команда для опроса ID устройства. Для получения полного списка команд обратитесь к производителю устройства. После того, как все коммуникации завершены, сессия VISA закрывается.

NI VISA USBTMC LabVIEW fig12

Рис. 12. Блок-схема примера работы с устройством USB USBTMC в среде LabVIEW.

Класс USB RAW. В этом случае обмен несколько сложнее, потому что каждое устройство USB может использовать свой собственный протокол обмена данными. Подробности реализации протокола узнавайте у производителя Вашего устройства.

Шина USB реализует обмен по каналам 4 типов (канал называется pipe, или конечная точка, endpoint, EP): конечная точка управления (control EP), конечная точка буфера (bulk EP), конечная точка прерывания (interrupt EP) и изохронная конечная точка (isochronous EP). Передача через каждый тип EP переносит разный вид информации. Кроме того, может существовать любое количество конечных точек любого типа (кроме control EP). Можно представить себе EP как коммуникационное подключение (сетевой сокет). Кроме того, EP могут работать в двух направлениях передачи: EP IN передают данные из устройства USB в хост USB (компьютер PC), и EP OUT передают данные в обратном направлении - из хоста USB к устройству USB (направления IN и OUT обозначаются по отношению к хосту USB). Подробнее про устройство архитектуры USB см. [9].

NI-VISA поддерживает 3 типа канала USB: control, bulk и interrupt. Когда NI-VISA определяет Ваше устройство USB, она автоматически сканирует его для поиска EP с самым малым доступным номером для каждого типа EP.

Когда библиотека VISA определила EP с самым малым доступным номером, она назначает это значение соответствующему атрибуту VISA. EP типа bulk IN и EP bulk OUT сохраняются соответственно в атрибутах VI_ATTR_USB_BULK_IN_PIPE и VI_ATTR_USB_BULK_OUT_PIPE. EP interrupt IN и сохраняется в атрибуте VI_ATTR_USB_INTR_IN_PIPE. Значение -1 показывает, что устройство USB не поддерживает этот тип канала (EP). Для канала управления (control pipe) поддерживается только EP номер 0. Если Вы используете API языка C, то используйте функцию viSetAttribute чтобы поменять конечные точки. В среде LabVIEW используйте запись свойства узла VISA (Write VISA Property node).

NI-VISA включает 4 функции для передачи данных через каналы USB. Перед тем, как Вы сможете осуществить обмен с использованием этих функций, Вам нужно настроить коммуникационный протокол с помощью атрибутов VISA USB. В следующем списке показано применение этих функций.

• Используйте VISA USB Control In и VISA USB Control Out для передачи данных через канал управления (control pipe или control EP).
• Для передачи данных через bulk pipe используйте VISA Read и VISA Write.

Если Вы используете LabVIEW, то VISA включает дополнительную функцию для использования interrupt pipe: VISA Get USB Interrupt Data. На API языка C можно выполнить это путем доступа к атрибутам VI_ATTR_USB_RECV_INTR_SIZE и VI_ATTR_USB_RECV_INTR_DATA объекта события VI_EVENT_USB_INTR. Для дополнительной информации о событиях VISA см. NI-VISA Help и документацию [3].

[USB на операционных системах Linux® и Mac]

Linux. NI-VISA при поддержке USB полагается на функции ядра Linux. Эта функция называется usbfs (USB Device Filesystem [6]), и на более старых ядрах Linux это называлось usbdevfs. Чтобы NI-VISA могла поддерживать устройства USB, эта функция должна присутствовать и должна быть смонтирована (наподобие виртуальной файловой системы). Это поддерживается большинством популярных дистрибутивов Linux, таких как Red Hat, SuSE и Mandrake. Вы можете использовать команду mount, чтобы отобразить смонтированные в настоящий момент файловые системы, поддерживающие эту функцию.

Также пользователь VISA должен иметь права записи в файл, представляющий устройство USB. Такой файл обычно находится в подкаталоге папки /proc/bus/usb. Если эти условия не соблюдаются, то устройство USB недоступно для VISA (устройство нельзя найти через функцию viFindRsrc, и вызов viOpen завершится с ошибкой). По умолчанию доступ на запись к устройствам USB имеет пользователь root, но другим пользователям такой доступ не разрешен.

Есть несколько вариантов, как предоставить не-root пользователю доступ к устройству USB.

• Использовать пакет hotplug. Этот пакет по умолчанию устанавливается на большинстве дистрибутивов, включая Red Hat, SuSE и Mandrake. Пакет hotplug позволяет пользователю запускать скрипты для определенного устройства USB, основываясь на таких его характеристиках, как Vendor ID (VID) и Product ID (PID). Если пакет hotplug существует, то инсталлятор NI-VISA по умолчанию установит скрипты для предоставления пользователям доступа на запись во все устройства USBTMC, и рабочее окружения для устройств USB RAW. Чтобы добавить разрешения на запись определенного устройства USB RAW, запустите предоставленный скрипт:

< VXIPNPPATH>/linux/NIvisa/USB/AddUsbRawPermissions.sh

Для дополнительной информации по пакету hotplug см. [7].

• usbfs (ранее эта файловая система была известна как usbdevfs) может быть смонтирована с опцией devmode=0666. Это дает всем пользователям доступ на чтение и запись всех устройств USB.

• Пользователь root может добавить права на запись в файл, который представляет устройство USB, которое обычно находится в пределах подкаталога /proc/bus/usb. К сожалению, эти разрешения теряются, когда устройство отключается. Таким образом, использовать этот способ представления доступа не рекомендуется.

Mac OS X. Пока другие драйверы в системе не претендуют на устройство USB, Вы можете использовать NI-VISA для доступа к нему. Никакая специальная настройка не требуется.

[Ссылки]

1. USB Instrument Control Tutorial site:ni.com.
2. GPIB, последовательный интерфейс и Ethernet site:ni.com.
3. NI-VISA™ User Manual site:ni.com.
4. Getting Started with Instrument Control using USB site:ni.com.
5. VISA Interactive Control (VISAIC) site:ni.com.
6. USB Device Filesystem site:linux-usb.org.
7. Linux Hotplugging site:linux-hotplug.sourceforge.net.
8NI-VISA: примеры программирования генераторов SDG/АКИП.
9. USB in a NutShell - путеводитель по стандарту USB (начало).

 

Добавить комментарий


Защитный код
Обновить

Top of Page