NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Issue with MUX Lock

Hi All,

 

My tester is using PXI MUX 2576 card. I devided this MUX into 2 groups (0 to 31 & 32 to 64). I would like to test 2 UUTs at the same time. So I used lock feature from teststand.

 

1) Test1

This uses the MUX group1. So I used lock name as "MUX1Group1"

 

2) Test2

This uses the MUX Group2. So I used lock name as "MUX1Group2"

 

I don't see an issue running 2 UUTs for Test1 and Test2. Both UUTs complete at the same time.

But I have Test3, which uses Group1 & Group2. So I used in lock "MUX1Group1", "MUX1Group2".

 

This always leads to an issue. If the UUT 1 is at Test3 and if the UUT2 at Test2, It leads into MUX error because lock didn’t work properly for Test3. I don’t know why?

0 Kudos
Message 1 of 5
(3,702 Views)

How exactly are you trying to lock both locks for the Test3 case?

 

You should specify them as follows:

 

{"MUX1Group1", "MUX1Group2"}

 

the curly brackets means for the expression language to create an array.

 

If you just do:

 

"MUX1Group1", "MUX1Group2"

 

Then you just have a compound expression where the result is equal to the last expression, in this case "MUX1Group2", so you would only be locking one of the locks.

 

Hope this helps,

-Doug

0 Kudos
Message 2 of 5
(3,678 Views)

Hey LV2012,

 

I want to ask a few questions to help clarify what's happening. 

 

First, the lock functions will accept an array of lock names. Did you try entering the lock names as {"MUX1Group1","MUX1Group2"}  in the lock name field?

 

Second, one of the lock functions is Get Status, and it will give you the current status of the lock and how many threads are waiting to lock it. If you call this function prior to Test 3, what information does it give you about the lock?

 

Finally, could you give us a more clear understanding of what your test sequence looks like? It'd be great if we could see a simplified version that exhibits the problem, or even just a listing similar to the following:

Lock MUX1Group1
<perform actions>
Lock MUX1Group2

<perform actions>

Lock both MUX1Group1 and MUX2Group2

<perform actions>

 

That information might help us narrow down what's happening. Hopefully we can provide more assistance at that point!

0 Kudos
Message 3 of 5
(3,676 Views)

Hi,

 

Thanks for the info.

 

I am using below for locking.

 

{FileGlobals.MUX1CH1Name, FileGlobals.MUX1CH2Name , FileGlobals.MUX2CH1Name,FileGlobals.MUX2CH2Name}

 

and I use same for unlocking. But I get below error, while teststand executing unlock.

 

"-17308 Expected Object Reference, found Array of strings"

0 Kudos
Message 4 of 5
(3,658 Views)

The "Early Unlock" operation does not support specifying multiple locks. You can instead do one of the following:

 

1) When doing the lock operation specify "Use Object Reference" for the "Lock Operation Lifetime" setting and specify a local variable of type "Object Reference" to store it. Then when you want to release the locks create a statement step with the expression (this will unlock all of the locks): Locals.MyLockLifetime = Nothing

 

Or

 

2) use multiple steps and unlock only 1 lock at a time with each step.

 

-Doug

0 Kudos
Message 5 of 5
(3,655 Views)