Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

Sending GPIB GET to multiple instruments using VISA

Hello all,

 

I am trying to start simultaneous acquisition on two Keithley 486 devices using the GPIB GET ("Group Execute Trigger") functionality, using VISA. However this doesn't succeed, neither programatically, nor using the "VISA interactive Control" application.

 

What I am trying:

 

(1)   I set up my Keithley devices for acquisition-on-GET, i.e., they are armed and waiting for a GET trigger.

 

I am quite sure this is done correctly, because if I assert the trigger on the instruments seperately, they start acquiring as intended.

 

(2) When I assert the trigger on the interface instead ("GPIB0::INTFC"), nothing happens -- the devices stay armed and do not start acquiring.

 

I have tried to do this both programmatically (using PyVISA that talks to the VISA DLL), and using the "VISA interactive Control" application. In the latter, selecting the "GPIN0::INTFC" device, going to the Advanced/Triggers tab, and pushing the "Assert Trigger" button doesn't work.

 

 

My questions:

 

- should this work, or is my expectation that this should work incorrect?

- what could I try to make it work?

 

0 Kudos
Message 1 of 8
(6,666 Views)

@reddish wrote:

Hello all,

 

I am trying to start simultaneous acquisition on two Keithley 486 devices using the GPIB GET ("Group Execute Trigger") functionality, using VISA. However this doesn't succeed, neither programatically, nor using the "VISA interactive Control" application.

 

What I am trying:

 

(1)   I set up my Keithley devices for acquisition-on-GET, i.e., they are armed and waiting for a GET trigger.

 

I am quite sure this is done correctly, because if I assert the trigger on the instruments seperately, they start acquiring as intended.

 

(2) When I assert the trigger on the interface instead ("GPIB0::INTFC"), nothing happens -- the devices stay armed and do not start acquiring.

 

I have tried to do this both programmatically (using PyVISA that talks to the VISA DLL), and using the "VISA interactive Control" application. In the latter, selecting the "GPIN0::INTFC" device, going to the Advanced/Triggers tab, and pushing the "Assert Trigger" button doesn't work.

 

 

My questions:

 

- should this work, or is my expectation that this should work incorrect?

- what could I try to make it work?

 


I was working with some 1970s vintage HP counters, and I found that they did not respond well to VISA.

Using NI-488.2 functions worked better.

Anyway, the following thread may be useful. http://forums.ni.com/t5/Instrument-Control-GPIB-Serial/same-command-to-multiple-instruments/td-p/362...

 

Message 2 of 8
(6,656 Views)
The VISA Assert Trigger function should work in LabVIEW.
0 Kudos
Message 3 of 8
(6,640 Views)

Hello reddish,

 

Can you tell me exactly what you have sent out via the "VISA Interactive Control" application?

 

Have you tried using the following "Legacy: Interactive Control" tool?

http://www.ni.com/support/gpib/max/maxibic.htm

 

Are you able to use the IBMCD Command for the Group Execute Trigger correctly this way?

(I am asking this out of curiosity.)

 

Do note that this is a Legacy version.

 

Personally I would also advise you to either

- use the VISA Assert Trigger Function (like Dennis said):

http://zone.ni.com/reference/en-XX/help/371361K-01/lvinstio/visa_assert_trigger/

- or use the GPIB-specific VIs and the similar function "GPIB Trigger":

http://zone.ni.com/reference/en-XX/help/371361G-01/lvinstio/gpib_trigger/

 

If these two options are not feasible or workable for you, then please also let me know why.

 

Side-question: Are you fully familiar with the background of GPIB (eg. differences between IBCMD and IBWRT) , VISA, etc.. ?

Kind Regards,
Thierry C - CLA, CTA - Senior R&D Engineer (Former Support Engineer) - National Instruments
If someone helped you, let them know. Mark as solved and/or give a kudo. 😉
Message 4 of 8
(6,617 Views)
nyc,
Thanks for your response. The thread you linked to was indeed useful, it lead me to a better understanding of what I am trying to do.
It seems that the viAssertTrigger() sends a GPIB sequence that always adresses a single device as a listener; I will have to use viGpibCommand() instead to send a low-level IEEE488.1 command sequence that sets multiple devices as listeners prior to issuing the GET command.

Regards, Sidney

0 Kudos
Message 5 of 8
(6,608 Views)

Hi Denis,

 

Unfortunately I don't have LabView on this machine. I am programming against the VISA DLL (via the Python binding provided by PyVISA).

 

0 Kudos
Message 6 of 8
(6,607 Views)

Hi ThiCop,

 

> Can you tell me exactly what you have sent out via the "VISA Interactive Control" application?

 

I opened the GPIB0::INTFC device and pushed the "Assert Trigger" button.

 

I think I now understand that this does not do what I want to do (which is, triggering multiple instruments simultaneously). As far as I understand, the viTriggerAssert function cannot be used for that purpose; I will have to use the lower-level viGpibCommand to execute the appropriate IEEE488.1 commands, including setting multiple devices as Listeners, and then executing a GET.

 

> Have you tried using the following "Legacy: Interactive Control" tool?

 

I just tried this (thanks for the pointer). It seems very useful. What I need is the "TriggerList" functionality, but I cannot get it to work via the interactive tool; I suppose I need to open the controller board first but I am not quite sure how to do that.

 

Also, if I understand correctly, this tool uses the library that predates VISA. So while it is useful for understanding what I am doing, I will not be able to do replicate this exactly using the VISA library, I think.

 

> Personally I would also advise you to either

> use the VISA Assert Trigger Function (like Dennis said):

 

I think that this function specifically addresses a single GPIB device, always. It cannot be used to trigger multiple devices with a single call. For reasons of synchronization, that is what I need.

 

> - or use the GPIB-specific VIs and the similar function "GPIB Trigger":

> If these two options are not feasible or workable for you, then please also let me know why.

 

I need to use the VISA functionality to access my GPIB devices. I do not use labview; I am accessing the hardware via the VISA DLL (which I talk to via Python, using the PyVISA binding).

 

> Side-question: Are you fully familiar with the background of GPIB (eg. differences between IBCMD and IBWRT) , VISA, etc.. ?

 

No. I am a pretty experienced software guy but I have no prior experience with Labview, VISA, etc. I've spent the last days reading web pages, the VISA manual, etc. (and even the 488.2 standard), so things are starting to become clearer, but I am still very much a novice.

 

My current understanding is that I will need to use viGpibCommand() to assemble a low-level GPIB command sequence because the viAssertTrigger() doesn't do what I need. But then I bump into the issue described here:

 

    http://forums.ni.com/t5/Instrument-Control-GPIB-Serial/using-viGpibCommand-and-CIC-errors/td-p/29363...

 

Thanks for your help so far.

 

Sidney

0 Kudos
Message 7 of 8
(6,606 Views)

Hello reddish,

 

Sorry for overreading the PyVISA part of your original post.

 

The viTriggerAssert will indeed try to trigger GPIB devices that are part of the ongoing VISA session or as it was written on the page mentioned earlier:

In the case of GPIB it states:
"VISA addresses the device to listen and sends the GPIB Group Execute Trigger (GET) message."

 

Understanding your situation more clearly now I think that in your specific case (with the need for more low level GPIB bus specific commands, instead of abstracted "high level" VISA functions) it might be most useful to use the viGpibCommand (or in LV terms the "VISA GPIB Command" VI).

 

PS: I just added the older interactive tool, because it is (sometimes) easy to use (although it is considered to be a legacy tool).

 

Were you able to resolve your issues in the parallel thread?

Kind Regards,
Thierry C - CLA, CTA - Senior R&D Engineer (Former Support Engineer) - National Instruments
If someone helped you, let them know. Mark as solved and/or give a kudo. 😉
0 Kudos
Message 8 of 8
(6,573 Views)