Использование модуля NI Switch и NI DMM для выполнения измерений сопротивления

Модуль switch состоит из массива управляемых реле/коммутаторов, которые могут быть расположены и адресованы для обеспечения различных строений соединения. При использовании с соответствующим клеммным блоком может быть сконфигурирован модуль NI switch для использования определенной топологии коммутатора, такой как мультиплексор или матричная топология с одно- или многопроводными режимами переключения. Одним из распространенных применений является объединение одного или нескольких измерительных приборов с модулем переключателя для выполнения автоматических измерений на ряде устройств или контрольных тестовых точках схемы. Этот пример использует модуль NI-переключателя вместе с цифровым мультиметром NI (DMM) для измерения сопротивления 5 резистивных устройств в двухпроводном режиме измерения сопротивления.

Setup оборудования

Примечание.Модуль Switch и DMM, упомянутые ниже, сконфигурированы как моделируемые устройства в NI-MAX для публикации этого примера.

  • Модуль NI 2530 switch, используемый с матричным клеммным блоком и сконфигурированный в NI MAX, чтобы использовать 2-проводную матричную топологию 4x16.

  • Цифровой мультиметр NI 4065 (DMM), подключенный к строке матрицы коммутатора 'r0'.

  • Пять резисторов подключены к столбцам матрицы switch 'c0' к 'c4'.

Требования

Чтобы запустить этот пример, необходимо установить следующие пакеты аппаратной поддержки:

Инициализация соединения с модулем NI Switch

Для подключения к модулю switch используйте предварительно созданный драйвер прибора MATLAB ® 'niswitch.mdd', установленный с пакетом поддержки NI-SWITCH, и в качестве имени ресурса используйте имя устройства из NI MAX (например, 'PXI1Slot3'). MATLAB будет использовать драйвер NI-SWITCH для связи с прибором. По умолчанию в модулях NI-коммутаторов используется строение топологии, заданная в NI MAX (утилита, предоставляемая поставщиком).

mySwitch = icdevice('niswitch.mdd', 'PXI1Slot3');
connect(mySwitch);

Инициализация соединения с цифровым мультиметром NI

Для подключения к прибору DMM используйте предварительно созданный драйвер прибора MATLAB 'nidmm.mdd', установленный с пакетом поддержки NI-DMM. Для имени ресурса используйте имя устройства из NI MAX (например, 'Dev1'). MATLAB будет использовать драйвер NI-DMM для связи с прибором.

myDMM = icdevice('nidmm.mdd', 'Dev1');
connect(myDMM);

Задайте константы, используемые функциями драйвера

Драйверы NI-Switch и NI-DMM используют предопределенные константы в качестве аргументов функции для настройки конкретных настроек и операций. Их значения перечислены в соответствующих файлах справки драйвера. Эти константы определены в файлах заголовков C, включенных в драйверы NI-SWITCH и NI-DMM:

  • 'niswitch.h' и 'IviSwtch.h' в 'C :\Файлы программ\IVI Foundation\IVI\Include'

  • 'nidmm.h' и 'IviDmm.h' в 'C :\Файлы программ\IVI Foundation\IVI\Include'

const.NISWITCH_VAL_BREAK_BEFORE_MAKE = 1;
const.NISWITCH_VAL_SOFTWARE_TRIG = 3;
const.NISWITCH_VAL_NONE = 0;
const.NIDMM_VAL_2_WIRE_RES = 5;
const.NIDMM_VAL_SOFTWARE_TRIG = 3;
const.NIDMM_VAL_AUTO_RANGE_ON = -1;
const.NIDMM_VAL_TIME_LIMIT_AUTO = -1;

Сброс коммутатора

Сбросьте переключатель в состояние подключения по умолчанию.

invoke(mySwitch.Utility, 'Reset');

Сконфигурируйте цифровой мультиметр

Сконфигурируйте тип измерения DMM как двухпроводное измерение сопротивления. Сконфигурируйте DMM, чтобы выполнить операцию автообласти значений перед каждым измерением и укажите разрешение измерения.

invoke(myDMM.ConfigurationMeasurementOptions, 'ConfigurePowerLineFrequency', 60);
MeasurementFunction = const.NIDMM_VAL_2_WIRE_RES;
Range = const.NIDMM_VAL_AUTO_RANGE_ON;
ResolutionDigits = 5.5;
invoke(myDMM.Configuration, 'ConfigureMeasurementDigits', MeasurementFunction, Range, ResolutionDigits);

Создайте коммутационное соединение и выполните одно измерение сопротивления

Соедините путь между тестируемым устройством (DUT) на переключателе матрицы столбцом 'c0' и измерительным прибором, в этом случае DMM на строке 'r0'.

invoke(mySwitch.Route, 'Connect', 'r0', 'c0');
MaximumTimeMs = 5000;
invoke(mySwitch.Route, 'WaitForDebounce', MaximumTimeMs);

После установки переключателя приступите к измерению.

MaximumTime = const.NIDMM_VAL_TIME_LIMIT_AUTO;
reading = invoke(myDMM.Acquisition, 'Read', MaximumTime);

% Check if DMM reading was over-range
IsOverRange = invoke(myDMM.Acquisition, 'IsOverRange', reading);
disp(reading);
disp(IsOverRange);
   5.0002e+07

     0

Отсоедините путь между клеммами 'r0' и 'c0'.

invoke(mySwitch.Route, 'disconnect', 'r0', 'c0');

Программно-управляемая операция сканирования коммутатора

Модуль switch может быть сконфигурирован для переключения между различными путями соединения путем сканирования, т.е. последовательного переключения и продвижения через список соединений, как определено в списке скана. Переключение соединения во время сканирования может быть синхронизировано с помощью измерительного прибора с помощью аппаратного запуска (аппаратное квитирование по времени) или может быть программно синхронизировано по команде программного триггера.

Чтобы сконфигурировать операцию сканирования, укажите список подключений в виде строки списка сканов. Здесь переключатель будет циклически соединяться между измерительным прибором (DMM) в строке матрицы 'r0' и тестируемыми устройствами в матричных столбцах 'c0' к 'c4'. Для получения дополнительной информации о синтаксисе списка скана см. документацию по драйверу NI-SWITCH.

NrConnections = 5;
scanList = 'c0:4->r0;';
scanMode = const.NISWITCH_VAL_BREAK_BEFORE_MAKE;
invoke(mySwitch.Scan, 'configureScanList', scanList, scanMode);

% Set scan trigger input to software -- switching to the next connection in
% the scan list will be done as a result of a SendSoftwareTrigger command.
scanDelay = 0;
triggerInput = const.NISWITCH_VAL_SOFTWARE_TRIG;
scanAdvancedOutput = const.NISWITCH_VAL_NONE;
invoke(mySwitch.Scan, 'ConfigureScanTrigger', scanDelay, triggerInput, scanAdvancedOutput);

% Configure switch to cycle only once through the scan list by disabling
% the continuous scan mode.
invoke(mySwitch.Scan, 'SetContinuousScan', 0);

Инициируйте операцию скана коммутатора с помощью программного запуска.

invoke(mySwitch.Scan, 'InitiateScan');

for ii=1:NrConnections
    % Perform DMM measurement
    readings(ii) = invoke(myDMM.Acquisition, 'Read', const.NIDMM_VAL_TIME_LIMIT_AUTO);
    % Check if DMM reading is over-range
    IsOverRange = invoke(myDMM.Acquisition, 'IsOverRange', readings(ii));
    if IsOverRange
        fprintf('Measurement %d is over range.\n', ii);
    end
    % Send trigger command to switch to advance to next connection
    invoke(mySwitch.Scan, 'SendSoftwareTrigger');
end

Отобразите результаты измерений.

figure;
bar(readings);
ylabel('Resistance (ohm)');
xlabel('Device #');
set(gca, 'XTick', [1:NrConnections]);

Отсоединение от модуля Switch и прибора DMM

disconnect(mySwitch);
delete(mySwitch);

disconnect(myDMM);
delete(myDMM);