Portrait v Landscape plate representation in Fluent Control

Hi all,

In our script, we want to pipet from one 384w plate to another 384w plate, quadrant by quadrant. When we scripted it, we selected the first quadrant in the aspirate and dispense steps and entered variable row and column offsets using a loop counter to service the other quadrants. The plate in the aspirate and dispense steps were displayed in landscape during scripting.
We have used this script countless of times successfully over 3 years.

Now, we have noticed when we copy the script, we would need to re-select the first quadrant in that copy. (We just upgraded to a newer Fluent Control version, thus the reason of the copy.) However, we see that the plate in those two steps is now presented in portrait, whereas the selection grid is still in landscape. Thus, we are unable to re-select the first quadrant.

Anyone know how to reset the plate representation to landscape?

If I look at the screenshot you provide I notice that the lines [42] to [49] are orange in colour, which means that they are inside an if or else statement and that this specific action as not done with the current settings.
If these actions are not performed with the variable settings you have (the ones outside the script) then it is not done and your plate is not officially transferred to the worktable. The plate is therefore still in the hotel and also in portrait position.

Change the variable setting if the specific group to make sure that the group is performed and then plate is transferred to the worktable and also in ladscape

1 Like

Hi @NicholasK,

At the pipetting commands, FluentControl shows the plate in the current orientation at the time of that script line. At edit time the script and worktable progress is simulated with context-check. However your plate is shown in Portrait because it is located in the hotel in portrait. Script Line 43 where you transfer the plate from the Hotel to a Nest is not reached by this simulation; the script line flags have a yellow/orange dot which means they are not reached by context-check. Probably because there is some If-Else branches further up the script and that specific branch is not reached because the If-Else branch is depending on a variable and the simulated value of the variable reaches the other branch.

If originally this script line has been programmed correct, it may work at runtime anyways, because at runtime if that branch is reached the plate will be moved to a Nest and be there in landscape and the script line doesn’t give a context-check error it just have this yellow dot that says that this part of the script is not used for the context-check

2 Likes

Hi @dirkvanessen , @Snowball

Thank you for the fast response.
Weird thing is the If condition is actually met and the steps should be reached by the context-checker. However, your suggestions did point me to another group of lines in the script.
Prior to the IF statement, we have a group wherein we scan the hotel for the presence of plates at specified positions (not displayed here).
I disabled this group, which then resulted in a landscape plate representation in steps 46-47.
Selected the first quadrant, and then re-enabled the scan group again. Now the plates are back in portrait in Fluent Control, but with the quadrant selected.

I guess part of the issue was that by nature of the script, it is unsure whether there is a plate to be transferred from the hotel to the deck prior to scanning; even though the default value for the variable in question is “Yes” (i.e. there is a plate at to be transferred in step 43).

Thank you!

1 Like

We ran into an error while running the script-copy, stating we have an invalid well-offset. Which then prompted us to look into the offsets in the aspirate.dispense steps :slight_smile:

Just a small nitpick that really helps me troubleshoot and something that I consider good hygiene, remove the long logic bits out of the input boxes. Row & Column has a logic input that is severely cut off and must be or will be a pain to review. I would start your loop with varMCARow = If(…) and varMCAColumn = If(…) and then placing varMCARow and varMCAColumn into the Aspirate code just makes the code easier to read and follow.

Something like,

  • Outer Loop
    ** varMCARow = If(…)
    ** varMCAColumn = If(…)
    ** Comment line (check the box write to AuditTrail) = "varMCA Row = " varMCARow ", varMCAColumn = " varMCAColumn
    **Set Aspirate command Row = varMCARow
    **Set Aspirate command Column = varMCAColumn
2 Likes