GPIB Vi's vs. opening a VISA session

Hi,
I'm currently trying to develop a simple set of drivers for a GPIB device that we have (Stanford Research Systems SR430). I have used the Developer Zone and the guidelines and templates given there. Those templates all open a VISA session to establish communications with the instrument. I have noticed, however, that some of the GPIB vi's can perform the same functions (reading and writing) using just the address of the device rather than creating a VISA session. Is there any difference to these two methods and if so, which is recommended and why?
Thank you very much,
April

VISA is much preferred. For one thing, VISA works for not only GPIB instruments but also for serial, vxi, and TCP/IP instruments. It is fairly easy to write a single driver that accomodates more than one interface. I've had to do this several times as we have instruments that were sometimes purchased with one or another interface. Another advantage to VISA is that it supports resource sharing and locking. Multiple applications can open the same resource and locking permits the applications to share the resource in a "graceful" manner.

Similar Messages

  • Error in using TCPIP/Inst​r class to open a VISA session

    I use the TCPIP/Instr class session to open a VISA session to Agilent 86140B Optical spectrum Analyser and I get an Error - VISA open in Appln.vi.Help me to fix this problem.
    I am able to access the instrument on LAN through a Telnet session.
    Vijayalakshmi.
    Attachments:
    OSA_Close.vi ‏28 KB
    OSA_Reset.vi ‏27 KB
    OSA_Initialize.vi ‏63 KB

    Thanx for the reply.The instrument is VXI-11 compliant.The error I am getting is Instrument timeout -1073807339 (BFFF0015) and I am using LabVIEW on Linux.
    I have another problem.I am able to see the instrument using a Telnet session but not using http//192.168.10.2 on a web browser.It is giving an error that the host may be down and try some time later.

  • Opening multiple visa sessions

    I'm having problems with opening multiple VISA sessions for communicating with 4 HP-34401A multimeters in LabVIEW 6.1. If you have a little bit of time, please take a look at what I have here to see if I'm doing something wrong.
    Thanks
    Attachments:
    HP34401_Test.vi ‏108 KB

    I have made a look at your VI. I don't have the driver for the instrument I couldn't go into the subVIs and its documentation and I could not change it for you.
    1. You initialise only 2 of the 4 meters. Initialize all meters.
    2. In sequence 0 you close the session to the meter. In the next loop iteration it will not measure as you intended. Delete the "VISA Close" function.
    3. The stop button would cause the while loop to exit. But your handling is a little bit complicated. Do following:
    Delete the "not" and case where the stop terminal is connected. Wire the stop terminal directly to the termination terminal of the while loop. With the context menu set it to "stop if True". Wire the VISA sessions to the right border of the while loop and connect t
    hem to the "VISA Close" function.
    Waldemar
    Waldemar
    Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
    Don't forget to give Kudos to good answers and/or questions

  • Open VISA Session

    Hi to all,
    I'm newbie with Labview 8.5, I'm viewing some example to connect serial port with VISA blocks. I see that these examples use a VISA Resource Name control to define the resource (example selecting COM1) but after they don't use Visa Open block to open a VISA session with the device, but they use directly the sequence "VISA write - VISA read - VISA Close" blocks. Why don't they use VISA open session to open a session with device?
    I read in help that VISA Resource Name contains some informations on resource and it maintains VISA session also, instead VISA session is a unique identifier, I think that when I create new Visa Resource name Control, Labview automatically open a session with this resource, so it isn't necessary to use VISA Open block to create the session, isn't it?
    best regards

    It's not correct to say that just dropping a resource control itself on the front panel or diagram opens a session. The resource is automatically opened when calling VISA function (i.e. a write or a read), if the resource was not explicitly opened with the VISA Open function. You can see this yourself. Put just a resource control on the block diagram, select the resource and run the VI. Click the arrow on the control and look at the resources. Now, wire a VISA Write to the control, run the VI, and look at the resources. You will now see a little icon next to the resource you selected. This indicates that the resource is open. The automatic opening of a resource was a change made to VISA several years ago and you will still see the VISA Open in instrument drivers. It's not a bad idea to always use the VISA Open function. For serial, you would put it before the VISA Configure Serial Port.
    Attachments:
    Open Resource.PNG ‏4 KB

  • Open visa sessions for controllin​g external dlls

    I need to open a VISA session to pass a session reference into a call library fucntion that calls the vendors instrument functions.  I currently see no way to do this using the call library or visa open function.  Does anybody know how to proceed when you have a non NI instrument that has a dll wiht it that you need to control over USB serially? 

    Mike,
    First thanks for your help but I have been in both those docs before.  My issue is that I have an instrument vendor that has a dll with functions like this:
    ViStatus _VI_FUNC Instr_autoConnectToFirst(ViPSession vi)
      return(Instr_autoConnectToAll(vi,1,NULL));
    that is written using some of the variables in the VISA library...
    When I go to look up what datatypes these variables are in the VISA specifications so I can hopefully create inpuits on a call library function in Labview,  I get descriptions like this:
    Type ViStatus
    This is the operational return status. It returns either a completion code or an error code as follows.
    Completion Codes
    Description
    VI_SUCCESS
    Attribute value set successfully.
    VI_WARN_NSUP_ATTR_STATE
    Although the specified attribute state is valid, it is not supported by this implementation.
    Error Codes
    Description
    VI_ERROR_INV_SESSION
    VI_ERROR_INV_OBJECT
    The given session or object reference is invalid (both are the same value).
    VI_ERROR_NSUP_ATTR
    The specified attribute is not defined by the referenced session, event, or find list.
    VI_ERROR_NSUP_ATTR_STATE
    The specified state of the attribute is not valid, or is not supported as defined by the session, event, or find list.
    VI_ERROR_ATTR_READONLY
    The specified attribute is read-only.
    VI_ERROR_RSRC_LOCKED
    Specified operation could not be performed because the resource identified by vi has been locked for this kind of access.
     I do not see how I get the IO defined for passing and returning data to these external library calls.
    Any ideas???

  • How are VISA sessions managed by executables?

    I have noticed that VISA sessions opened in the development environment (Labview version 6.0.2) do not show up in the VISA I/O reference control of compiled executables and visa versa. I assume that each EXE has its own memory space for open VISA sessions. Is it possible to get separate EXE's and the development environment to use the same VISA memory space so that all applications and uncompiled VI's show the same open VISA sessions?

    This answer, while correct, doesn't address the issue of some VISA classes and how Labview addresses open VISA sessions. It is quite correct concerning the listing of available resources, that is not the nature of my problem. The heart of the matter is the Open VISA sessions and how they are returned by the "Open VISA sessions.vi" vi in the vi.lib utilities. Also, the VISA reference control does, as you say, display currently available resources (for some classes), but it also displays currently open sessions below a dividing line for those resources not usually displayed.
    The best example of this is for the TCP/IP class. Resources of this class are not displayed unless a session for them has been opened.
    I have written and compiled an executable tha
    t opens a VISA session for a TCP/IP resource. After opening it, the session is displayed in the executable's VISA resource control below a dividing line that separates it from the available serial and GPIB resources. If, however, I have an uncompiled VI with a VISA control open in the development environment at the same time, the open session is not displayed in that VI's resource control. If I run the compiled executable as an uncompiled VI in the development environment along with other VI's containing VISA resource controls, the open TCP/IP session is displayed in all VI's. The same holds true for the "Open VI sessions.vi". Sessions opened by compiled VI's are not returned by this subVI when it is run from outside the executable.
    As I stated before, it appears the executable creates its own separate memory space for listing open VISA sessions.
    I would like to create a small executable that logs in to TCP/IP resources and makes those sessions available to other VI's that ar
    e either uncompiled and running in the devel environment, or are running as separate executables.
    Thanks for your comments
    Steve

  • Q: what does this VISA session name means?

    I'm using GPIB reading data from two oscilliscopes. When I probe the VISA
    session, I found they are like "GPIB::2 27". I know GPIB::2 means GPIB
    address 2. what does this 27 means?
    thanks!

    This is just an initial guess. Can you look at your application and see if my conjecture could be true?
    I think if you open duplicate VISA sessions to a device (e.g., "GPIB::2"), we append a number to the duplicate sessions. So, perhaps you've opened (with VISA Open and the "duplicate session" input set to TRUE) "GPIB::2" 27 times. (Note that we're talking about LV 6i or later.)
    Normally, you never need more than one session to a single GPIB device, so "duplicate session" should almost always be FALSE.
    If that doesn't apply, then please explain more about what you are doing. Are you using VISA calls yourself, or are you using an instrument driver? Is the instrument driver written in LabVIEW, or does it wrap around a DLL?
    If you were u
    sing "duplicate session" set to TRUE, I'd like to know about why you think (or thought) you needed to set it.
    I hope this helps.

  • Visa session problem

    Hello,
    I am quite new to LabView. I have to control a Nikon microscope TE2000E with a RS-232. Before writing the program I have opened a VISA session with MAX (basic I/O) to check that I can communicate with the microscope. But when I type a command (e.g. [r][S][P][R][CR], [r]=status request, SPR = function, CR=delimiter) the microscope send an error. I think that this is because I don't write the question in the correct format. Does anybody know the correct format for sending commands?
    Thanks in advance
    Raimon

    Raimon wrote:
    Hello,
    I am quite new to LabView. I have to control a Nikon microscope TE2000E with a RS-232. Before writing the program I have opened a VISA session with MAX (basic I/O) to check that I can communicate with the microscope. But when I type a command (e.g. [r][S][P][R][CR], [r]=status request, SPR = function, CR=delimiter) the microscope send an error. I think that this is because I don't write the question in the correct format. Does anybody know the correct format for sending commands?
    Thanks in advance
    Raimon
    Hi Raimon
    I am in a similar situation, new to labview and I have to set up a system to control the TE2000E via Labview. I was wondering if you had any luck getting things going, and if you could pass along any words of wisdom or sample vi's.
    Thanks very much,
    Jason

  • Do we still need to close VISA sessions?

    I know it sounds like a silly question but do we?
    Back in my early days (LabVIEW 5.1) I used to have a set of favorite VI's for my instruments that opened a VISA session, performed a task (like taking a measurement), then closed the VISA session. I used these a lot as I could drop them in and throw a program together without having to worry about wiring the VISA sessions. Fact this speed of test development really sold our company on LabVIEW...
    Well later on I was having an issue with a larger program crashing. After spending some time on the phone with a NI Engineer troubleshooting he told me that the constant opening and closing VISA sessions was not a good idea and could be the cause of my issues. So I rewrote the program opening a VISA session once for each instrument and closing it at the end. This cured the crashing and forced me to abandon my library of drop-in VI's that had served me so well for so long, totally changing the way I was writing my programs.
    Now fast forward to a couple years ago when my company made the jump from Labview 5.1 to 8.0 (that was a big step) now we are at LabVIEW 2009
    Among the many other changes from 5.1 to 8.0 most notably VISA had changed, I/O wire types, VISA Open was gone, VISA Close was deprecated, all my old programs have the (old) tag on the VISA blocks... AND there was a Automatically close VISA sessions in the advanced options
    The fact that VISA Close was deprecated kind of leads me to believe that we are being guided to used the auto-close option. It certainly makes programming faster not having to drag the VISA wires out and close them... But often I still do just out of habit.  
    This also has me wondering if we even still have to open a VISA session and wire it all the way through?
    So take a look at the attached overly simplified examples and explain what is the "best method"?
    Attachments:
    VISA.png ‏64 KB

    When the option is checked, VISA sessions are only closed automatically when your VI stops running.  My understanding, based on this, is that your two auto-close VISA examples are identical.  The session is opened the first time a resource is used and remains open until it is explicitly closed or until your VI stops running (if the automatically close VISA sessions option is checked).  If you don't automatically close VISA sessions and you do not close them explicitly, they will stay open even when your VI is not executing, which means they will open faster when you restart your code but will not be available to other applications.  Of course, exiting LabVIEW closes all VISA sessions.

  • Open VISA Session Monitor.vi

    This is a vi that is located in \vi.lib\Utility\visa.llb. Did anybody ever had it worked? I started 2 VISA sessions on test equipment (a power meter connected to USB and a signal generator connected to a gpib-usb) and the number of open sessions indicated 0 when there was clearly 2 open sessions.
    Ben64

    Vincent90 wrote:
    Hi Ben,
    Can you specify your error ? Did you try to send commands to your instruments when you think that your session is open ?
    BR,
    Vincent
    There is no error generated, the open VISA sessions just doesn't show up and the Open Sessions.vi return an empty array of references. The issue seems to be with this vi but we can't look at the diagram since it is password protected.
    I was running continuous acquisitions and the VISA resource name controls was showing 2 open sessions (the small computers icon beside the resource name).
    Ben64

  • Open VISA sessions (including duplicates​)

    I would like to obtain a list of open visa sessions. I found this knowledge base article which should work, however when opening duplicate sessions (e.g. "COM6 (1)") the list contains empty entries or multiple COM1 references.
    Please try the attached vi to see the effect; on my system the visa resource name control shows COM1 & COM2 (default system ports), COM6 & COM12 (2 USB-serial converters) and LPT1 (system parallel port) at start up.
    This is shown after opening "COM6" (3x) > opening "COM12" (4x) > opening "COM1" (1x) > closing "COM12" and "COM12 (1)"
    Maybe there is a way to read the contents of the drop down menu of the VISA resource control which contains all the information and is also updated automatically.
    Any help is greatly appreciated, regards W@Work
    Note: I'm using LabVIEW 2009 (32-bit) on Windows XP
    Attachments:
    open visa sessions.vi ‏28 KB

    Thank you very much for your response,
    First I'll explain the duplication: the "VISA open" VI allows for opening a duplicate session (which refers to the same port). I want to use this so I can have a separate session for writing and reading which can be locked and unlocked separately. The example I attached to my original post opens duplicate sessions when you (try to) open the same port ("COM1" for example) multiple times. 
    Could you please try the example again selecting "COM1" as "VISA resource name", then click "Open" two times. Now you should see "COM1" and "COM1 (1)" in both lists. On my system clicking "Close" (while "COM1" is still selected) removes "COM1 (1)" from the "open sessions found" list while it should remove "COM1".
    MAX lists ports 1, 2, 6 & 12 that I mentioned in my original post. When running the example this list does not change (no "COM1 (1)" for example) so I think this is just a list of physical ports, not the open VISA sessions. 
    I think you forgot to attach the image but I guess this is the printscreen you're asking for:

  • Why Open VISA Session?

    In the driver here, the VISA Open sub-VI states that it "must be called first" when using the device. There is a similar sub-VI for closing the session.
    How true is this?
    I can open and run a different sub-VI (such as Write Single) with no immediately obvious problems, just by specifying the correct device in the VISA Session field. Are errors or performance hits building up in the background?
    My problem is that the KS 3988 will be called on in sub VI's within sub VI's within sub VI's (relative to the main program). I'm not clear on where, exactly, I should be putting that VISA Open panel. This is especially confusing if the "dup VISA session" needs to be wired into every use of the Write Single sub-VI.

    Here is a picture of the VI which actually calls the KS 3988.
    My problem is that this thing is just the sub VI of a VI which is itself the sub VI of a VI that is running in a frame. The top-level VI that contains the frames has four such frames.
    Now, those top three VI's all read out of the black Admin sub VI, and the bottom can both read from it and write to it. Currently, all programs use the same KS 3988 via VISA, but that needs to be something we can change on the fly.
    So, where does the Open sub VI go? Do I need to include, in the frame-containing VI, something like this?
    Message Edited by DJDDA on 07-31-2008 04:10 PM
    Attachments:
    convertfix.jpg ‏17 KB
    convertvi1.jpg ‏26 KB
    convertvicontext.jpg ‏66 KB

  • Open VISA sessions in LV6 VISA Ref control and LV executables

    I have created a LV executable that opens a TCP/IP socket class VISA
    session. Once the session is opened, it appears below the dividing
    line in the executable's VISA resource control. However, the open
    session does not appear in the resource control of any open,
    uncompiled VI in the development environment, nor in the VISA control
    of other LV executables. However, if I run the VI as an uncompiled
    VI, the opened session appears in all other open uncompiled VI's as an
    available resource that may be selected. It should also be noted that
    VISA sessions opened by executables are not returned by the "Open VISA
    sessions" utility VI running in the development environment.
    My wish is to create a
    separate compiled executable applet that
    creates a TCP/IP connection to a network device and have that resource
    appear in the VISA control of other executables and VI's. It appears
    the executable uses its own memory space to keep track of open VISA
    sessions. Is there any way to change this so that all runtime
    executables and the development environment all work from the same
    list?
    Thanks in advance,
    sm

    jwf wrote in message news:<[email protected]>...
    > If you haven't done so, you should try updating LabVIEW 6.0 to 6.0.2.
    > You can download this update for free by going to www.ni.com and
    > clicking on downloads and then drivers and updates and pick the
    > LabVIEW updater out of a list. I know for a fact that this update
    > fixed some problems using the VISA resouce control in LabVIEW 6
    > executables. Hope this is helpful.
    Thanks for the advice, but I've already updated to 6.0.2.
    sm

  • POWL 'Query Name is already open in another session'

    Hi there,
    Our users are constantly getting the following error message when using POWL's in the Portal.
    Query <Name> is already open in another session' (POWL 016)
    The error occurs when a user tries to refresh a query and the query is locked in another session (ENQUEUE_EPOWL_QUERY_EDIT Exception foreign_lock).
    There are various root causes to why this error happens, system, application, communication etc. The one I am seeking help on occurs when the user abruptly terminates the browser session (forced or unforced) and the orphaned session is unable to close properly leaving the POWL query locked.
    We are currently informing the users to
    1.) close all windows and reload the worklist.
    and in certain circumstances
    2.) log off and log on again
    The above workaround doesnt always solve the problem. We are reluctant to give users access to SM12.
    Has anybody encountered something similar, if so were their specific settings, notes, code etc. which needed to be implemented?
    Cheers
    John P

    Try the following steps
    Please implement the note 1836401 and the prerequisites 1873487,1902580 .
    Identify the POWL Query name and set the refresh type as: 'refresh on every LIST VISIT'.
    Important: Run the report POWL_D01 and remove the result list of your POWL
    Application ID, it#s very important because the cache would still contain the old refresh type and will not recognize the new refresh type, please run the report at first for one user ant test the behaviour, if it works run it for all other user
    Pass the application parameter REFRESHA with value X to your POWL application. After that retest your issue, it should work. if not implement the note 1975395 and its prerequisites and test again
    Best regards,
    Robert.

  • Opening Remote Browser Session w/RT Client causes unopened VI from Project on Host computer to pop up and run

    I have a functional global variable (FGV) that runs on my RT target (LV 9.0f2) and is set via SubVI Node Setup to "open front panel when loaded" and Execution under VI Properties for the FGV is set to "Run when opened", "Allow debugging", & "normal priority".  The interesting thing that occurs happens when I have already opened the project it is contained in (but have not as yet opened any VIs) and then I establish a remote browser session with the already running real time startup application on the remote real time controller.  Everything works as expected, I can see my front panel in the browser showing that the application is running.  Once I begin to populate the controller's inputs with data, the data triggers a previously uncalled state of a subroutine that calls the FGV for the first time on the realtime system to start tracking the data.
    It is at this point that the actual VI on my host machine opens and runs locally.  I do have a web browser page available on the target machine that I can establish a session with but I have not opened it yet, and besides, this is the actual LOCAL VI that starts running.  It even stops running when I initiate the remote stop capability of my realtime application from my browser session.  The VI then remains open on my local machine.
    This only happens when the project is open on the machine I have begun the remote browser session on.  Is this a "feature" of LabVIEW? I haven't seen any problems as a result of this, but the "linking" behavior is a little disturbing because it seems like there is some background linkage happening here that might also cause other problems - what else is happening in the background, gremlins? (if you know what I mean)?
    By the way, my platform is Windows XP SP3, the browser is Mozilla Firefox 3.5.5, the application on the real time controller is taking about 25% of both processors (PXI-8106) capability and the data is NI XNET (PXI-8512 / 2) CAN related. 
    Bill

    Justin:
    What I am reporting on is pretty simple.  I have a VI that is self starting and runs when called on the Realtime platform.  While I am viewing the front panel of the calling VI using a remote web browser session, when the data that starts the VI on the remote platform begins to flow, the LOCAL VI on my laptop appears to open and appears to run LOCALLY.  This only happens if I have the project open containing the build specification for the project AND I have requested control of the top level vi from the web browser session.  I suspect that this is not expected behavior.  I have not tested it, but the VI that pops up like I have described is the only VI I have placed in the build specification under the "always included" category of source files. Upon closer examination I am noticing that the VI that pops up does NOT stay open when the upper VI is stopped remotely. 
    I guess this isn't really a problem, just not quite sure why it happens.
    Bill

Maybe you are looking for