MATLAB: Data Acquisition from a force plate

force plate code

This is the matlab code I have created to get force plate signals.
AI=analoginput('dtol',0);
set(AI,'InputType','SingleEnded');
chan=addchannel(AI,1:6);
set(chan,'InputRange',[-10 10]);
duration=10;
set(AI,'SampleRate',250);
actualrate=get(AI,'SampleRate');
set(AI,'SamplesPerTrigger',duration*actualrate);
set(AI,'TriggerChannel',chan(3));
set(AI,'TriggerType','software');
set(AI,'TriggerCondition','entering');
set(AI,'TriggerConditionValue',[10 10]);
start(AI)
wait(AI,duration+5);
data=getdata(AI);
plot(data)
xlabel('Time')
ylabel('signal(volts)')
But if I run, the following error shows up. Even if I put longer time into the wait funtion, the error shows up again and again.
??? WAIT reached its timeout before OBJ stopped running.
Error in ==> daqdevice.wait at 51
wait( uddobjs, waittime );

Best Answer

The error is probably due to the fact that you have set TriggerConditions
set(AI,'TriggerChannel',chan(3));
set(AI,'TriggerType','software');
set(AI,'TriggerCondition','entering');
set(AI,'TriggerConditionValue',[10 10]);
I am not sure what the TriggerCondition entering stands for and what the Trigger Condition Value of [10 10] means. Could you further explain that? Should'nt TriggerConditionValue be a single number or a range?
So it is possible that your acquisition has not been triggered in the 15 seconds that you wait for it. A better check would be:
while(~AI.Logging)
disp('Waiting for trigger');
pause(1);
end
disp('Triggered');
wait(AI,duration*1.1);
...
But first ensure with your conditions, whether the acquisition is even getting triggered.