VENUS Questions!

@WilliamCham_Hamilton Yes, it worked! Thank you so much!

Another thing I noticed is for Terminate CPAC: as shown below from trace file, it sends commands to controller over 10 times. Is this how it supposed to work? Screenshot is from the method. We have 4 CPACs on this system.

HSLInhecoTECLib : StopTemperatureControl - start; i_intControllerID = 0, i_intDeviceID = 1
2022-10-12 14:44:54> LIBRARY: HSLInhecoTECLib : StopTemperatureControl - complete; o_strErrorCode = β€˜β€™
2022-10-12 14:44:54> LIBRARY: HSLInhecoTECLib : Terminate - start; i_blnStopAllDevices = 1
2022-10-12 14:44:54> LIBRARY: HSLInhecoTECLib : Terminate - progress; Stopping all Inheco TEC device activities!
2022-10-12 14:44:54> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:44:55> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:44:56> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:44:57> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:44:58> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:44:59> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:45:00> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:45:01> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:45:03> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:45:04> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:45:05> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - error; Sent command β€˜1ASE0’: error code β€˜3’ detected in response β€˜1ase3’, resending command.
2022-10-12 14:45:05> LIBRARY: HSLInhecoTECLib : Terminate - SendCommandToController - complete with error; Communication issues with controller 0 !
2022-10-12 14:45:05> LIBRARY: HSLInhecoTECLib : Terminate - progress; Device 1 @controller 0: Heater stopped.

Dispensing volumes between 1 and 300 uL across a 96-DWP from a worklist
@NickHealy_Hamilton @EricSindelar_Hamilton

Based on OD600 nm, I want to add diluent to normalize all wells of a 96-DWP to an OD600 of 1.0. I have an excel that generates a worklist of the different values which range from 1 - 300 uL. My goal is to use 300 uL tips for any volume between 51 - 300 uL, and 50 uL tips for any volume 50 uL or less. Since the distribution of these volumes are random, A1 may need 33 uL and B1 may need 243 uL, etc.

I thought about making separate worklists - 1 for 50 uL tips and 1 for 300 uL tips - but that would require the sequence I create for each worklist to skip certain wells. Is there a way to do this, or otherwise accomplish my goal?

Check out this thread which covers the topic. You can use one worklist and create separate sequences and arrays for each volume/tip set OR use one and sequence and array and pick up a mix of tips you need. While the latter is possible, I prefer the former route as it is a bit more straightforward in regards to programming and you don’t need to do multiple tip pickup steps for each transfer.

I uploaded a series of examples that we use when onboarding new applications specialists that covers arrays and barcoding with different volumes and tip sizes. In the zip, you’ll find a document that describes the setup and a series of exercises that increase in complexity and then example pkgs for each of those steps.

2 Likes

Thanks Eric! We’ll try these solutions out

1 Like

Hi @Automation,

It looks like it was failing to communicate with the TEC controller during the Terminate call. After 10 attempts to get a successful response to Terminate it gave up and ended its retries. According to the Help File, Error Code 3 is β€œFailed to find the controller for the specified ControllerID”. If you can provide a trace file and a package file we can see if there appears to be some redundancy in the termination that is causing this or if there is a need to investigate a potential issue in Terminate. If you can please let us know which version of the driver you are using, that would be helpful as well.

~ William

1 Like

@EricSindelar_Hamilton, @WilliamCham_Hamilton, @NickHealy_Hamilton, @DanHartman_Hamilton

What software are you guys using to create your very lightweight and extremely convenient installers you share. It is a fantastic way to share programs, but I’m curious how to ensure security.

2 Likes

Many of our installers are built using Inno Setup Compiler: Inno Setup. This is typically used in the field and when building custom libraries due to ease of use.

3 Likes

Ah! Are there any key lines or checks and balances in the inno.iss file Hamilton does uses to ensure security of these installer?

We don’t have anything specific built in. We have a template file we use to build them.

For example:

The remainder of the template only contains the files that are being installed/imported/etc.

2 Likes

Thank you for your response. The method worked and turned off cooling after 10 re-tries. I’m just wondering if there is a way to get rid of these errors. I’m traveling today. Will get trace file and version number as soon as I’m back.

I also noticed Hamilton listed NGS kit with available methods here : https://www.hamiltoncompany.com/automation/next-generation-sequencing#kits-and-available-methods

Is there a plan to make the package files for these kits downloadable? @EricSindelar_Hamilton

Not at this time. The methods that have been developed were qualified on specific configurations and are not suitable for widespread distribution. Please reach out to your direct sales and support teams if there are certain methods of interest. If you need help getting in touch with them, just let me know!

1 Like

We are doing a lot of peircing and we are usign HHS with 3D printed adapter and it works awesome for both 96 and 384 well plate

1 Like

Can someone fill me in on how iSWAP complex movement parameters like retract distance and lift-up height work? Are these β€œcollision-safe”, or are they like firmware commands in that there is collision potential? Thank you.

They’re more like firmware commands and there is the possibility of collision. So if you use a complex movement with an integration such as a stacker or handoff where there is a cutout in the plexi, the system won’t know there is a shelf or obstruction above it. You have the define the proper retract and lift-up height to avoid any obstacle.

Ok, thanks!

Hello @NickHealy_Hamilton @DanHartman_Hamilton @EricSindelar_Hamilton @WilliamCham_Hamilton,

Do any of you know how to fix the following HSL syntax error?

The HSL line it’s referring to is the last one in the file:

@max_gildemeister - If you have checksum verification disabled, you should be able to delete that line (the last line of the HSL file is the checksum) and save. When reopening via HSL editor, the checksum should be automatically recreated and updated.

Checksum verification can be toggled via the security settings in your system configuration editor

2 Likes

Hi,
I have a question about the Executor Object in HSL. I’ve seen that code in a library provided by Hamilton :

`function GetWorkflowDuration() variable
{
object executor;
object scheduler;
variable workflowStart(0);
variable workflowEnd(0);
variable workflowLeft(0);
variable workflowRight(0);

**executor = GetExecutorObject();**

**

executor.GetObject2(β€œ{C2D3E204-F6B4-4F7C-A03F-254FAF2260DB}”, scheduler);**

scheduler.GetWorkflowDuration(workflowStart, workflowEnd, workflowLeft, workflowRight);
return(ToSeconds(workflowEnd - workflowStart));
}`

I wonder if you have documentation on that piece of code and if there’s a way to know more about it. My idea would be to retrieve the task specific starting time and ending time when scheduling a process. (and not only the final workflow duration).
PS : I’m using the venus dynamic scheduler.

Thank you,

@Yass - I have not seen this function or library before. Could you please provide more info on this library you are referring to?

Sure,
It’s a library that was provided by our Hamilton field application engineer.
here’s the full code :

private function ToSeconds(variable date) variable
{
	object	scriptControl;
	variable strDate;

	strDate = FStr(date);
	scriptControl.CreateObject("MSScriptControl.ScriptControl");
	scriptControl.Language = "VBScript";

	return(scriptControl.Eval("Second(" + strDate + ")") +
			60 * scriptControl.Eval("Minute(" + strDate + ")") +
			3600 * scriptControl.Eval("Hour(" + strDate + ")"));
}
private function DateDifference(variable date1, variable date2) variable
{
   object scriptControl;
   variable strDate1;
   variable strDate2;

   strDate1=FStr(date1);
   strDate2=FStr(date2);
   scriptControl.CreateObject("MSScriptControl.ScriptControl");
   scriptControl.Language="VBScript";

   return(scriptControl.Eval("DateDiff(\"s\","+strDate1+","+strDate2+")"));
}
// Returns the workflow duration in seconds.
function GetWorkflowDuration() variable
{
	object executor;
	object scheduler;
	variable workflowStart(0);
	variable workflowEnd(0);
	variable workflowLeft(0);
	variable workflowRight(0);

	executor = GetExecutorObject();
	executor.GetObject2("{C2D3E204-F6B4-4F7C-A03F-254FAF2260DB}", scheduler);
	scheduler.GetWorkflowDuration(workflowStart, workflowEnd, workflowLeft, workflowRight);
	return(ToSeconds(workflowEnd - workflowStart));
}

It has only this function that gives the workflow total scheduled duration (very useful). From my understanding it’s creating an Executor object from a registry key. When I look up that registry key I see that it’s linked to VenusScheduler.
But I honestly have no idea how the registry key was found nor how the object works or if there’s other objects available.

Yassine