В этом примере показано, как синхронизировать начало захвата изображения с помощью функции Imagement Acquisition Toolbox™ и двух устройств захвата кадров с поддержкой RTSI National Instruments.
Часто необходимо очень близко синхронизировать два или более захватчиков кадров. Например, можно записать синхронизированное видео во время эксперимента, который дорого или невозможно дублировать. Из-за характера эксперимента было бы полезно использовать RTSI для обеспечения наиболее надежной связи между вашими национальными приборами PCI-1409 и PCIe-1430 рамными захватчиками.
С помощью панели инструментов получения изображений создайте объект ввода видео для записи видео и настройте параметры для получения.
% 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');
Создайте объект ввода видео, чтобы записать видео и настроить параметры для получения и для управления 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. Кроме того, необходимо определить, какое событие захвата кадров будет управлять линией RTSI. Список доступных событий можно просмотреть, посмотрев на специфичные для устройства свойства исходного кода, которые заканчиваются на «StartLine» и «GroupPolarity»:
% 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 ]
В этом случае необходимо повысить уровень линии 1 RTSI, когда выполняется сбор данных. Это гарантирует, что линия будет поднята, как только начнется сбор данных. Для этого необходимо установить для строки диска в процессе сбора данных значение «rtsi1»:
% Set to drive RTSI1 high when the acquisition begins. src.AcquisitionInProgressDriveLine = 'rtsi1';
На приведенных выше выходных данных видно, что полярность для события acquisition in progress уже установлена на «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