Is there a way to stop the scheduling in BenchCel

Hello everyone! Just out of curiosity: is there a way to stop the scheduling when using the benchcel? I want Benchcel to only process 1 plate at a time due to my scripting (Its messing up which stacker it should upstack/downstack when its handling 2 plates at the same time). Is this possible?
Thank you in advance!

Sorry I’m not sure I’m getting your point. Could you please show us an example of what you would like to do?

Anyway, you can process one plate at a time if you create a process that handles a single plate, for example (assuming tips and a reservoir are static):

process for a plate:
downstack => place plate somewhere => subprocess (tips on / asp from reservoir / disp to plate / tips off) => upstack.

Is this what you are looking for?

Hi Mauro! Thank you for your reply! We want to do some stress testing on benchcel so I currently has a stress testing protocol for 384 Biorad plate and see if or when the benchcel will drop/flip a plate. I have 50 plates loaded on stacker 1 of a 4R benchcel, and benchcel will downstack, place at bravo, pick up from bravo, place at plateloc, transfer it to labeler and then upstack to stacker 2. It will do this for all stacks, so plates will be moved from stacker 1 to 2, 2 to 3,3 to 4, 4 to 3, 3 to 2, 2, to 1 and then 1 to 2 again, so it will keep going forever until it either errors out or manually aborted. However, since vworks is a scheduler and it’s processing 2 plates at the same time, so the last 2 plates got messed up about which stacker it should down stack and up stack. So far I cannot find a way to work around this issue, and i was hoping if i can use my protocol and also force the benchcel to only process 1 plate at a time should solve my issue.
However I agree the easier way is to just add a bunch of protocols to a runset. Just knowing if its possible to remove the scheduling and optimization in vworks will also be very helpful!
Let me know if I my explanation is not clear.

If you say that the benchcel processes two plates at a time I guess that this means that your main process allows two simultaneous instances. In that case, setting the simultaneous instances to one could do the trick.

You are also writing that the last two plates can’t be down stacked from the stackers they are supposed to use, but it should be the protocol that has to indicate the downstack and upstack position for each plate. This can be done on a plate per plate basis using scripting and the “process control” task used as a subroutine (if your vworks version is not too old).

Any chance you could share the vzp of this stress test protocol?

Hi mauro!
I tried changing the simultaneous instances to 1 and now everything is working!! Thank you so much!!! Before I have to manipulate the plate_num to make it working for 2 plates at the same time :frowning:
I attached the working version of my protocol hereprotocol
. I didn’t include the forum but its taking 2 variables : plate_num (number of plates loaded) and stacker_num (how many stackers on benchcel).
Thank you so much for all the help!!!

Great! I’ll download the protocol when I’m back (on vacation right now).

For now, I wish you and all the people in the forum a Happy New Year!

2 Likes

Hi again, nice protocol!

I can see that at protocol start you create an array “StackerSeq” containing

image

and I think I understood that you want to downstack from “index” and upstack to “index+1”. If this is the case, wouldn’t it be easier to create an array 1,2,3,4,3,2 (without the last element) and only refer to the plate.instance counter?

Therefore, the upstack will be done at “StackerSeq” index:

(plate.instance-1)%len (“len” being the StackerSeq length)

and the upstack will be done at index

plate.instance%len

Another suggestion: since you are already using a form why forcing a user to run the protocol “n” times? you already have the possibility of looping the whole “PlateSealLoop” process “plate_num” times:

The start process is needed to avoid a deadlock when the protocol starts, and the last “spawn” will only be executed “plate_num” times. Here I used your counter “plate_instance”, but it could well be rewritten to use the embedded counter plate.instance. Just remember that plate.instance does not exist anymore after the upstack, so you need to capture its value before up-stacking. If you implement this remember to run the protocol only once.

Hi mauro!
Thank you for your reply and thank you so much for all your suggestions!! Its very very helpful!! I tried to use plate.instance but its spitting out 3 plates all at the same times, which messed up my protocol before. Now I am thinking about this, i think this is because i set the simultaneous instances to 3 by default in the beginning :frowning: (now everything starts to make sense… I was so confused why its processing 3 plates at the same time in the very beginning lol). For the runtimes, we need the benchcel to run potentially the whole night. we want to see after now many plates it will drop a plate, and plate_num=50 is actually not enough for this test (we dont have a lot of plates to test this so we are basically transferring these 50 plates from stacker to stacker )