Closed philipstarkey closed 8 years ago
Original comment by Jesse Evans (Bitbucket: jcevans).
Original comment by Philip Starkey (Bitbucket: pstarkey, GitHub: pstarkey).
Hi Jesse,
This error happens when there are not enough instructions for the device in the compiled HDF5 file. The NI PCI 6733 requires a minimum of 2 instructions. If you add an additional instruction at a later time, this error should go away. For example, in your labscript (experiment logic) file:
#!python
t = Li72DP_amp.t0
Li72DP_amp.constant(t, 0.5)
t += 1
Li72DP_amp.constant(t, 0.5)
t += 1
stop(t)
Note that in this example, the experiment will last for 2 seconds. You can adjust the times as you like, as long as there are at least two commands to channels on the NI PCI 6733 at different times, the error should not exist.
We should however, put a check in the labscript_devices.NI_PCI_6733 code to display an error at compilation time, rather than the obtuse error you have seen in BLACS. I've logged it as a bug here (labscript-suite-temp/labscript_devices#14).
Let me know if this doesn't solve the issue :)
Original comment by Jesse Evans (Bitbucket: jcevans).
Thanks for the help, Philip. I tried what you suggested, and got a different (but also indecipherable) error.
Traceback (most recent call last):
File "C:\labscript_suite\labscript_devices\NI_PCI_6733.py", line 233, in transition_to_manual
self.ao_task.StopTask()
File "
File "
File "C:\Anaconda\lib\site-packages\PyDAQmx\DAQmxFunctions.py", line 33, in mafunction
raise DAQError(error,errBuff.value.decode("utf-8"), f.name)
DAQError: Finite acquisition or generation has been stopped before the requested number of samples were acquired or generated.
in function DAQmxStopTask
Fatal exception in main process - Tue Jan 12, 12:53:30 :
Traceback (most recent call last):
File "C:\labscript_suite\blacs\tab_base_classes.py", line 670, in mainloop
next_yield = inmain(generator.send,results)
File "C:\Anaconda\lib\site-packages\qtutils\invoke_in_main.py", line 68, in inmain
return get_inmain_result(in_main_later(fn,False,*args,**kwargs))
File "C:\Anaconda\lib\site-packages\qtutils\invoke_in_main.py", line 47, in event
result = event.fn(*event.args, **event.kwargs)
File "C:\labscript_suite\blacs\device_base_class.py", line 627, in transition_to_manual
raise Exception('Could not transition to manual. You must restart this device to continue')
Exception: Could not transition to manual. You must restart this device to continue
I think the key complaint here is the transition to manual part, but I don't know what that means.
Regards
Jesse Evans
Original comment by Jesse Evans (Bitbucket: jcevans).
Nevermind, our clock was connected. We're all good here. Thanks for your help!
Original comment by Philip Starkey (Bitbucket: pstarkey, GitHub: pstarkey).
Hi Jesse,
Glad it is fixed!
For future reference on decoding the BLACS exceptions: In the error above there are two exceptions raised. The first was from PyDAQmx:
DAQError: Finite acquisition or generation has been stopped before the requested number of samples were acquired or generated.
This then causes the second exception:
Exception: Could not transition to manual. You must restart this device to continue
What this tells us is that PyDAQmx had an exception during the BLACS mode of "transition_to_manual". BLACS has 4 modes; manual, transition_to_buffered, buffered and transition_to_manual. BLACS moves each device tab through these modes as it prepares and finishes running an experiment. Tabs are in manual mode when you are not running a shot, buffered mode when they are in the middle of a shot and the transition modes to prepare and finalise the shot.
In this case, the NI card reported that it had not generated all of it's programmed samples by the time the experiment shot was finished. As you found out, that was because the clock line was not connected!
Let us know if you have any further issues!
Original report (archived issue) by Jesse Evans (Bitbucket: jcevans).
The original report had attachments: errormessage.txt
I got this strange error raised in blacs when I tried to run my script. The script had a bunch of commands like these:
Li72DP_amp.constant(Li72DP_amp.t0, 0.5)
which compiled ok, but once I tried to run in blacs gave rise to the attached error. No idea what the root cause is. I tried to use the same syntax as in the example python file. The blacs gui can still be used to set values on the daq, but whenever I try to use a script it runs into trouble.
Regards
Jesse Evans