Интерфейс VXI сопоставлен с контроллером VXI, который вы устанавливаете в пазе 0 шасси VXI. Этот интерфейс, наряду с другой соответствующей аппаратной, показывают ниже.
Интерфейс VXI поддерживается через объект VISA-VXI. Многие функции, сопоставленные с объектом VISA-VXI, похожи на функции, сопоставленные с другими инструментальными объектами. Поэтому только функции и свойства, которые уникальны для интерфейса VXI ВИЗЫ, обсуждены в этом разделе.
Обратитесь к Обзору GPIB, чтобы узнать об общих возможностях тулбокса, таких как запись и чтение текста и двоичных данных, использование событий и коллбэков, и так далее.
Интерфейс PXI поддерживается через объект VISA-PXI. Функции, сопоставленные с объектом VISA-PXI, идентичны функциям, сопоставленным с объектом VISA-VXI. Информация предусмотрела работу с VISA-VXI в этом разделе, также работает на VISA-PXI.
Устройства PXI могут поддерживаться другими тулбоксами или идти с высокоуровневыми драйверами, которые легче взаимодействовать с, чем необработанный интерфейс PXI.
Вы создаете объект VISA-VXI с visa
функция. Каждый объект сопоставлен с
Шасси VXI
Контроллер VXI в пазе 0 шасси VXI
Инструмент установлен в шасси VXI
visa
требует имени поставщика и имени ресурса как входные параметры. Именем поставщика является любой keysight
или ni
. Имя ресурса состоит из индекса шасси VXI и инструмента логический адрес. Можно найти имя ресурса VISA-VXI для данного инструмента с инструментом конфигурирования обеспеченным поставщиком, или с instrhwinfo
функция. (Вместо имени ресурса можно использовать псевдоним, как задано с инструментом конфигурирования поставщика VISA.) Как описано в Соединении с Инструментом можно также сконфигурировать значения свойств во время создания объекта.
Прежде чем вы создадите объект VISA, необходимо найти инструмент в соответствующем поставщике проводником VISA. Когда вы находите, что сконфигурированный инструмент, отмечает, что ресурс представляет в виде строки и создает объект с помощью той информации. Например, создать объект VISA-VXI сопоставило с шасси VXI с индексом 0 и Keysight™ E1432A цифровой преобразователь с 16 каналами с логическим адресом 32,
vv = visa('keysight','VXI0::32::INSTR');
Объект VISA-VXI vv
теперь существует в рабочей области MATLAB®.
Чтобы открыть связь с инструментом, введите:
fopen (vv);
Можно затем отобразить класс vv
с whos
команда.
whos vv Name Size Bytes Class vv 1x1 882 visa object Grand total is 15 elements using 882 bytes
После того, как вы создадите объект VISA-VXI, следующие свойства являются автоматически присвоенными значениями. Эти свойства предоставляют информацию об основанном на объектах на ее типе класса и информации об адресах.
VISA-VXI описательные свойства
Можно отобразить значения этих свойств для vv
.
vg.Name ans = 'VISA-VXI0-32'
vg.RsrcName ans = 'VXI0::32::INSTR'
vg.Type ans = 'visa-vxi'
Объект VISA-VXI предоставляет вам удобное отображение, которое обобщает важный адрес и информацию состояния. Можно вызвать сводные данные отображения эти три пути:
Введите объект VISA-VXI в командной строке.
Исключите точку с запятой при создании объекта VISA-VXI.
Исключите точку с запятой при конфигурировании свойств с помощью записи через точку.
Можно также отобразить итоговую информацию через браузер Рабочей области путем щелчка правой кнопкой по инструментальному объекту и выбора Display Summary из контекстного меню.
Сводные данные отображения для объекта VISA-VXI vv
приведен ниже.
VISA-VXI Object Using AGILENT Adaptor : VISA-VXI0-32 Communication Address ChassisIndex: 0 LogicalAddress: 32 Communication State Status: closed RecordStatus: off Read/Write State TransferStatus: idle BytesAvailable: 0 ValuesReceived: 0 ValuesSent: 0
Адрес VISA-VXI состоит из:
Индекс шасси шасси VXI
Логический адрес инструмента установлен в шасси VXI
Необходимо задать логическое значение адреса через имя ресурса во время создания объекта VISA-VXI. Кроме того, необходимо включать значение индекса шасси как часть имени ресурса, если это отличается от значения по умолчанию 0. Свойства, сопоставленные с адресом шасси и инструмента, следующие.
Свойства адреса VISA-VXI
PropertyName | Описание |
---|---|
Укажите на индекс шасси VXI. | |
Задайте логический адрес инструмента VXI. | |
Укажите на местоположение слота инструмента VXI. |
ChassisIndex
и LogicalAddress
свойства автоматически обновляются с заданными значениями имени ресурса, когда вы создаете объект VISA-VXI. Slot
свойство автоматически обновляется после того, как объект соединяется с инструментом с fopen
функция.
Можно отобразить значения свойств адреса для объекта VISA-VXI vv
созданный в Создании Объекта VISA-VXI.
fopen(vv) vv.ChassisIndex ans = 0
vv.LogicalAddress ans = 32
vv.Slot ans = 2
Инструменты VXI или основаны на сообщении или основаны на регистре. Обычно это принято, что основанные на сообщении инструменты легче использовать, в то время как основанные на регистре инструменты быстрее. Основанный на сообщении инструмент имеет свой собственный процессор, который позволяет ему интерпретировать высокоуровневые команды, такие как команда SCPI. Поэтому, чтобы связаться с основанным на сообщении инструментом, можно использовать чтение и записать функциям fscanf
fread
fprintf
, и fwrite
. Для получения дальнейшей информации об этих функциях, обратитесь к Связи со Своим Инструментом.
Если основанный на сообщении инструмент также содержит общую память, то можно получить доступ к общей памяти посредством основанных на регистре операций чтения и операций записи. Основанный на регистре инструмент обычно не имеет своего собственного процессора, чтобы интерпретировать высокоуровневые команды. Поэтому, чтобы связаться с основанным на регистре инструментом, необходимо использовать чтение и функции записи тот доступ регистр.
Существует два типа основанной на регистре записи и читают функции: низкоуровневый и высокий уровень. Основным преимуществом высокоуровневых функций является простота использования. Обратитесь к Использованию Высокоуровневых Функций Памяти для получения дополнительной информации. Основным преимуществом низкоуровневых функций является скорость. Обратитесь к Использованию Низкоуровневых Функций Памяти для получения дополнительной информации.
Функции, сопоставленные с основанной на регистре записью и операциями чтения, следующие.
VISA-VXI основанные на регистре функции записи и чтения
FunctionName | Описание |
---|---|
Сопоставьте память для низкоуровневых операций чтения памяти и операций записи. | |
Низкоуровневая память считана из регистра VXI. | |
Низкоуровневая запись памяти к регистру VXI. | |
Высокоуровневая память считана из регистра VXI. | |
Не сопоставьте память для низкоуровневых операций чтения памяти и операций записи. | |
Высокоуровневая запись памяти к регистру VXI. |
Свойства, сопоставленные с основанной на регистре записью и операциями чтения, приведены ниже.
VISA-VXI основанные на регистре свойства записи и чтения
PropertyName | Описание |
---|---|
Укажите на базовый адрес памяти расширенной памяти. | |
Укажите на размер расширенной памяти для низкоуровневых операций чтения и операций записи. | |
Укажите на базовый адрес A24 или пробела A32. | |
Задайте, передается ли шаг смещения регистра VXI после данных. | |
Укажите на размер памяти, которую требуют в A24 или адресном пространстве A32. | |
Задайте адресное пространство, используемое инструментом. |
Этот пример исследует характеристики регистра для Keysight E1432A 51,2 kSa/s цифровых преобразователя с 16 каналами с модулем DSP.
Все инструменты VXI имеют пространство памяти A16, состоящее из 64 байтов. Это известно как пробел A16, потому что адреса 16 битов шириной. Основанные на регистре инструменты предоставляют карту распределения памяти адресного пространства, которое описывает информацию, содержавшую в пробеле A16. Некоторые инструменты VXI также имеют A24 или пробел A32, если 64 байтов, обеспеченных пробелом A16, недостаточно, чтобы выполнить необходимые задачи. Инструмент VXI не может использовать и A24 и пробел A32:
Создайте инструментальный объект — Создают объект VISA-VXI vv
сопоставленный с шасси VXI с индексом 0 и цифровым преобразователем Keysight E1432A с логическим адресом 130.
vv = visa('keysight','VXI0::130::INSTR');
Свяжите с инструментом — Подключение vv
к инструменту.
fopen(vv)
MemorySpace
свойство указывает на тип пространства памяти инструментальные поддержки. По умолчанию все инструменты поддерживают пространство памяти A16. Однако это свойство может быть A16/A24 или A16/A32, если инструмент также поддерживает A24 или пространство памяти A32, соответственно.
vv.MemorySpace ans = A16/A24
Если объект VISA-VXI не соединяется с инструментом, MemorySpace
всегда возвращает значение по умолчанию A16
.
MemoryBase
свойство указывает на базовый адрес A24 или пробела A32, и задано как шестнадцатеричная строка. MemorySize
свойство указывает на размер A24 или пробела A32. Если инструмент VXI поддерживает только пространство памяти A16, MemoryBase
значения по умолчанию к 0H
и MemorySize
значения по умолчанию к 0
.
vv.MemoryBase ans = 200000H
vv.MemorySize ans = 262144
Разъединитесь и вымойтесь — Когда вам больше не будет нужен vv
, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(vv) delete(vv) clear vv
Этот пример использует высокоуровневые функции памяти, memread
и memwrite
, для доступа указывают информацию для Keysight E1432A 51,2 kSa/s цифровых преобразователя с 16 каналами с модулем DSP. Основным преимуществом этих высокоуровневых функций является простота использования — можно получить доступ к нескольким регистрам с одним вызовом функции, и память, к которой нужно получить доступ, автоматически сопоставлена для вас. Основной недостаток является отсутствием скорости — они медленнее, чем низкоуровневые функции памяти.
Каждый регистр содержит 16 битов и сопоставлен со значением смещения, которое вы предоставляете к memread
или memwrite
. К первым четырем регистрам цифрового преобразователя получают доступ в этом примере и описывают ниже.
Keysight (раньше Agilent) информация о регистре E1432A
Регистр | Смещение | Описание |
---|---|---|
ID | 0 | Этот регистр обеспечивает инструментальную конфигурационную информацию и всегда задается как CFFF. Биты 15 и 14 равняются 1, указывая, что инструмент основан на регистре. Биты 13 и 12 0, указывая, что инструмент поддерживает пространство памяти A24. Остающиеся биты являются всем 1, указывая на ID устройства. |
Тип устройства | 2 | Этот регистр обеспечивает инструментальную конфигурационную информацию. Биты 15-12 указывают на память, требуемую пробелом A24. Остающиеся биты указывают на типовой кодекс для инструмента. |
Состояние | 4 | Этот регистр обеспечивает инструментальную информацию о статусе. Например, бит 15 указывает, можно ли получить доступ к регистрам A24, и бит 6 указывает, произошла ли ошибка связи DSP. |
Смещение | 6 | Этот регистр задает базовый адрес регистров A24 инструмента. Биты карта 15-12 строки адреса ШИНЫ VME A23-A20 для A24 указывают доступ. Остающиеся биты являются всем 0. |
Для более подробной информации об этих регистрах обратитесь к HP E1432A User's Guide.
Создайте инструментальный объект — Создают объект VISA-VXI vv
сопоставленный с шасси VXI с индексом 0 и цифровым преобразователем Keysight E1432A с логическим адресом 130.
vv = visa('keysight','VXI0::130::INSTR');
Свяжите с инструментом — Подключение vv
к инструменту.
fopen(vv)
Запишите и считайте данные — следующая команда выполняет высокоуровневое чтение Регистра ID, который имеет смещение 0.
reg1 = memread(vv,0,'uint16','A16') reg1 = 53247
Преобразуйте reg1
к шестнадцатеричному значению и двоичной строке. Обратите внимание на то, что шестнадцатеричное значение является CFFF, и младшие значащие 12 битов являются всем 1, как ожидалось.
dec2hex(reg1) ans = CFFF dec2bin(reg1) ans = 1100111111111111
Можно считать несколько регистров с memread
. Следующая команда читает следующие три регистра. Смещение 2 указывает, что операция чтения начинается с Регистра Типа устройства.
reg24 = memread(vv,2,'uint16','A16',3) reg24 = 20993 50012 40960
Следующие команды пишут в Регистр Смещения и затем читают значение назад. Обратите внимание на то, что, если вы измените значение этого регистра, вы не сможете получить доступ к пробелу A24.
memwrite(vv,45056,6,'uint16','A16'); reg4 = memread(vv,6,'uint16','A16') reg4 = 45056
Обратите внимание на то, что младшие значащие 12 битов являются всем 0, как ожидалось.
dec2bin(reg4,16) ans = 1011000000000000
Восстановите исходное значение регистра, которое хранится в reg24
переменная.
memwrite(vv,reg24(3),6,'uint16','A16');
Разъединитесь и вымойтесь — Когда вам больше не будет нужен vv
, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(vv) delete(vv) clear vv
Этот пример использует низкоуровневые функции памяти mempeek
и mempoke
для доступа указывают информацию для Keysight E1432A 51,2 kSa/s цифровых преобразователя с 16 каналами с модулем DSP. Основным преимуществом этих низкоуровневых функций является скорость — они быстрее, чем высокоуровневые функции памяти. Основные недостатки включают неспособность получить доступ к нескольким регистрам с одним вызовом функции, об ошибках не сообщают, и необходимо сопоставить память, к которой нужно получить доступ.
Для получения информации о регистрах цифрового преобразователя, к которым получают доступ в этом примере, обратитесь к Использованию Высокоуровневых Функций Памяти:
Создайте инструментальный объект — Создают объект VISA-VXI vv
сопоставленный с шасси VXI с индексом 0 и цифровым преобразователем Keysight E1432A с логическим адресом 130.
vv = visa('keysight','VXI0::130::INSTR');
Свяжите с инструментом — Подключение vv
к инструменту.
fopen(vv)
Запишите и считайте данные — Прежде чем можно будет использовать низкоуровневые функции памяти, необходимо сначала сопоставить пространство памяти с memmap
функция. Если память требует memmap
не существует, ошибка возвращена. Следующая команда сопоставляет первые 16 регистров пространства памяти A16.
memmap(vv,'A16',0,16);
MappedMemoryBase
и MappedMemorySize
свойства указывают, была ли память сопоставлена. MappedMemoryBase
базовый адрес расширенной памяти и задан как шестнадцатеричная строка. MappedMemorySize
размер расширенной памяти. Эти свойства похожи на MemoryBase
и MemorySize
свойства, которые описывают A24 или пространство памяти A32.
vv.MappedMemoryBase ans = 16737610H
vv.MappedMemorySize ans = 16
Следующая команда выполняет низкоуровневое чтение Регистра ID, который имеет смещение 0.
reg1 = mempeek(vv,0,'uint16') reg1 = 53247
Следующая команда выполняет низкоуровневое чтение Регистра Смещения, который имеет смещение 6.
reg4 = mempeek(vv,6,'uint16') reg4 = 40960
Следующие команды пишут в Регистр Смещения и затем читают значение назад. Обратите внимание на то, что, если вы измените значение этого регистра, вы не сможете получить доступ к пробелу A24.
mempoke(vv,45056,6,'uint16'); mempeek(vv,6,'uint16') ans = 45056
Восстановите исходное значение регистра.
mempoke(vv,reg4,6,'uint16');
Когда вы закончили получать доступ к регистрам, необходимо не сопоставить память с memunmap
функция.
memunmap(vv) vv.MappedMemoryBase ans = 0H
vv.MappedMemorySize ans = 0
Если память все еще сопоставлена, когда объект отключается от инструмента, память автоматически не сопоставлена для вас.
Разъединитесь и вымойтесь — Когда вам больше не будет нужен vv
, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(vv) delete(vv) clear vv