Синхронизация двух National Instruments ™ ® Frame Grabbers

В этом примере показано, как синхронизировать начало захвата изображения с помощью Image Acquisition Toolbox™ и двух сборщиков систем координат с поддержкой National Instruments ™ RTSI.

Часто приходится очень тесно синхронизировать две или более системы координат захвата. Например, вы можете записать синхронизированное видео во время эксперимента, который дорого или невозможно повторить. Из-за особенностей эксперимента было бы выгодно использовать RTSI, чтобы гарантировать наиболее надежную связь между вашими National Instruments ™ 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'       

Установите объект входа видео для аппаратного запуска линии 1 RTSI на переднем ребре.

% 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;

Для порядка линией RTSI PCI-1409 необходимо установить правильную линию и полярность на PCIe-1430. В сложение необходимо определить, какое событие grabber системы координат будет управлять RTSI- линии. Вы можете увидеть список событий, которые доступны, посмотрев на свойства источника конкретного устройства, которые заканчиваются на «DriveLine» и «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';

Глядя на выход выше, можно увидеть, что полярность для события сбора в прогресс уже установлена на 'activeHigh', поэтому вам не нужно устанавливать его.

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

На данной точке вы должны получить приблизительно одну секунду систем координат от каждого устройства, когда 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 объект входа видео, он немедленно срабатывает и начинает приобретать. В этот момент захват системы координат отправит сигнал в другой захват системы координат через линию 1 RTSI, что приведет к тому, что 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