Синхронизация устройств захвата изображения Two National Instruments®

Этот пример показывает, как синхронизировать запуск захвата изображения с помощью Image Acquisition Toolbox™ и двух Национальных Инструментов RTSI способные устройства захвата изображения.

Часто необходимо синхронизировать два или больше устройства захвата изображения очень тесно. Например, вы могли записать синхронизируемое видео во время эксперимента, который является дорогостоящим или невозможным копировать. Из-за природы эксперимента это было бы выгодно, чтобы использовать RTSI, чтобы гарантировать самую надежную связь между вашими Национальными инструментами PCI-1409 и устройствами захвата изображения PCIe-1430.

Сконфигурируйте PCI-1409

Используя Image Acquisition Toolbox, создайте объект ввода видео записать видео и настроить параметры для приобретения.

% Create the object.
vid1409 = videoinput('ni', 1);
% Set to acquire approximately one second of frames per trigger.
vid1409.FramesPerTrigger = 30;

Можно использовать любую карту, чтобы инициировать другой, но этот пример использует PCIe-1430, чтобы инициировать PCI-1409. Смотрите, какие инициировавшие настройки доступны для PCI-1409.

% See the possible settings.
triggerinfo(vid1409)
   Valid Trigger Configurations:

      TriggerType:   TriggerCondition:   TriggerSource:
      'immediate'    'none'              'none'        
      'manual'       'none'              'none'        
      'hardware'     'fallingEdge'       'external0'   
      'hardware'     'fallingEdge'       'external1'   
      'hardware'     'fallingEdge'       'external2'   
      'hardware'     'fallingEdge'       'external3'   
      'hardware'     'fallingEdge'       'rtsi0'       
      'hardware'     'fallingEdge'       'rtsi1'       
      'hardware'     'fallingEdge'       'rtsi2'       
      'hardware'     'fallingEdge'       'rtsi3'       
      'hardware'     'fallingEdge'       'rtsi4'       
      'hardware'     'fallingEdge'       'rtsi5'       
      'hardware'     'fallingEdge'       'rtsi6'       
      'hardware'     'risingEdge'        'external0'   
      'hardware'     'risingEdge'        'external1'   
      'hardware'     'risingEdge'        'external2'   
      'hardware'     'risingEdge'        'external3'   
      'hardware'     'risingEdge'        'rtsi0'       
      'hardware'     'risingEdge'        'rtsi1'       
      'hardware'     'risingEdge'        'rtsi2'       
      'hardware'     'risingEdge'        'rtsi3'       
      'hardware'     'risingEdge'        'rtsi4'       
      'hardware'     'risingEdge'        'rtsi5'       
      'hardware'     'risingEdge'        'rtsi6'       

Установите объект ввода видео для оборудования провокация строки RTSI 1 на возрастающее ребро.

% Set the triggering configuration.
triggerconfig(vid1409, 'hardware', 'risingEdge', 'rtsi1');

Сконфигурируйте PCIe-1430

Создайте объект ввода видео записать видео и настроить параметры для приобретения и для управления RTSI1 высоко, когда приобретение запустится.

% Create the object.
vid1430 = videoinput('ni', 2);
% Set to acquire approximately one second of frames per trigger.
vid1430.FramesPerTrigger = 30;

В порядке управлять строкой 1409 PCI RTSI, необходимо установить правильную строку и полярность на PCIe-1430. Кроме того, необходимо определить, какое событие устройства захвата изображения будет управлять строкой RTSI. Вы видите список событий, которые доступны путем рассмотрения специфичных для устройства исходных свойств, которые заканчиваются в “Автомобильной трансмиссии” и “DrivePolarity”:

% Get the currently selected source.
src = getselectedsource(vid1430);
% Display the properties and their possible settings.
set(src)
  General Settings:
    Tag

  Device Specific Properties:
    AcquisitionDoneDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ]
    AcquisitionDoneDrivePolarity: [ {activeHigh} | activeLow ]
    AcquisitionInProgressDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ]
    AcquisitionInProgressDrivePolarity: [ {activeHigh} | activeLow ]
    ExternalTriggerLineFilter: [ off | {on} ]
    FrameDoneDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ]
    FrameDoneDrivePolarity: [ {activeHigh} | activeLow ]
    FrameStartDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ]
    FrameStartDrivePolarity: [ {activeHigh} | activeLow ]
    HSyncDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ]
    HSyncDrivePolarity: [ {activeHigh} | activeLow ]
    RTSITriggerLineFilter: [ off | {on} ]
    VSyncDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ]
    VSyncDrivePolarity: [ {activeHigh} | activeLow ]

В этом случае вы хотите управлять строкой RTSI 1 высокое, когда приобретение происходит. Это гарантирует, что строка управляется высоко, как только приобретение начинается. Для этого необходимо установить приобретение в строке диска прогресса к 'rtsi1':

% Set to drive RTSI1 high when the acquisition begins.
src.AcquisitionInProgressDriveLine = 'rtsi1';

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

Обратите внимание на то, что максимальное количество строк, которыми можно управлять, аппаратно-зависимо и будет возможно отличаться между устройствами.

В этой точке вы собираетесь получить приблизительно одну секунду кадров от каждого устройства, когда PCIe-1430 запускается.

Запустите получение изображений

Можно теперь запустить объект ввода видео PCI-1409 и видеть, что он ожидает аппаратного триггера.

start(vid1409);
vid1409
Summary of Video Input Object Using 'PCI/PXI-1409'.

   Acquisition Source(s):  Channel 0, Channel 1, Channel 2, and 
                           Channel 3 are available.

  Acquisition Parameters:  'Channel 0' is the current selected source.
                           30 frames per trigger using the selected source.
                           'img1' video data to be logged upon START.
                           Grabbing first of every 1 frame(s).
                           Log data to 'memory' on trigger.

      Trigger Parameters:  1 'hardware' trigger(s).

                  Status:  Waiting for trigger 1 of 1.
                           0 frames acquired since starting.
                           0 frames available for GETDATA.

Можно теперь отобразить сводные данные объекта ввода видео PCIe-1430 и видеть, что он настраивается, чтобы инициировать непосредственно после запуска.

vid1430
Summary of Video Input Object Using 'PCIe-1430'.

   Acquisition Source(s):  Channel 0 is available.

  Acquisition Parameters:  'Channel 0' is the current selected source.
                           30 frames per trigger using the selected source.
                           'img0_Port0' video data to be logged upon START.
                           Grabbing first of every 1 frame(s).
                           Log data to 'memory' on trigger.

      Trigger Parameters:  1 'immediate' trigger(s) on START.

                  Status:  Waiting for START.
                           0 frames acquired since starting.
                           0 frames available for GETDATA.

Когда вы запустите объект ввода видео PCIe-1430, он будет сразу инициирован и начнет получать. В тот момент устройство захвата изображения отправит сигнал в другое устройство захвата изображения через строку RTSI 1, который заставит PCI-1409 начинаться почти синхронно.

start(vid1430)
% Wait on both objects until you are done acquiring.
wait(vid1430), wait(vid1409)

Отобразите сводные данные приобретений

Если вы теперь отобразите сводные данные, то вы будете видеть, что оба устройства получили кадры.

vid1409
Summary of Video Input Object Using 'PCI/PXI-1409'.

   Acquisition Source(s):  Channel 0, Channel 1, Channel 2, and 
                           Channel 3 are available.

  Acquisition Parameters:  'Channel 0' is the current selected source.
                           30 frames per trigger using the selected source.
                           'img1' video data to be logged upon START.
                           Grabbing first of every 1 frame(s).
                           Log data to 'memory' on trigger.

      Trigger Parameters:  1 'hardware' trigger(s).

                  Status:  Waiting for START.
                           30 frames acquired since starting.
                           30 frames available for GETDATA.
                           

и:

vid1430
Summary of Video Input Object Using 'PCIe-1430'.

   Acquisition Source(s):  Channel 0 is available.

  Acquisition Parameters:  'Channel 0' is the current selected source.
                           30 frames per trigger using the selected source.
                           'img0_Port0' video data to be logged upon START.
                           Grabbing first of every 1 frame(s).
                           Log data to 'memory' on trigger.

      Trigger Parameters:  1 'immediate' trigger(s) on START.

                  Status:  Waiting for START.
                           30 frames acquired since starting.
                           30 frames available for GETDATA.

Очистите Объекты

Если объекты ввода видео больше не необходимы, удаляют их и очищают их и ссылку на источник из рабочей области.

delete(vid1430)
delete(vid1409)
clear vid1430 vid1409 src