Этот пример показывает, как синхронизировать запуск изображения и сбора данных с помощью Image Acquisition Toolbox™, Data Acquisition Toolbox™ и Национальных Инструментов RTSI способное оборудование.
Часто необходимо синхронизировать две или больше платы приобретения очень тесно. Например, вы могли записать напряжение от сортамента деформации, а также синхронизировали видео во время разрушительного эксперимента, который является дорогостоящим или невозможным копировать. Из-за природы эксперимента это было бы выгодно, чтобы использовать RTSI, чтобы гарантировать самую надежную связь между вашей Национальной Инструментальной картой PCI-6229 сбора данных и устройством захвата изображения PCIe-1430.
Используя Data Acquisition Toolbox, создайте объект аналогового входа записать напряжение от сортамента деформации и настроить параметры для приобретения.
% Create the object. ai = analoginput('nidaq', 'Dev1'); % Add one channel for recording the strain. addchannel(ai, 1); % Set the sample rate to 10,000 Hz. ai.SampleRate = 10000; % Set to acquire samples for one second per trigger. ai.SamplesPerTrigger = 10000;
Затем, установите объект аналогового входа для оборудования провокация строки RTSI 1.
% Set the triggering type to hardware digital. ai.TriggerType = 'hwDigital'; % Set the triggering condition to a positive edge. ai.TriggerCondition = 'PositiveEdge'; % Set the triggering source to RTSI line 1. ai.HwDigitalTriggerSource = 'RTSI1';
Используя Image Acquisition Toolbox, создайте объект ввода видео записать видео и настроить параметры для приобретения и для управления RTSI1 высоко, когда приобретение запустится.
% Create the object. vid = videoinput('ni', 2); % Set to acquire approximately one second of frames per trigger. vid.FramesPerTrigger = 30;
В порядке управлять строкой карты сбора данных RTSI, необходимо установить правильную строку и полярность на устройстве захвата изображения. Кроме того, необходимо определить, какое событие устройства захвата изображения будет управлять строкой RTSI. Вы видите список событий, которые доступны путем рассмотрения специфичных для устройства исходных свойств, которые заканчиваются в “Автомобильной трансмиссии” и “DrivePolarity”:
% Get the currently selected source. src = getselectedsource(vid); % 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';
Смотря на вывод выше, вы видите, что полярность для приобретения в событии прогресса уже установлена в 'возбуждаемый высоким уровнем сигнала', таким образом, вы не должны устанавливать его.
Обратите внимание на то, что максимальное количество строк, которыми можно управлять, аппаратно-зависимо и будет возможно отличаться между устройствами.
В этой точке вы собираетесь получить приблизительно одну секунду данных из каждого устройства, когда устройство получения изображений запущено.
Можно теперь запустить объект аналогового входа и видеть, что он ожидает аппаратного триггера.
start(ai); ai
Display Summary of Analog Input (AI) Object Using 'PCI-6229'. Acquisition Parameters: 10000 samples per second on each channel. 10000 samples per trigger on each channel. 1 sec. of data to be logged per trigger. Log data to 'Memory' on trigger. Trigger Parameters: 1 'HwDigital' trigger(s). Engine status: Waiting for trigger 1 of 1. 0 samples acquired since starting. 0 samples available for GETDATA. AI object contains channel(s): Index: ChannelName: HwChannel: InputRange: SensorRange: UnitsRange: Units: 1 '' 1 [-10 10] [-10 10] [-10 10] 'Volts'
Можно теперь отобразить сводные данные объекта ввода видео и видеть, что он настраивается, чтобы инициировать непосредственно после запуска.
vid
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.
Когда вы запустите объект ввода видео, он будет сразу инициирован и начнет получать. В тот момент устройство захвата изображения отправит сигнал в карту сбора данных через строку RTSI 1, который заставит сбор данных начинаться почти синхронно.
start(vid)
% Wait on both objects until you are done acquiring.
wait(vid), wait(ai, 2)
Если вы теперь отобразите сводные данные, то вы будете видеть, что оба устройства получили данные.
ai
Display Summary of Analog Input (AI) Object Using 'PCI-6229'. Acquisition Parameters: 10000 samples per second on each channel. 10000 samples per trigger on each channel. 1 sec. of data to be logged per trigger. Log data to 'Memory' on trigger. Trigger Parameters: 1 'HwDigital' trigger(s). Engine status: Waiting for START. 10000 samples acquired since starting. 10000 samples available for GETDATA. AI object contains channel(s): Index: ChannelName: HwChannel: InputRange: SensorRange: UnitsRange: Units: 1 '' 1 [-10 10] [-10 10] [-10 10] 'Volts'
и:
vid
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(vid) delete(ai) clear vid ai src