The Venus program I developed uses the Inheco ODTC. I have found that if I pause the Venus program for a relatively long time (around 10 minutes) while the ODTC is running certain procedures (such as initialization routines), subsequent ODTC commands (e.g., open door) will throw errors after I resume the Venus program, causing the experiment to be interrupted.
Preliminary Analysis
I suspect that the ODTC keeps running even when the Venus program is paused. Once the ODTC finishes its process, it sends a completion notification to Venus. However, since Venus is suspended and cannot receive the message from ODTC, ODTC treats Venus as unresponsive and reports an error, which makes later commands (such as Open door) fail to execute normally.
If the above analysis is correct, is it possible to pause the ODTC at the same time when Venus is paused? In that case, ODTC would continue running when Venus resumes, so the problem of Venus failing to respond to ODTC’s notifications would not occur.
If the above analysis is wrong, please help analyze other possible causes.
Your analysis is correct. If the ODTC is performing an action and VENUS is paused during the action, it is likely that you will get a timeout error from the ODTC. This is because the ODTC is a 3rd party device that the driver is pinging status from or sending commands to. It isn’t actually tied into VENUS to be able to get run control status. There really isn’t a way around this issue unfortunately.
Something that you can do to help prevent these errors is to:
Minimize pausing during ODTC operation
If you are pinging the temperature of the ODTC during cycles, or initialization, minimize or remove that operation
Most of the time out errors are in relation to this pinging action where the pause stops in between a temperature query and then the resume triggers a timeout. This is not all the situations this can happen though but is the most common.
Hi @Charlie . If you are using the InhecoODTCController library, when you execute a protocol using ExecuteProtocol it returns the time it will take to run that protocol (o_intTimeForThisProgramSeconds). I use that value to start a timer and then wait for that timer to elapse. That will not really ‘pause’ Venus.
General tip: Never ever pause a method while the process is anywhere near controlling the ODTC. There is a real chance of catastrophuc failure because the ODTC does not communicate it has timed out and won’t move anymore, so trying to transport into or out of it will lead to a crash.