Set Simulation Mode

Dear community,

is there a library or firmware command that enables me to set the simulation mode during runtime to true or false?

I am only aware of the get function of HSLUtilib…

Best regards

1 Like

Hi @Martin,

There aren’t any library/firmware commands available to change the Run Mode at runtime. Do you have a specific use case in mind in which this functionality would be beneficial? If so, this functionality can be explored further.

Thank you,

1 Like

You can change it before opening run control by modifying the following file:

“C:\Program Files (x86)\HAMILTON\Config\HxServices.cfg”

Find this line: SimulationOn, “1”,

Change it to “0” for run mode and “1” for simulation mode.

A couple notes:

  • The file is in binary so you need to convert to ascii first.
  • You will need checksum verification off if you want to change this manually / programmatically.
1 Like

@DanHartman_Hamilton and @BirdBare thank you for the fast and helpful reply.

The use case I was contemplating was to test specific parts of the method in physical mode whereas all other parts are performed in simulation. For example, all plate transport steps physically, all pipetting steps in simulation mode.

Unfortunately, I cannot simply create a method with only desired steps I want to perform physically, because everything is created during run time and many decisions are dependend on previous steps.

Any suggestions appreciated.

Kind regards

Hi @Martin,

Thank you for the use case information. I will follow up internally on this.

For now, in order to obtain similar functionality, it is common practice to wrap various instrument commands (i.e. pipetting, transports, device commands, etc.) in conditional statements which are driven by global or task-local booleans allowing for easier testing at runtime. These booleans can be additionally driven by the GetSimulationMode command you referenced, or simply by the user toggling in the method before running.

Common testing variables we’ll use:

  • t_blnSkipPipetting - wrap pipetting steps in an If statement where “t_blnSkipPipetting = False”. If True, then the pipetting steps won’t occur. Similar code can be used for Load/Unloading carriers, Transports, etc.

  • t_blnSkipTimers - have a variable that drives the duration of timers, and when t_blnSkipTimers is True, then change the duration variables to zero so that the timers are automatically skipped

  • t_blnRunDryTest - have pipetting parameters (cLLD vs. Fixed Height) variable driven, so that if wanting to run a test without liquid, t_blnRunDryTest can be set to True and all variables are toggled to Fixed Heights

Of course all of this requires programming and planning ahead of time, but it can be a major time saver when it comes to testing on the system. The process also becomes easier the more it’s performed since almost every method can benefit from such a setup and would use similar testing options.

Thank you,