Verfasst am: 06.08.2012, 12:48
Titel: DAQ Toolbox "WAIT reached its timeout before OBJ stoppe
Hallo zusammen,
beim Testen meines Messprogramms ist mir folgendes passiert:
Ich habe eine Routine, die die aktuelle Position des Messrechens erfasst und sobald dieser eine bestimmte Position erreicht, wird ein Messpunkt genommen.
Das klappt auch grundsätzlich wunderbar.
Lediglich manchmal (heute in 5 von 24 Fällen) kommt im Command Window ein Fehler:
"WAIT reached its timeout before OBJ stopped running
Error in daqdevice.wait at 51 wait(uddobjs,waittime)"
Dieser Fehler bezieht sich bisher auf eine Abfrage der u_z Werte
Den genauen Code meiner Routine findet ihr in einer gekürzten Version am Ende des Posts.
Da ich den Wait-timer auf 2 Sekunden gesetzt habe und eine Messung nur etwa 0,1 sekunde geht (auch nicht länger gehen soll) scheint es doch ein Fehler in der Kommunikation zwischen Wandler (NI USB 6218 BNC) und PC zu geben?!
Weiß jemand ob man das
a) besser Programmieren kann/muss?
b) mit anderen Treibern (NIDAQmx) lösen kann?
c) akzeptieren muss?
Wie immer danke ich euch für eure Hilfe!
Gruß,
Christian
Code:
function measspan
ok=0;
ai=analoginput('nidaq','dev2');
addchannel(ai,0:6);
set(ai,'SampleRate',20000);
h=helpdlg('Drive wake rake into one of the arresters and set speed to an average level',...
'Wake rake adjustment');
waitfor(h) clear h
while ok==0 load data\currentoptions.mat load data\caldata.mat
ok2=0;
g_deltaz=1.5;
% Voltage for smallest deltaz distance
u_deltaz=u_ws3/110*g_deltaz;
set(ai,'SamplesPerTrigger',50);
start(ai);
wait(ai,2);
data=getdata(ai);
i=6;
datamp=length(data);
u_zstart=0;
while i<=datamp;
u_zstart=u_zstart+data(i,2);
i=i+1;
end
u_zstart=u_zstart/(datamp-5);
ifabs(u_zstart-u_ws1)<abs(u_zstart-u_ws2) dir=0;
elseifabs(u_zstart-u_ws1)>=abs(u_zstart-u_ws2) dir=1;
end ifdir==0;
%PLATZHALTER RELAIS
elseifdir==1;
%PLATZHALTER RELAIS
end % maximal travel distance
g_zborder=50;
summz=2*g_zborder/g_deltaz;
% driving wake rake to starting position while ok2==0 % ADWANDLERABFRAGE u_z
start(ai);
wait(ai,2);
dataz=getdata(ai);
i=6;
datamp=length(dataz);
u_z=0;
while i<=datamp;
u_z=u_z+dataz(i,2);
i=i+1;
end
u_z=u_z/(datamp-5);
g_zs1=(u_z-u_ws2)/u_ws3*110+55;
ifdir==1 && g_zs1>g_zborder
ok2=0;
elseifdir==0 && g_zs1<-g_zborder
ok2=0;
else
ok2=1;
mz=0;
u_zstart=u_z;
end end % Pre-allocate variables
g_al_ave=0;
F_lift_ave=0;
p_qm_ave=0;
clift_ave=0;
p_gmax_ave=0;
p_gm_ave=0;
p_delta_ave=0;
cdrag_ave=0;
ok2=0;
while ok2==0
%Measuring loop
set(ai,'SamplesPerTrigger',100);
start(ai);
wait(ai,2);
data=getdata(ai);
u_aa=0;
u_lift=0;
u_pq=0;
u_gmax=0;
u_gm=0;
u_pdelta=0;
i=6;
datamp=length(data);
while i<=datamp;
u_aa=u_aa+data(i,1);
u_lift=u_lift+data(i,3);
u_pq=u_pq+data(i,4);
u_gmax=u_gmax+data(i,1);
u_gm=u_gm+data(i,1);
u_pdelta=u_pdelta+data(i,1);
i=i+1;
end
u_aa=u_aa/(datamp-5);
u_lift=u_lift/(datamp-5);
u_pq=u_pq/(datamp-5);
u_gmax=u_gmax/(datamp-5);
u_gm=u_gm/(datamp-5);
u_pdelta=u_pdelta/(datamp-5);
% calculate current values (RAUSGEKÜRZT)
ok3=0;
while ok3==0 set(ai,'SamplesPerTrigger',50);
start(ai);
wait(ai,2);
dataz=getdata(ai);
i=6;
datamp=length(dataz);
u_z=0;
while i<=datamp;
u_z=u_z+dataz(i,2);
i=i+1;
end
u_z=u_z/(datamp-5);
if u_z<(u_zstart+u_deltaz*mz) && dir==0
ok3=0;
elseif u_z>(u_zstart-u_deltaz*mz) && dir==1
ok3=0;
else
ok3=1;
end end
g_zstop=(u_z-u_ws2)/u_ws3*113+55;
ifdir==1 && g_zstop>-g_zborder
ok2=0;
elseifdir==0 && g_zstop<g_zborder
ok2=0;
else ok2=1;
end end % gekürzt
Student der Luft- und Raumfahrttechnik in den letzten Zügen.
Lerne für meine Studien- und Diplomarbeit Matlab kennen und bin für Hilfe sehr dankbar!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.