Этот пример показывает, как получить цифровую форму волны от двух каналов Национального драйвера Instruments® NI-SCOPE в режиме симуляции.
Instrument Control Toolbox™ поддерживает связь с инструментами через высокоуровневые драйверы. В этом примере можно получить цифровые формы волны от Национального драйвера Instruments® NI-SCOPE в режиме симуляции.
Этот пример требует системы Microsoft® Windows® и пакета ОСЦИЛЛОГРАФА NI 3.6 или выше. Убедитесь, что Measurement & Automation Explorer распознает драйвер ОСЦИЛЛОГРАФА NI, прежде чем вы будете использовать этот пример.
Используйте команду instrhwinfo
, чтобы проверять, установлен ли пакет программного обеспечения ОСЦИЛЛОГРАФА NI правильно. Если установлено правильно, ОСЦИЛЛОГРАФ NI перечислен как один из модулей, установленных на машине Windows. Этот пример пользуется библиотеками, установленными с ним.
driversInfo = instrhwinfo ('ivi');
disp(driversInfo.Modules');
'nidmm' 'niScope' 'nisDCPwr' 'nisDigitizer' 'nisDmm' 'nisFGen' 'nisRFSigGen' 'nisScope'
Используйте функцию icdevice
, чтобы создать инструментальный объект из MDD, который вы сгенерировали, и установите связь с осциллографом с помощью того объекта.
Функция icdevice
берет два или больше входных параметра. Имя файла MDD, имя ресурса для осциллографа и опционально, специфичные для устройства параметры, которые могут быть установлены.
Можно получить имя ресурса для осциллографа из Проводника Измерения и Автоматизации NI. Например: именем ресурса PXI1Slot6
в NI, MAX был бы DAQ::PXI1Slot6
и Device 1
, будет DAQ::Dev1
. Можно удалить аргумент optionstring
и соответствующий строковый параметр, если у вас есть фактическое оборудование.
Можно установить связь с осциллографом с помощью команды connect
.
ictObj = icdevice('niscope.mdd', 'DAQ::Dev1', 'optionstring', 'simulate=true'); connect(ictObj); disp(ictObj);
Instrument Device Object Using Driver : niScope Instrument Information Type: IVIInstrument Manufacturer: National Instruments Corp. Model: NI Digitizers Driver Information DriverType: MATLAB IVI DriverName: niScope DriverVersion: 1.0 Communication State Status: open
В целях этого примера осциллограф сконфигурирован с помощью автоматической настройки, которая автоматически устанавливает вертикальную область значений, частоту дискретизации, пороговый уровень и несколько других настроек.
Используйте Инструментальный Редактор Драйвера MATLAB (midedit), чтобы просмотреть другие свойства и функции, которые позволяют вам конфигурировать устройство. Инструмент показывает все свойства и функции, что пакет программного обеспечения ОСЦИЛЛОГРАФА NI поддерживает.
configuration = ictObj.Configuration;
invoke(configuration, 'autosetup');
Функция ConfigureVertical конфигурирует обычно сконфигурированные атрибуты цифрового преобразователя вертикальная подсистема, такие как область значений, смещение, связь, тестовое затухание и канал. Мы будем выбирать данные из каналов '0' и '1' и поэтому конфигурировать эти каналы. Обратитесь к документации Осциллографа NI для получения дополнительной информации.
Range = 10; Offset = 0; Coupling = 1; ProbeAttenuation = 1; % Configure Channel 0 invoke(ictObj.Configurationfunctionsvertical, 'configurevertical', '0', Range, Offset, Coupling, ProbeAttenuation, true); % Configure Channel 1 invoke(ictObj.Configurationfunctionsvertical, 'configurevertical', '1', Range, Offset, Coupling, ProbeAttenuation, true);
Информацией о форме волны является структура, содержащая информацию о синхронизации, количество выборок, усиления и масштабных коэффициентов смещения для получения формы волны от осциллографа. Память будет предварительно выделена для информационной структуры формы волны для каждого канала.
numChannels = 2; channelList = '0,1'; numSamples = 1024; for i = 1:numChannels waveformInfo(i).absoluteInitialX = 0; waveformInfo(i).relativeInitialX = 0; waveformInfo(i).xIncrement = 0; waveformInfo(i).actualSamples = 0; waveformInfo(i).offset = 0; waveformInfo(i).gain = 0; waveformInfo(i).reserved1 = 0; waveformInfo(i).reserved2 = 0; end
Если вы конфигурируете осциллограф с необходимыми настройками, используйте соответствующий вызов функции получить форму волны от каналов 0
и 1
. Предварительно выделите waveformArray, чтобы хранить данные от всех требуемых каналов. До выбирающих данных должно инициироваться приобретение формы волны. После выборки данных извлеките форму волны, соответствующую каждому каналу.
waveformArray = zeros(numChannels * numSamples, 1); TimeOut = 10; % seconds invoke(ictObj.Acquisition, 'initiateacquisition'); [waveformArray, waveformInfo] = invoke(ictObj.Acquisition, 'fetch', channelList,... TimeOut, numSamples, waveformArray, waveformInfo); waveformArray = reshape(waveformArray, numSamples, numChannels);
plot(waveformArray);
Удалите инструментальный объект MATLAB.
disconnect(ictObj);
delete(ictObj);
clear ictObj;