Коммутационный модуль состоит из набора управляемых реле/переключателей, которые могут быть расположены и адресованы для обеспечения различных конфигураций соединения. При использовании с соответствующей клеммной колодкой модуль NI-коммутатора может быть сконфигурирован для использования определенной топологии коммутатора, такой как мультиплексор или матричная топология с однопроводными или многопроводными режимами переключения. Одним из распространенных применений является объединение одного или более измерительных приборов с коммутационным модулем для выполнения автоматических измерений на ряде устройств или контрольных точек схемы. В этом примере для измерения сопротивления 5 резистивных устройств в двухпроводном режиме измерения сопротивления используется модуль переключения NI вместе с цифровым мультиметром NI (DMM).
Примечание.Модуль коммутатора и модуль DMM, упомянутые ниже, сконфигурированы как моделируемые устройства в NI-MAX для публикации этого примера.
Модуль NI 2530 коммутатора, используемый с приставкой матричной клеммной колодки и сконфигурированный в NI MAX для использования двухпроводной матричной топологии 4x16.
Цифровой мультиметр NI 4065 (DMM), подключенный к строке матрицы коммутатора «r0».
Пять резисторов, подключенных к столбцам матрицы «c0» к «c4».
Для запуска этого примера необходимо установить следующие пакеты поддержки оборудования:
Для подключения к модулю коммутатора используйте предварительно созданный драйвер прибора MATLAB ® 'niswitch.mdd', установленный с пакетом поддержки NI-SWITCH, а в качестве имени ресурса используйте имя устройства из NI MAX (например 'PXI1Slot3'). MATLAB использует драйвер NI-SWITCH для связи с прибором. По умолчанию коммутационные модули 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-Switch и NI-DMM используют предопределенные константы в качестве аргументов функции для настройки конкретных настроек и операций. Их значения перечислены в соответствующих файлах справки драйвера. Эти константы определяются в файлах заголовков C, входящих в состав драйверов NI-SWITCH и NI-DMM:
'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');
Коммутационный модуль может быть сконфигурирован для переключения между различными путями соединения путем сканирования, т.е. последовательного переключения и продвижения через список соединений, определенный в списке сканирования. Переключение соединения во время сканирования может быть синхронизировано с измерительным прибором посредством аппаратного запуска (аппаратно-синхронизированное квитирование) или может быть программно-синхронизировано с помощью команды программного запуска.
Чтобы настроить операцию сканирования, укажите список подключений в виде строки списка сканирования. Здесь переключатель будет циклически подключаться между измерительным прибором (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]);

disconnect(mySwitch); delete(mySwitch); disconnect(myDMM); delete(myDMM);