파형 데이터 (2 채널) 및 아날로그 입력 트리거 (사전 트리거 모드에서 설정 - 음의 지연 값)를 수집 할 때 matlab에서 DataMissed 이벤트를 수신합니다. 여기 NI 보드에서 데이터 수집을 할 때 matlab에서 데이터 누락 이벤트를 피하는 방법은 무엇입니까?
코드입니다 : 트리거 이벤트합니다 (showdaqevents (인공 지능)를 사용하여) 수신 한 후sampleRate = 500000;
pretrigger = 8;
trigger_value = 0.6;
ai = analoginput('nidaq','Dev1');
ch = addchannel(ai,0:channels);
set(ai,'SampleRate',sampleRate);
requiredSamples = floor(pretrigger*sampleRate);
set(ai,'SamplesPerTrigger',requiredSamples);
%triggering
set(ai,'TriggerChannel',ch(channels+1));
set(ai,'TriggerType','Software');
set(ai,'TriggerCondition','Rising');
set(ai,'TriggerConditionValue',trigger_value);
set(ai,'TriggerDelay',-pretrigger);
set(ai, 'TriggerRepeat', 0);
set(ai,'LoggingMode','Disk');
set(ai,'LogToDiskMode','Index');
set(ai,'LogFileName',[filename '_01']);
waitTime = pretrigger * 1.1 + 0.5;
for k = 1:100
start(ai);
CurrentFile = get(ai,'LogFileName');
disp(['Acquiring for ' CurrentFile]);
while strcmp((get(ai, 'Running')), 'On')
pause(1);
end
wait(ai,waitTime);
showdaqevents(ai)
disp(['Triggered ' CurrentFile]);
while strcmp((get(ai, 'Logging')), 'On'); end;
disp(['Saved ' CurrentFile]);
end
stop(ai);
delete(ai);
clear ai;
이 코드를 실행, 나는 이벤트 누락 된 데이터를 얻을. 그러나 데이터 누락 이벤트에는 샘플 번호가 없으므로 트리거 이후에 오는 것으로 완전히 확신 할 수는 없습니다.
- 엔진은 속도를 따르지 못할 : 주어진 두 가지 설명이있다 matlab에 documentation에서 이벤트 부재
1 Start (14:55:35, 0) 2 Trigger#1 (14:56:02, 0) Channel: [3] 3 DataMissed ( N/A , 13959168) 4 DataMissed ( N/A , 13959168) 5 DataMissed ( N/A , 13959168) 6 DataMissed ( N/A , 13959168) 7 DataMissed ( N/A , 13959168) 8 DataMissed ( N/A , 13959168) 9 Stop (14:56:03, 5)
데이터로 상대 : 여기
는 showdaqevents 출력의 예 취득. - 드라이버는 이전에 획득 한 데이터가 읽히기 전에 하드웨어의 FIFO 버퍼에 새 데이터를 썼습니다. 보통 BufferingConfig 속성을 사용하여 메모리 블록의 크기를 늘려이 문제를 회피 할 수 있습니다 ( ).
daqmem 명령으로 사용할 수있는 메모리를 늘리려고했으나 제대로 작동하지 않습니다. 500000 샘플/초, 3 채널은 트리거 당 총 약 90MB이며, daqmem은 360MB 이상 무료로보고합니다 (buffermode는 Auto로 설정되어 있음). while 루프에서 메모리를 지우려면 getdata (ai)를 주기적으로 호출해야하는지 궁금합니다. 다른 가능성은 시스템의 샘플링 속도가 너무 높다는 것입니다.
는하드웨어 :
- 듀얼 코어 CPU (애슬론 X2 3200), 4GB의 RAM, 500기가바이트 SATA 하드 디스크는
- NI PCI-6122
내가 언급해야하는지고의 가능성 DataMissed 이벤트가 길어지면 트리거를 누르기 전에 시스템을 가져옵니다.
데이터 수집 코드에 문제가 있습니까? (수집 중간에 일시 중지가 발생하는 것에 대해 가장 잘 모릅니다)? 하드웨어? 걱정하지 않아도 될까요? NI 보드를 다루기 위해 Visual Studio가 더 좋습니까?
데이터 손실 이벤트는 샘플 속도가 낮거나 기록 시간이 짧을 때 자주 발생하지 않습니다. 로깅을 진행하면 문제가 해결되고 더 이상 DataMissed 이벤트가 발생하지 않습니다. – Ben