Digital Multimeters (DMMs) and Precision DC Sources

cancel
Showing results for 
Search instead for 
Did you mean: 

Fast Short/Open Test using switch NI2510 and DMM NI4072

Hi Jared R.

 

i really appreciat your answer, many thanks,

 

i have tried this out, but with no luck, timing remain the same, i believe the time consuming operation come from the switching and not from DMM mesurement, because i have to Close/Open 4 relay do to one mesurement : here is a schema to simplify what i do exactly 

 

MesurementOperation.jpg

and for each PIN in my DUT i need to do this same operation (120 pins must be checked) ,actually this is done in 6.67s but its quite big time,i hope i can decrease this to 1 or 1.5s.

 

by the way attached the code used with the software trigger,and FetchMultipoint stuff (C#).

 

may be this could help, here is the way i have programed Switch + DMM 

 

initialize DMM

 

Loop foreach PIn inside DUT

Close PIN to HI DMM ( relay inside switch Card !)
Close PIN  LO DMM ( relay inside switch Card !)
Take Mesurement
Open PIN HI DMM ( relay inside switch Card !)
Open Pin LO DMM ( relay inside switch Card !)

end Loop


in the end of test Close DMM session

 

Many Thanks.

 

Best regards.

0 Kudos
Message 11 of 20
(4,752 Views)

Hi every one,

 

any idea please ?

 

Best Regards.

0 Kudos
Message 12 of 20
(4,731 Views)

i have tried this out, but with no luck, timing remain the same


When you said you already tried it, I wonder if it was by manually programming the multi-point acquisition or using the example suggested by JaredRo. Can you please let us know? If you haven't tried his suggestion, I strongly recommend you to run a few examples to see if the behavior seems consistent (the switch should be definitely faster than what you are seeing, given it is appropriately configured).

Camilo V.
National Instruments
0 Kudos
Message 13 of 20
(4,711 Views)

Hi Camilo, 

 

i have attached in a previous post, the source code used for multipoint acquisition (manually programed by me).

 

and here again you will find this source attached.

 

the problem here , is that i must close/open relays in the switch card befor makin any mesurrement.as i explained befor, the test must be done for each Pins inside the DUT. so the procedure is like so :

 

CLose to HI DMM

Close to LO DMM

Take Mesurement 

Open Pin HI

Open Pin LO

move to next Pin....

 

Mesurement.jpg

 

and about the switch, im working the the NI 2510, topology used is 2510/Independent.

 

here is a part of the code to manupulate the switch 

 

public Boolean ClosePinH_NIsw(string sDeviceAddress, string sSwitchTopology, string sRelayName)
{
try
{
//CloseSession();
Initialize_NIsw(sDeviceAddress, sSwitchTopology);
switchSession.RelayOperations.RelayControl(sRelayName + "a", SwitchRelayAction.CloseRelay);
// Wait for the relay to activate and debounce.
switchSession.Path.WaitForDebounce(maximumTime);
//Close session to switch module.
CloseSession();
return true;
}
catch (Exception)
{
//Close session to switch module.
CloseSession();
return false;
}
}

 

 

private string CloseSession()
{
if (switchSession != null)
{
try
{
switchSession.Close();
switchSession = null;
return "0";
}
catch (System.Exception ex)
{
return "Unable to Close Session, Reset the device.\n" + "Error : " + ex.Message;

}
}
return "0";
}

 

 

i have noticed that when we open a session with a switch for the first time it take 0.4 second, which is pretty big ???

0 Kudos
Message 14 of 20
(4,701 Views)

i have noticed that when we open a session with a switch for the first time it take 0.4 second, which is pretty big ???

Are you resetting the device every time you open the session?

 

I recommend you refactor your code to only open the session to the switch and the DMM once, rather than on every operation. And for further improvements you should program the DMM to do multi-point measurements using a software trigger to signal it to perform each measurement. If you want to take it even further then you could program the switch with a scanlist and have it handshake with the DMM using the PXI trigger lines.

Marcos Kirsch
Chief Software Engineer
NI Driver Software
0 Kudos
Message 15 of 20
(4,694 Views)

Hi Marcos,

 

no i do not reset the device every time i want to open a session :

 

//true (default) Reset device.  false The device will not reset.

switchSession = new NISwitch(sPXIDeviceAddress, sPXIDeviceTopology, false, false);

 

in first place if we want to open a session to Switch it take about 0.4s :

 

Close Switch.jpg

 

the reason why i do not initialize the switch only once, is because i have 13 switch to control, and target relay could be at any switch, so in order to close a relay i must identify the switch name + relay name :

 

SwitchinPXI.jpg

 

and i could not do multipoint mesurement by DMM because i must every time change pins where im taking mesurement.please refere to previous post.

 

have you any idea ? may be im doing something wrong ? 

0 Kudos
Message 16 of 20
(4,685 Views)

Hi Marcos,

 

no i do not reset the device every time i want to open a session :

 

//true (default) Reset device.  false The device will not reset.

switchSession = new NISwitch(sPXIDeviceAddress, sPXIDeviceTopology, false, false);

 

in first place if we want to open a session to Switch it take about 0.4s :

 

Close Switch.jpg

 

the reason why i do not initialize the switch only once, is because i have 13 switch to control, and target relay could be at any switch, so in order to close a relay i must identify the switch name + relay name :

 

SwitchinPXI.jpg

 

and i could not do multipoint mesurement by DMM because i must every time change pins where im taking mesurement.please refere to previous post.

 

have you any idea ? may be im doing something wrong ? 

0 Kudos
Message 17 of 20
(4,685 Views)

in first place if we want to open a session to Switch it take about 0.4s 

I don't understand if you mean that the first time you open a NI-SWITCH session it takes 0.4 s, or if you mean that everytime you open an NI-SWITCH session it takes 0.4 s. This seems like an excessive amount of time but I don't know what system you are running this on.

 

the reason why i do not initialize the switch only once, is because i have 13 switch to control, and target relay could be at any switch, so in order to close a relay i must identify the switch name + relay name

You should still initialize the session to each switch only once, and then reuse the open session, rather than open and close every time. 

 

As far as other performance improvements, maybe do a little bit more benchmarking and let us know where things are taking a long time.

 

Marcos Kirsch
Chief Software Engineer
NI Driver Software
0 Kudos
Message 18 of 20
(4,669 Views)

Hi Marcos, 

 

i could not open a session with 13 switch in the same time,

to control a switch i need to open one and only one session identified with the switch name and the topology 

 

//Creat switch Session 
switchSession = new NISwitch(sPXIDeviceAddress, sPXIDeviceTopology, false, false);

switchSession.DriverOperation.Warning += new System.EventHandler<SwitchWarningEventArgs>(DriverOperationWarning);

 

once this session is created then i can control relays inside the opened Ni switch card :

 

//Close Relay in the opened session

switchSession.RelayOperations.RelayControl(sRelayName + "a", SwitchRelayAction.CloseRelay);

 

i will do some trials, and let you know.

 

Best Regards.

0 Kudos
Message 19 of 20
(4,663 Views)

I think there's a misunderstanding.

I'm telling you to open 13 separate sessions and keep them all open at the same time, not "a session with 13 switch in the same time". That means you will have 13 instances of type NISwitch, one for each device. Then you call RelayOperations.RelayControl on the correct instance based on which switch you need to act on.

 

 

Marcos Kirsch
Chief Software Engineer
NI Driver Software
0 Kudos
Message 20 of 20
(4,659 Views)