Модуль переключателя состоит из массива управляемых реле/переключателей, которые могут быть расположены и обращены, чтобы обеспечить различные настройки связи. Когда используется с соответствующей клеммной колодкой, модуль переключателя NI может быть сконфигурирован, чтобы использовать определенную топологию переключателя, такую как мультиплексор или матричная топология с одной - или многопроводные режимы переключения. Одно распространенное приложение должно объединить один или несколько измерительных приборов с модулем переключателя, чтобы выполнить автоматизированные измерения в ряде контрольных точек схемы или устройств. Этот пример использует модуль переключателя NI вместе с NI цифровой мультиметр (DMM), чтобы измерить сопротивление 5 резистивных устройств в двухпроводном режиме измерения сопротивления.
Примечание: модуль Переключателя и DMM, упомянутый ниже, сконфигурированы как симулированные устройства в NI-MAX в целях публикации этого примера.
Модуль переключателя NI 2530, используемый с матричным аксессуаром клеммной колодки и сконфигурированный в NI MAX, чтобы использовать 2-проводное 4x16 матричная топология.
NI 4065 цифровой мультиметр (DMM), соединенный со строкой матрицы переключателя 'r0'.
Пять резисторов, соединенных со столбцами матрицы переключателя 'c0' к 'c4'.
Чтобы запустить этот пример, следующие пакеты аппаратной поддержки должны быть установлены:
Чтобы соединиться с модулем переключателя, используйте предварительно созданный инструментальный драйвер MATLAB® 'niswitch.mdd', как установлено с пакетом поддержки ПЕРЕКЛЮЧАТЕЛЯ NI, и как использование имени ресурса имя устройства от NI MAX (такой как 'PXI1Slot3'). MATLAB будет использовать драйвер ПЕРЕКЛЮЧАТЕЛЯ NI, чтобы связаться с инструментом. defaut модули переключателя NI используют настройку топологии, заданную в NI MAX (обеспеченный поставщиками утилиту).
mySwitch = icdevice('niswitch.mdd', 'PXI1Slot3'); connect(mySwitch);
Чтобы связать с инструментом DMM, используйте предварительно созданный инструментальный драйвер MATLAB 'nidmm.mdd', как установлено с пакетом поддержки NI-DMM. Для имени ресурса используйте имя устройства от NI MAX (такой как 'Dev1'). MATLAB будет использовать драйвер NI-DMM, чтобы связаться с инструментом.
myDMM = icdevice('nidmm.mdd', 'Dev1'); connect(myDMM);
Переключатель NI и драйверы NI-DMM используют предопределенные константы в качестве аргументов функции для конфигурирования определенных настроек и операций. Их значения перечислены в соответствующих справочных файлах драйвера. Эти константы заданы в заголовочных файлах C, включенных с драйверами NI-DMM и ПЕРЕКЛЮЧАТЕЛЕМ NI:
'niswitch.h' и 'IviSwtch.h' в 'C:\Program Files\IVI Foundation\IVI\Include'
'nidmm.h' и 'IviDmm.h' в 'C:\Program Files\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');
Модуль переключателя может быть сконфигурирован, чтобы переключиться между различными путями к связи путем сканирования, i.e. последовательно переключаясь и совершенствуясь через список связей, как задано в списке сканов. Связь, переключающаяся во время сканирования, может синхронизироваться с измерительным прибором инициированием оборудования (синхронизированное оборудованием квитирование) или может быть синхронизирована программным обеспечением триггерной командой программного обеспечения.
Чтобы сконфигурировать операцию сканирования, задайте список связей как строка списка сканов. Здесь, переключатель циклически повторится посредством связей между измерительным прибором (DMM) в строке матрицы 'r0' и устройствами под тестом в столбцах матрицы 'c0' к 'c4'. Для получения дополнительной информации в списке сканов синтаксис обращаются к документации драйвера ПЕРЕКЛЮЧАТЕЛЯ NI.
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]);
disconnect(mySwitch); delete(mySwitch); disconnect(myDMM); delete(myDMM);