Re: Visual source safe - followup question
- Original Message - From: David Hoadley [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, April 27, 2004 2:59 PM Subject: Re: Visual source safe - followup question between sites. The main problem as I understand it is that MS VSS does too much work on the client side to be used over an unreliable internet connection (no dialup please!). Yes. There's no server as such with VSS; the repository is simply a passive file structure open as a network share and anyone can do with it as they wish. So when a client screws up, it can take out the repository with it. And, of course, it's as vulnerable as any other shared directory to interference.
Re: AW: More then one active Vi with open Front panel?
Gerd, others have already answered, but maybe a little more details are better. You asked on Wed, 5 May 2004 17:10:20 +0200: Couldn't I put the subvi's in a true case and nothing in the false case within the separate while loops? Control the case using a local (h, that bad word again) from the state machine. Maybe it is not best programming style, but would be quick to implement in this existing project Paul replied A queue, occurrence, or semaphore would avoid the bad word. Well, at first, put a little wait into the false case, just to keep your code responsive. In a UI situation like this a wait for 100..250 ms is usually best. Second, to avoid problems accessing the global and getting into race conditions, I'd suggest using an occurrence instead. It can be 'read' just once and there's no 'hidden' connection/dependency in your code. Alternatively you may introduce a booleran control for each of the parrallel running while loops that contain your 'subVI's. Let this booleans control your cases inside the while loops. Get two locals of each of them, one in the UI loop that sets the respective boolean to tue once it is desired to run the respective SubVI. Use the 2nd local to reset the same boolean once 'its' true case is reached (inside the true case!). This effectively acts like an occurrence - so I'd prefer using an occurrence instead. Just my 0.02 Greetings from Germany! -- Uwe Frenz ~ Dr. Uwe Frenz Entwicklung getemed Medizin- und Informationtechnik AG Oderstr. 59 D-14513 Teltow Tel. +49 3328 39 42 0 Fax +49 3328 39 42 99 [EMAIL PROTECTED] WWW.Getemed.de
Re: More then one active Vi with open Front panel?
Gerd, Michael, Paul, (others...?) This sounds like the perfect situation for the Selective GUI Panel Control technique, whereby all the subVIs can remain embedded in a *single* ( -- Michael, you'll like that one ;¬), active loop, and the GUI panels open and close without any impact to the underlying code. All of the GUI subpanels VIs can live inside the single loop architecture without the typical wireflow complications of nested while loops -- that is, 'outer' main VI loops waiting on the completion of 'inner', subVI (GUI) loops. Another one of the great advantages of this method is that it can usually be applied to existing architectures without the usual hair-pulling, gnashing of teeth, and major reconstruction required by changing the application's underlying architecture midstream. (In fact, this is precisely how I stumbled onto it myself...) There isn't room to discuss the concept in any detail here, but if you are curious, there are 20 pages or so dedicated to the technique in LabVIEW GUI (including a variety of real-world, practical examples -- more info here: http://www.bettervi.com/LV_GUI/LVGUI_Gen.html ) On the other hand, if you don't want to spring the 50 or so bucks for a book, check out the LTR back-issues for two articles on the technique. (Intro article: Vol. 8 No. 2, and an application to Error Handling: Vol. 8 No.3. More info can be found at www.ltrpub.com) Not only does your situation sound like the ideal application for this particular technique, but once you get a handle on the underlying concept (and the apparent reversal of LabVIEW GUI logic implied by it), you are sure to find other interesting uses for this handy, and (dare I say it?) powerful, wiring strategy. Cheers, Dave Ritter BetterVIEW www.bettervi.com Yes, it will work. Go right ahead. My problem is I enjoy discussions on methodology and implementation techniques too much. In our local LabVIEW user group meetings we sometimes (actualy always) discuss (actually argue) programming style. The issue lately is: single loop good, multiple loops bad. :-) Michael Aivaliotis http://forums.lavausergroup.org Couldn't I put the subvi's in a true case and nothing in the false case within the separate while loops? Control the case using a local (h, that bad word again) from the state machine. Maybe it is not best programming style, but would be quick to implement in this existing project Gerd How do you suggest that the subvi's get called? What method would you use to command the subvi's from the state machine? Just curious... Michael Aivaliotis Gerd, You asked, ...The main VI is basically a state machine waiting for user clicks to go to one of the sub VIs, which e.g. displays a xy chart of measurements... How can I get the main VI to commence working (not waiting for the chart window to complete and return)? Michael responded, You will have to use VI Server to do this... While Michael's approach will work and is probably preferable, I think you might also accomplish the same thing by putting each of your selectable subVIs in its own loop parallel to the state machine loop. Use the state machine to enable the execution of the appropriate subVI for one iteration of the subVI's loop. One loop being held up until its subVI closes will not interfere with any other loop, including the master state machine's. -- EnWirementally, Paul F. Sullivan
Re: How to add plot areas?
Hi Dave, Thank you for your reply! In one chart, the software can display the selected traces. The problem is I need a stack plots like user interface and hope the number of plot areas can change alonge with the number of input signal during running time. I believe Jcrooke's method of using picture control is a solution for it. Because it needs a lot of work, I didn't try it. It seems that you have simple method to handle this. Can you tell me? Best regards, George
Re: Has anyone written a driver to comunicate with an ADAM 4000...
Thank you for your answer!! But the problem is that I am working using Linux, so I couldnt use the driver And I cant open vi_adam_4000.html!!! Do you have any idea? ciao! Graci
Re: How to add plot areas?
Hi Greg, Thank you for your reply! I don't understand how to use subPanels or dynamically loaded panels that are edited using the legend properties when idle and then shown to the user. Can you tell me more what kind of legend properties can be used to control the display number of the plot areas in stack plots? Best regards, George
RE: More then one active Vi with open Front panel?
Michael Aivaliotis [EMAIL PROTECTED] wrote: My problem is I enjoy discussions on methodology and implementation techniques too much. In our local LabVIEW user group meetings we sometimes (actualy always) discuss (actually argue) programming style. The issue lately is: single loop good, multiple loops bad. Are you kidding? Most complex programs I write never would fullfill user expectations without multiple loops in the main VI. You don't want to block alarm handling or built in TCP/IP server handling for remote control because a user wants to check the configuration settings. Of course making sure the local user and the remote application are properly locking out each other is another thing, but quite some remote commands do not need local lockout to be performed at all. Rolf Kalbermatter CIT Engineering Nederland BVtel: +31 (070) 415 9190 Treubstraat 7H fax: +31 (070) 415 9191 2288 EG Rijswijkhttp://www.citengineering.com Netherlands mailto:[EMAIL PROTECTED]
Re: NI-VISA Serial
Kieta, Stanley [EMAIL PROTECTED] wrote: 1. Is there an easy way to include VISA with the Application Installer so the user only needs to run 1 install program? In LabVIEW 7 Application Builder go to the Installer Settings Tab-Advanced Button and select Serial Port Support. This includes a minimal version of NI-VISA for serial support. No MAX is installed though. 2. I need the application to automatically find the comm ports on each user's PC. The VISA resource name control on my front panel lists these ports using the ASRL1::INSTR format. Is there any way to get the control to list the conventional COM1 notation? I tried copying the visaconf.ini into the same directory as the executable but that did not work. The visaconf.ini file belongs into C:/VXIPNP/OSVer/NIVisa. Replacing this with one from another computer is probably not such a great idea. You could however look in your file in the section [ALIAS] and make sure you add the missing information to the file on the new computer for instance during startup of your application. Rolf Kalbermatter CIT Engineering Nederland BVtel: +31 (070) 415 9190 Treubstraat 7H fax: +31 (070) 415 9191 2288 EG Rijswijkhttp://www.citengineering.com Netherlands mailto:[EMAIL PROTECTED]
Re: Problems by running PCI-6602 cards on an ASUS MB A7N8X-E Deluxe!
Hello Sven, does the error only occur on this PCI-Slot? Does the other PCI-6602 work fine in this PCI-Slot? Actually it seems that all has to work. I have no entries about this board in my database. Is the probleme then only seen on the one PCI Slot with only one of the 6602-Card? Regards Thomas D. NI Germany (SRQ 200668)
Re: How can I get notification that a callback vi has closed
Greg Thanks for the response, as I am extremely new to LV I am not aware of many of the options available to me. I shall look into some of the areas you have suggested above. To add to the problem it may be required that the 'event handler' acknowledges the calling function either after completion of the handling code or before execution of the main handling code. This will be dependant upon what the user is attempting to do. the user may wish for the main C++ app to continue execution and continue following is state machine, this would be achiebed by the 'event handler' acknowledging before executing any user LV code. Alternatively the user may wish that the main c++ app holds off while the user LV code performs some action, on completion of the 'action' the acknowledge flag could be set which is picked up by the state macine and the main c++ app then continues on its merry way. Apologies for adding this extra bit in but exact requirements have been a bit fluid ! Would I be best to simply use a global variable ? Not nice I know ! It would appear from my 'learnings' over the past few days that I cannot simply use a sub vi for two reasons: 1) The event data of the call back vi must match the event data , this would mean that all my events would require a 'return' or 'event data out' value - clearly 'events' where not designed with this in mind as they are not synchronous. 2) the ack may be required at ANY stage within the 'event handler' code - the sub vi would only pass data out at the end of the user code ! Without looking into the use of synchronisation objects it may be that I need to use global variables OR I change my com interface to allow for polling rather than being event driven... Thanks for the comments and discussion , I am finding that by simply discussing thhe issues I am gaining a much better understanding. best regards stephen
Slide control autoscale??
How can I programmatically autoscale a slide control in LabVIEW 6.02 without manually reading out if the max value is smaller than the value to display and set the max value? I have found no property for autoscale or scale fit for slide controls but cannot imagine that such an important function is not included.
Re: Remote Access
Hi Dennis, Yes, thanks for your opinion. I think I am slowly beginning to see the difference in these different remote methods. I thought using a VI server would solve the problem, but a test app that I quickly rolled seems to indicate that any panels which I open from the remote client actually get opened on the server side, which is completely not the intended behaviour. I would like the panels (which reside on the server in a DLL, and interact with files on the server) to pop up on the client. Maybe the only way to do this is using the Web server as you suggested? There is no need to save any of the data on the client, it just needs to be able to view data which resides on the server. Thanks for your input :-)
hi!!!I need your help!! Does anyone know if there is any...
hi!!!I need your help!! Does anyone know if there is any Modbus lib or Modbus driver to use this en Labview BUT in LINUX? I am using Labview to comunicate with ADAM modules, but I want to comunicate with them using Modbus protocol. I don=B4t want to use ADAM protocol ASCII comands that the modules can understand. So I need a Modbus driver or Modbus libraries. The PROBLEM is that I am using LINUX I am looking forward to your answer!! Graci
hotkey and subpanels
Hotkeys defined on controls in a VI Panel shown in a subpanel in another VI are not working!!! It's the VI containing the subpanel control that receive the hotkeys... Is there any workaround to avoid this very annoying and unattended behavior?
Re: How to add plot areas?
Hi Rolf, Thank you for your reply! It seems that graph doesn't have the choice of stack plots, right? About circular buffer, if there are a lot of points needed to display, is it possible that the size of the buffer too big? Best regards, George
Re: MODBUS
oz, Khalid's suggestion is a very good one. I keep files of snippets from this forum on many subjects of personal interest and am sending you (private email only) the MODBUS collection. -- EnWirementally, Paul F. Sullivan SULLutions (781)769-6869 when a single discipline is not enough visit http://www.SULLutions.com
Re: NI-VISA Serial
Stanley Kieta asked: 1. Is there an easy way to include VISA with the Application Installer so the user only needs to run 1 install program? 2. I need the application to automatically find the comm ports on each user's PC. The VISA resource name control on my front panel lists these ports using the ASRL1::INSTR format. Is there any way to get the control to list the conventional COM1 notation? I tried copying the visaconf.ini into the same directory as the executable but that did not work. From my library of forum snippets, it appears that Mihai Costache is the expert in question 1 with two postings (although Edwin Dickens echoes the advice). I'm including only the most recent (which seems to be better) here, but you can find the other with SearchVIEW if you'd like. Subject: RE: Communication Error in EXE using serial VISA From: Mihai Costache [EMAIL PROTECTED] Date: Mon, 25 Mar 2002 07:50:56 +1200 ... 1. Download visa260runtime.exe from the NI site. 2. While creating your application builder script, include it in your list of Support files. 3. Go to the Installer Setting tab, tick Create installer check-box, then click Advanced... button. 4. Tick the Run executable after installation check-box and type visa260runtime.exe in the Executable field. The VISA installation will begin straight after your application's complete installation, or after the LV run-time engine installation, if you choose to distribute that as well. Hope this helps, Mihai Costache Software Engineer OSCMAR International Ltd. PO Box 6008 Wellesley St. Auckland, NEW ZEALAND Tel: +64 - 9 - 379 0360 extn. 892 Fax: +64 - 9 - 373 9799 e-mail: [EMAIL PROTECTED] www.oscmar.com ... For question 2, Jürg Bögli, Edwin, and Dan Mondrik advise Mihai: Subject: Re: VISA confusing changes From: Jürg Bögli [EMAIL PROTECTED] Date: Thu, 16 Aug 2001 09:54:18 +0200 Dear Mihai, You must define an alias for your ports. (COM1 -- VISA alias, ASRL1::INSTR -- VISA resource name. If MAX is installed on your machine you can use it to define the VISA alias of your ports. If MAX is not installed, you can manually edit the visaconf.ini file to define the alias for the ports. Assuming you have 2 COM and 1 LPT port type: Alias0 = 'COM1','ASRL1::INSTR' Alias1 = 'COM2','ASRL2::INSTR' Alias2 = 'LPT1','ASRL10::INSTR' NumAliases = 3 in the [ALIASES] section. The format of a line is: ALIASx= 'Alias', 'Resource Name' NumAliases must be set to the number of aliases. Unfortunately I don't know if it is possible to hide the LPT port in the VISA Resource Name I/O control... Jürg Bögli RD en électronique Sonceboz SA CH - 2605 Sonceboz Tél: +41 32 488 11 - 70 Fax: - 00 www: http://www.sonceboz.com Subject: RE: VISA confusing changes From: Dickens Edwin [EMAIL PROTECTED] Date: Thu, 16 Aug 2001 07:37:10 -0500 Mihai, I was just having this same problem with built exe files for customers that only have the runtime engine installed. I came up with a vi that can find the visaconf.ini file and edit it with the proper entries so the application will display Com1, Com2ect. instead of the ASRL1::INSTR. They are much happier with this than having to edit the file themselves. I've included the vi in private email. I've built this into an .exe so all the customer has to do is run it after installing the runtime engines. As the file sits right now, it sets up Com1-4 and LPT1. Only the Com ports that actually exist on the machine will show in the list. If you do not want LPT1 to show in the list, you'll need to change LPT1 to a space in the constant in the second for loop. This will cause a blank space in the list that can still be selected, but at least it does not say LPT1. If anybody else is interested in the vi, let me know and I'll send it out in a few days. -- Edwin O. Dickens DISTek Integration, Inc. On assignment to: John Deere Product Engineering Center phone: (319) 292-6372 email: [EMAIL PROTECTED] Lvl 3, Aisle U, MS83A Subject: Re: VISA confusing changes From: [EMAIL PROTECTED] Date: Mon, 20 Aug 2001 11:29:03 -0500 Peter, Jurg, et al: I would like to answer one question from the previous email chain. The question was basically, Is it possible to hide the LPT port in the VISA Resource Name I/O control? The answer is yes. Run MAX, expand the Ports section, right-click on LPT1, choose Properties, and uncheck the Enabled field at the bottom of the dialog. This will disable it from VISA, and it should no longer appear in the VISA list of found resources. It does not affect the ability of the OS to access the port, so you can still print, etc. Dan Mondrik Senior Software Engineer, NI-VISA National Instruments -- EnWirementally, Paul F. Sullivan SULLutions (781)769-6869 when a single discipline is not enough visit http://www.SULLutions.com
Re: AW: More then one active Vi with open Front panel?
Gerd, Severely editing Uwe's response to just: ...put a little wait into the false case... I'd suggest using an occurrence suggests that putting a Wait on Occurrence feeding a single frame Sequence Structure containing the subVI all within the while loop may be the most elegant solution of all. How many engineers does it take to fix a VI? This thread seems to be a very good advertisement for open source programming. -- EnWirementally, Paul F. Sullivan SULLutions (781)769-6869 when a single discipline is not enough visit http://www.SULLutions.com
RE: Parallel Loops (was More then one active Vi with open Front panel?)
I for one don't like multiple loops in one diagram, if I need to do parallel processing (another loop), I will have another VI running. I think in one way or another you need multiple Loops in your application, but its only a matter of architectural preference how they are implemented. I believe that is what Michael meant by the single loop good, multiple loops bad. -Sam -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Paul F. Sullivan Sent: Thursday, May 06, 2004 7:50 AM To: Michael Aivaliotis Cc: [EMAIL PROTECTED] Subject: Parallel Loops (was More then one active Vi with open Front panel?) Michael, You wrote: ...I enjoy discussions on methodology and implementation techniques... The issue lately is: single loop good, multiple loops bad. Without multiple loops you lose the parallelism that is the hallmark of LabVIEW. Why would multiple loops be bad? If it's the block diagram real estate taken up by the loop structure, you could hide the loops in subVIs. -- EnWirementally, Paul F. Sullivan SULLutions (781)769-6869 when a single discipline is not enough visit http://www.SULLutions.com
In my table i want to make one column act as toggle button on double click event in Labview
In my table i want to make one column act as toggle button on double click event in Labview
memory allocation
hi, I using LV for hydraulics simulations. So i have to deal with a lot of inputs/outputs. The inputs are very large text files. concernings the outputs i only need the information for LV, so i think it is better to code them in binary files than in text files. I also use a lot of sub vis that i created. My problem is that i use a lot of memory and it seems that i have less and less memory as far as i'm using the program. i need help thanks gaetan
Re: Large file size for continuous monitor DAQ 6052E
What version of LabVIEW and DAQ are you using? With LabVIEW 7.x, we greatly enhanced the effeciency of file writing. Also do write in binary, such as waveform data types. Can you reduce the data prior to writing to file? 32 channels at 10k/second should not be a problem. With today's fast IDE drives I have seen 56 channels at 16k going to disk while the rest of the application (very processor intensive) is able to keep up. Preston Johnson
Re: Save path of options
Don't know if such property exists, but there are INI VIs under FileIO Configuration File VIs. Just read the key and you are all set. -Joe
Re: How can I get notification that a callback vi has closed
Thanks for the comments and discussion , I am finding that by simply discussing thhe issues I am gaining a much better understanding. Unfortunately, I still have very little information about what you are trying to do so my comments have to be heavily guess based. Let me describe a little bit about how LV and TestStand plug together and that is one possible way to mke things work for you. TestStand can operate in a standalone mode or pulled into a user program, anyway, it allows for calling to a VI to carry out a test. TestStand passes values into the subVI and initiates the call. One of the parameters is an interface for communications back to TestStand. This is used to gather additional parameters that aren't directly provided, or to update other values stored in TestStand, or to notify TestStand of progress. Sometimes the subVI doesn't use these mechanisms and it is a simple subVI call, but the capability is there and it is pretty simple for the subVI writer to take advantage of them when they are needed. If you have a very clear description of what you are looking for in terms of data in, data out, intermediate notifications, and synchronous versus asynchronous execution, you should try to state those clearly, even if just for yourself. This model will be the fundamental thing to define the interaction between your app and LV, and if it changes often, you will end up with lots of rework and most likely not very nice code. Another option you might want to consider. LV makes it very easy to do asynchronous tasks and to synchronize things later. If it allows you to simplify things, you might consider making a LV engine that deals with these things and you always call that from your C code, either synchronously or asynchronously. This hopefully means this interface doesn't change as much, but the LV to LV interface can offer more options and change more often without disturbing the rest of the app. Greg McKaskle
[W] Application builder - DLL
Return Receipt Your [W] Application builder - DLL document : was Dominic A Dragotta/AE/DuPont received by: at: 05/05/2004 09:23:23 PM This communication is for use by the intended recipient and contains information that may be privileged, confidential or copyrighted under applicable law. If you are not the intended recipient, you are hereby formally notified that any use, copying or distribution of this e-mail, in whole or in part, is strictly prohibited. Please notify the sender by return e-mail and delete this e-mail from your system. Unless explicitly and conspicuously designated as E-Contract Intended, this e-mail does not constitute a contract offer, a contract amendment, or an acceptance of a contract offer. This e-mail does not constitute a consent to the use of sender's contact information for direct marketing purposes or for transfers of data to third parties. Francais Deutsch Italiano Espanol Portugues Japanese Chinese Korean http://www.DuPont.com/corp/email_disclaimer.html
Re: memory allocation
which OS and LV version are you using? I had an effect with LV 5.1.1 and Win98, that the write-to-file function made my vi to use more and more memory. With Win2k is was no problem. Niko gs wrote: hi, I using LV for hydraulics simulations. So i have to deal with a lot of inputs/outputs. The inputs are very large text files. concernings the outputs i only need the information for LV, so i think it is better to code them in binary files than in text files. I also use a lot of sub vis that i created. My problem is that i use a lot of memory and it seems that i have less and less memory as far as i'm using the program. i need help thanks gaetan
Re: memory allocation
Here are several tips I learned from experience, hope you find it usefull: A. Check if Array/String inputs are empty, if they are, skip the step (for example, concatenate string vi and build array vi). B. Use concatenate string and build array VIs sparsingly. C. Close unused references. D. when reading large files, read small chunk at a time. Other people may have additional tips. At the mean time, check the Application notes from Labview Help Search Labview Bookshelf Application notes and white papers Labview performances and memory management -Joe
Re: I am using the Menu Selection With Events.vi example...
If your menu tag Exit case, assign True to your Stop variable. -Joe
Re: Hi Guys.I need a visa program to read and aquire data from...
NI has a driver A href=http://zone.ni.com/idnet97.nsf/9b2b33e1993d877786256436006ec498/04997f2e03a49519862568ab005fb989?OpenDocument;here/A. It says that it's serial so that might mean it uses the old serial driver instead of VISA in older versions of LabVIEW. If necessary, conversion to straight VISA calls shouldn't be to big of a task.
Re: In my table i want to make one column act as toggle button on double click event in Labview
It is quite easy, use the combination of Mouse Up event and Edit Position property. The Edit Position property returns the cell position where the mouse is clicked. -Joe
Re: I have grouped grouped 7 data lines onto 3 graphs on a...
Hi Jumarion, Thanks for your code, I need to keep all 7 plots and remove the unused graphs. Labview properties allow the programmer to change which stacked graph displays a plot, which can make some graphs redundant, therefore I would have thought theres an option to remove unused graphs to complement those properties. Regards, Chris
Re: Slide control autoscale??
How can I programmatically autoscale a slide control in LabVIEW 6.02 without manually reading out if the max value is smaller than the value to display and set the max value? I have found no property for autoscale or scale fit for slide controls but cannot imagine that such an important function is not included. I don't know that I've ever heard this requested before, and after thinking about it a bit, the request makes sense, but probably just as a momentary action, or only zooming out the scales, but not zooming in. Otherwise, the thumb would always be in the same place and the scales would just change alot. It is not built-in, but a subVI could easily be written to do this whenever asked on any slide, given its reference and perhaps a parameter to state the style of rescaling. Perhaps someone already has a similar VI they would like to put on devzone? Greg McKaskle
Keyence and LabView
Hi, I am trying to acquire data using LabView from KV16AR PLCs data memory. A program in PLC is going to dump data in PLCs data memory and LabView is going to simultaneously acquire it. The transmission is over serial port and I have done serial port acquisition before with temperature controllers. I felt both type of acquisition are the same...but still wanted to ask... Is this any different? ... I have never worked with PLCs before..thats why wanted to know. TIA Gokul __ Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs http://hotjobs.sweepstakes.yahoo.com/careermakeover
wrong OS or OS version
I tried to install the Labview 7.0 runtime on an embedded NT system. After 56% of the installation prgcess I got an error message:Wrong OS or OS version for application What is wrong ? Is embedded NT not supported by LV 7.0? The LV 6.1 runtime can be installed without any problems
how do I control a 3D human model from an activeX container
I have expanded the Labview robot arm.vi example into a complete 2D human and use it to copy logged leg movements (angles/time). I would like to do the same thing using a 3D equivalent. It may be possible to port the 3D robot arm from Labwindows and do the same kind of thing (I think it relies on openGL). I also have a package with accurate 3D humans called poser and can export to different formats like vrml. I have installed a vrml viewer called cortona into internet explorer. I have then inserted an ActiveX container into a vi and linked it to IE. When I drop a vrml file into the ActiveX/IE/cortona container it loads quite happily and I can orientate the 3D object as expected. The problem is how do I now use labview to pass my various joint positions with time? Will this involve using an API etc? I am at the start of this part of the project so a good strategy will save a good bit of time. Please advise.I can post a cortona URL and a couple of files on request. Regards Chris
How do I get Waveform from a file........?
Hi friends, I'm still learning LabView programming, I've a file which contains data (arterial blood pressure) and I want to sample...read lines from a file. Secondly, I want to get waveform and extract features from it e.g Max, Min, Mean...how do I get that right? Maybe I've to compute but how? Thanks for your advice! Scopas.
Do I need to set something when using Dynamic VIs to pass control values to an executable VI
I am using VI server to pass control information from one VI to another. In the development system this works fine. How ever once I build the VI's into an executable the values from one of the VIs does not get passed. I use the same method in three different applications, 2 of the applications work fine, but one does not. The only thing I can think of is that there is something that needs to be set that I did (without realizing) in the first two but not in the third. All the Applications run fine. The problem that occurs is in the values passed. The same value gets passed everytime this turns out to be what ever the default was prior to running application builder. I am currently using 6.02.
Re: once I have sent an email I cant switch my case structure back to false
I'm not sure what your exact problem is. If you set the front panel Boolean false and run the VI, the false case is executed and the VI stops. If you then set the control to true, the true case executes and then the VI stops. If you intead to use this as a subVI, I would think that this is the intended behavior. It would be up to the calling VI to change the true/false value being passed. If you just want to test the functionality of your code and do a Run Continuously, then you could temporarily set the mechanical of the control to Latch When Released so that the control automatically returns to the false state after having it's value read.
Re: Large file size for continuous monitor DAQ 6052E
If your sure it's file I/O causing the slow down try using a low level write to file vi (yellow color). High level write to file vi's such as write characters to file or write to spreadsheet will privide more functionality but will also cause more overhead to your program. Try to log in binary if your not conserned with writing to a text file.
Anyone here WORK for a University that can use some ISA DAQ cards ??
I have about 10 AT-MIO-64E-3 cards that I have tried a few times to sell with no luck... I believe I have permission to donate them to a University... if there any interested parties please let me know... Sorry but I think I can only be US schools Dan Bookwalter N8DCJ Hi-Stat a Stoneridge Co. 345 South Mill St. Lexington, Ohio 44904 (419) 884-1219 Phone (419) 884-4172 Direct (419) 884-4195 Fax [EMAIL PROTECTED] _ This electronic mail transmission contains confidential information intended only for the person(s) named. Any use, distribution, copying or disclosure by any other person is strictly prohibited. If you received this transmission in error, please send an electronic mail message to [EMAIL PROTECTED]
LV for Linux and TCP/IP
Not having seen the Linux version, so this is probably a dumb question , but ,does it have the same TCP/IP support as the other platforms ?? any other things I need to be aware of thanks Dan Bookwalter N8DCJ Hi-Stat a Stoneridge Co. 345 South Mill St. Lexington, Ohio 44904 (419) 884-1219 Phone (419) 884-4172 Direct (419) 884-4195 Fax [EMAIL PROTECTED] _ This electronic mail transmission contains confidential information intended only for the person(s) named. Any use, distribution, copying or disclosure by any other person is strictly prohibited. If you received this transmission in error, please send an electronic mail message to [EMAIL PROTECTED]
Re: Visual source safe - followup question
At 7:19 +0100 5/6/04, Craig Graham wrote: Hmm. This message was posted some days ago and has only just appeared. List problems? No. Problems with sender. I am replying privately with details -Scott
Re: hotkey and subpanels
Here is a link that may help you. http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101RPAGEID=135HOID=506500080096CAUCATEGORY_0=_49_%24_6_UCATEGORY_S=0USEARCHCONTEXT_QUESTION_0=key+focus+in+sub+panelUSEARCHCONTEXT_QUESTION_S=0
external clock for AI trad mx
We are using a 6110 to read a train of bi-polar analog pulses. The pulses consist of a negative and positive half-puls with 250 ns spacing. These are sampled with an external clock on PFI0 of the same high speed. Up to now we were using traditional NIDAQ 7.0 currently with LV 7.0 on a Win2K PC. Now I ran into a limitation of 16mio samples for a finite scan. While modifying to help this, I decided to move up to mx interface. This is not giving the same results as with the old interface. The first sample (the negativ one) of the twin puls is read correctly. The second puls is obviously wrong. I suspect it is taken with a delay. When run with the maximum internal clock of 5MHz you can verify both halfwaves are correct. The hardware has not changed. Is there a different setup time for the sample puls between traditional and mx interface? Well, I doubt it. What else could I have missed. Thanks Gabi
Re: I am using the Menu Selection With Events.vi example...
Hi Joe, Perfect.. neat and simple Thanks, Chris
Re: Parallel Loops (was More then one active Vi with open Front panel?)
Sometimes they are needed, but I have seen one really egregious LV app in particular where the author had about 7 while loops checking local and global flag variables to see if they should run the code they contained. The program automated a highly sequential process, and would have been much better off with a state machine exerting strict control over the flow. As it was, it was like a car full of kids yelling are we there yet? every few milliseconds. This generated lots of useless cpu activity running loops that had nothing to do. A state machine only executes the code that needs to be running. Flow control was abandoned to the task manager, and it took me two days to find one bug that wouldn't show when execution highlighting was on, but would appear as soon as it was turned off. I think some famous comic said Timing is everything. In addition, that program construction rendered the LV debugging really hard to use. When using execution highlighting, or single stepping,the point of action shifted at random around this large diagram, turning it into a software version of Whack-a-Mole. With a state machine, you know where to look. I generally avoid them, but then, since I came here I've mostly been automating fairly slow test sequences, not pushing the envelope of high sample rates etc. The only reason I've used an independent loop is to poll an Abort button to update lots of local variables used to shut down a long process with lots of nested loops. -BG Bill Gilbert, EM Tech UMN School of Physics and Astronomy Tel 612 624 4870 Fax 612 624 4578 Paul F. Sullivan wrote: Michael, You wrote: ...I enjoy discussions on methodology and implementation techniques... The issue lately is: single loop good, multiple loops bad. Without multiple loops you lose the parallelism that is the hallmark of LabVIEW. Why would multiple loops be bad? If it's the block diagram real estate taken up by the loop structure, you could hide the loops in subVIs. --
Re: hotkey and subpanels
Thanks but nothing really interesting to me. Of course I could do what I need by programming... But I don't want to wire anything for a functionnaility that should be normal and straight! I'm mostly searching for a way to redirect keyboard input from a VI directly to one another...
Re: I am using the Menu Selection With Events.vi example...
Glad to help. Love labview, live labview
Re: memory goes crazy when calling a sub-vi
I wanted to add a plug for one of the new features in LabVIEW 7.1. It now offers an enhanced tool that will show where LabVIEW is allocating buffers, and could be really useful for you to see where the allocations occur. You can read more about it on page 19 of the a href=http://www.ni.com/pdf/manuals/321780f.pdf;LabVIEW Upgrade Notes/a Evan National Instruments
Re: Calling C++ DLL function in labview
Rolf, I have hard time to find the LabVIEW library. What's the exact name? Thanks. -Joe
How do I get the version of labview a VI was saved in at runtime?
I want to get the version of labview that a VI was saved in so i can display it on the front panel.
Re: Calling C++ DLL function in labview
I found it. It's in Labview.exe . Thanks, Rolf. -Joe
how to get second instance of exe file in W2k
When I build an application into exe, I can run it only once. When I try to run it second time, windows makes the first instance an active one. I would like to have second instance running as well. How to make that? Shat I make my vi reentrant? Will it help? thanks in advance Pawel
Re: Débutante ! HELP
c'est =E7a mon texte : Bonjour, Je comprend bien ton d=E9sarroie(orthographe?), j'=E9tais dans la mm situation que toi il y a 2 mois. Je peux te donner la d=E9marche que j'ai eu pour apprendre : tout d'abord les connaissance que j'avais : prog en C, C++, Java, Basic... Donc j'avais plusieurs automatisme de programmeur textuel, et le pb c qu'il faut les oublier pour LabView!!. J'ai commencer par faire les tutoriaux fournies avec l'aide de labview. Puis g essay=E9 de comprendre des exemples etc... je n'ai pas trouv=E9 de cours, g surtout bcp lu l'aide en ligne. Ensuite le probleme avec labview c qu'il y a plein de petites astuces, par exemple pour ton probleme d'entr=E9e-sortie entre vi : dans l'exemple que j'ai joint j'ai cr=E9er une commande num=E9rique et une commande chaine de caractere ensuite g cr=E9=E9 des variables locales pour chacuns de ces commandes. (clik droit sur les control dans le diagramme cr=E9er variable locale). Ces variable locale sont par d=E9faut en lecture mais tu peux les chang=E9es pour qu'elles soient en =E9criture. pour cr=E9er un sous-vi qui a en entr=E9e les valeurs contenue dans tes commandes, d'abord tu s=E9lectionnes dans le diagramme avec l'op=E9rateur fleche les variables locales, puis tu va dans le menu =E9dition l=E0 tu as un champs cr=E9er un sous vi (c en bas du menu). ton sous vi est alors cr=E9=E9. Si tu veux cr=E9er un vi et d=E9finir ces entr=E9e sortie tu peux aussi le faire de cette maniere : tu cr=E9e ton vi tu y ajoutes tes commandes, tes indicateurs, ton code... ensuite sur ta face avant tu cliques droit sur l'icone de ton vi en haut a droite de ta fenetre labview, tu as un menbu qui s'affiche non? il y a un champ visualiser le connecteur tu clik dessus. L=E0 tu recliques droit dessus tu as un champs choisir un modele( c pour d=E9finir le nombre d'entr=E9e sortie de ton vi), ensuite avec l'op=E9rateur de cablage tu clique sur un terminal de ton connecteur et sur la commande ou l'indicateur de ton choix. (le vi que je t'ai mis en exemple a ces deux commande en entr=E9e) Voila g fini, c pas tres clair mais j'espere que =E7a t'aidera, Un conseil pour labview : essayes et tu trouveras des astuces. fran=E7ois vi principal(a lan=E7er) (Binary Executable, 8K) sous vi (Binary Executable, 8K)
Re: How do I get the version of labview a VI was saved in at runtime?
If you want the LabVIEW version, you use a property node. Right click and Select ClassVI ServerApplication and then select PropertiesApplicationVersion Number. This will return a string. If you want the revision number of a VI, its Select ClassVI ServerVI and then select PropertiesHistoryRevision Number.
Re: Labview 7.1 released 5/4/2004
At 2:24 PM -0400 5/4/04, Scott Hannahs wrote: List of features at: http://www.ni.com/labview/upgrade.htm Is there yet a list of labview bug fixes that 7.1 incorporates? Alos, has anyone been able to find information on what, if anything, has changed in DSC? There is a new version of DSC as well, 7.1, but there doesn't seem to be a listing of new or modified features. -- - Andrew Johnson - WireWorks West
Q re returning data to LV via pointer to DLL
Hello, I have a LabView 7.0 program that calls a shared library written in C and compiled using LabWindows/CVI 7.0. The DLL returns results to me by writing them into memory that I provide from LabView. In LabView, I wire a control to the input side of the shared library node, and I pass that value by pointer. The DLL does not actually use the value, but rather uses the pointer to write a value that I will later need in LabView. My question is... why do I need to connect the output side of the library node to a local variable instance of the original input control? I've found that if I don't make this connection, then I don't get the desired value written by the DLL to the specified memory location! This seems very strange to me. Since the DLL is changing the value at its memory location, I would not expect to need to wire anything to the output of the shared library node. Can anyone explain this behaviour? Thanks in advance, Frenk
Re: How do I get the version of labview a VI was saved in at runtime?
Although LabVIEW seems to know what version it was previously in, (it shows this information when you close a VI without saving and it promts you to save, you can click 'Explain' and it says it was in a previous version and what that version was) I don't think you can get that version number through a property node or any other means. This is probably due to the fact that as soon as you open a VI that was saved in a previous version, it recompiles it to the current version.
Re: How do I get the version of labview a VI was saved in at runtime?
Dennis, Just short note. Revision Number of VI is available in Development Mode only. It is not available in Run-Time Engine (in builded application will be always returned zero). with best regards...
Re: memory goes crazy when calling a sub-vi
Thanks for your insight, Greg. I was surprised to learn that global references each contain a copy of the data. This implies that each time data is written to a global, each copy of that global must get updated. The process sounds amazingly inefficient. Now I know why globals are taboo in LabVIEW. I was also surprised to learn that control references are not like data pointers, or object pointers, in this case. Thanks for pointing out this error in thinking. This knowledge is sure to help me in future projects. I have noticed that most of the NI code for interfacing with registers and managing memory have a dll at the core. The function details are handled outside of the LabVIEW development toolbox, precompiled and self contained. It sounds to me that the only way to efficiently and effectively get control over the memory is to write the code block (in c or something) to manage the data the old fashioned way. It appears, as I have anxiously suspected, there's no substitute for knowing how to manage memory at the lowest level. Since I am a slave to LV, I have only done this on rare occasions where the hardware I was controlling came with only a c app dev kit. I just deal with what NI gives me. :)
how do i show a 1D array on an xy graph?
I want to have program control over my graphs Y axis scaling and min/max values. - I cant do this with graph or chart displays, but should apparently be able to do it with an XYgraph display. My input data is a 1D numeric array, (voltage measurements taken by a piece of laboratory kit at regular time intervals) and I want to control the Y-axis values so that the graph shows the most important part of the data, zoomed right in, so autoscale is of no use to me. Is there a function I can use on my 1D array to connect to the X axis of the XYgraph so that the Y axis is my varying voltage and the Yaxis is just the number of the sample? The data reaches me as an ascii text file with one item per line and I've transformed it into a numeric array. I must say I'm very new to this labview stuff and find it amazingly powerful but difficult to do anything without a previous example to plunder. I'm running Labview 7.0 express full developer version. Hope you can help me.
Re: Labview 7.1 released 5/4/2004
At 9:44 -0700 5/6/04, andrew johnson wrote: Is there yet a list of labview bug fixes that 7.1 incorporates? AFAIK, it is NI policy NOT to distribute a list of bug fixes. I have been variously informed this either for competitive reasons or it avoids confusing the users. Standard disclaimer, if you don't like these reasons or want another reason, contact NI and your sales engineer. -Scott
Re: Labview 7.1 released 5/4/2004
AFAIK, it is NI policy NOT to distribute a list of bug fixes. I have been variously informed this either for competitive reasons or it avoids confusing the users. Too bad, having a comprehensive list of bug fixe(s) (-joke here)would have been very nice. I guesswe will have to compile that list ourself (as usual) :( PJMScott Hannahs [EMAIL PROTECTED] wrote: At 9:44 -0700 5/6/04, andrew johnson wrote:Is there yet a list of labview bug fixes that 7.1 incorporates?AFAIK, it is NI policy NOT to distribute a list of bug fixes. I have been variously informed this either for competitive reasons or it avoids confusing the users.Standard disclaimer, if you don't like these reasons or want another reason, contact NI and your sales engineer.-Scott Do you Yahoo!?Win a $20,000 Career Makeover at Yahoo! HotJobs
Re: MODBUS
Oz, We are currently developing a LabVIEW instrument driver for the Eurotherm 2000 and 3000 series controllers. I expect this driver to be completed in the next few months. If you would like to be notified when this driver is completed, then submit an Instrument Driver request at http://zone.ni.com/idnet97.nsf/instrumentdriverrequest/ or you can just check back with our Instrument Driver Network (ni.com/idnet). In the short term, you may be able to use or modify some LabVIEW code that Eurotherm has on their website: LabVIEW interface to Eurotherm OPC server: http://www.eurotherm.com/products/controllers/2400_doc.htm LabVIEW VIs using modbus to communicate with Eurotherm controllers: http://www.eurotherm.com/comms/instcom.htm Regards, Jason Hobbs you wrote: I am looking forward to command a MODBUS device (Eurotherm 2208e Temperature Controller) with LabVIEW. What is it possible to do with such a device ? Do you have infos, advices, ressources about this, or MODBUS handling in general ? oz
Re: Labview 7.1 released 5/4/2004
Andrew Johnson wrote: what, if anything, has changed in DSC? There is a new version of DSC as well, 7.1, but there doesn't seem to be a listing of new or modified features. LabVIEW-DSC 7.1 Release Notes has the new/modified features: http://www.ni.com/pdf/manuals/322955d.pdf Regards, Khalid Ansari
Re: how to get second instance of exe file in W2k
Hi Pawel, Check out the link below. Yes, I think making the vi re-entrant is the right direction.. Although the link below was for TestStand, it may shed a light to a solution.. http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101RPAGEID=135HOID=506500080012BCUCATEGORY_0=_49_%24_6_UCATEGORY_S=0
teststand pxi instrument id between embedded and extended chassis
I would like to establish reuse of TestStand LabVIEW Steps between an embedded controller PXI chassis and an extended PXI chassis (that uses a MXI 3). How can I best manage and programably establish instrument or device identification to the VI's without hardcoding the different device id's into the test steps. Is there a feature of MAX that would allow a common naming convention or can I programmably get each card's identification and use global variables? I am lost as to what is the best strategy in dealing with varying instrument identification and wanting to reuse VI's.
page fault in nipalk.sys when writing large file , system crashes
When reading from VXI 2211 and writing to a file the system crashes with a page fault error in nipalk.sys. I tried loading new drivers for VISA, VXI, even DAQ which I don't use. Where does nipalk.sys come from??
Re: how to get second instance of exe file in W2k
Hi For a quick and dirty solution (and If you want to run only a few instances), making a copy of your exe might work. PJM
Re: how do i show a 1D array on an xy graph?
No need for an XY graph in this case; just wire the array to a graph and if you want to zoom in on something programmatically you can control the min and max, scaling and pretty much everything else using a property node (just right-click on the graph, select create property node and then click on it to select which property to set, you can expand it to read/write multiple properties with the same node, or create multiple property nodes. The Y axis will by default just show the array index number unless you set the X0 and delta X properties.
RE: LV for Linux and TCP/IP
Yes, LV for Linux has all the TCP/IP functions. VISA Serial works fine too, though the VISA refnum control has the same slowness seen on other platforms (per the recent info-labview thread). Jason Dunham SF Industrial Software, Inc. [EMAIL PROTECTED] -Original Message- From: Bookwalter, Dan [mailto:[EMAIL PROTECTED] Sent: Thursday, May 06, 2004 7:20 AM To: [EMAIL PROTECTED] Subject: LV for Linux and TCP/IP Not having seen the Linux version, so this is probably a dumb question , but ,does it have the same TCP/IP support as the other platforms ?? any other things I need to be aware of thanks Dan Bookwalter N8DCJ Hi-Stat a Stoneridge Co. 345 South Mill St. Lexington, Ohio 44904 (419) 884-1219 Phone (419) 884-4172 Direct (419) 884-4195 Fax [EMAIL PROTECTED] _ This electronic mail transmission contains confidential information intended only for the person(s) named. Any use, distribution, copying or disclosure by any other person is strictly prohibited. If you received this transmission in error, please send an electronic mail message to [EMAIL PROTECTED]
Re: Wanted: DIO board with programmable output voltage levels
Hi Greg, I was in a similar boat as you are in... Check out this link: http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101RPAGEID=135HOID=5065000800E1A4UCATEGORY_0=_31_%24_12_UCATEGORY_S=0 I did find a company that does a 3.3V board: Access IO Products. If you want various voltage levels, you may be stuck with a DAQ board... However, check with NI Customer Service... I think they were or are to release a newer DIO board which supports multiple voltages. Regards, JLV
Detrmine all combinations of string arrays
I have an unknown number of 1D string arrays (until runtime). I need to generate a string for every combination using one element at a time from each array. For example, if at runtime there are two arrays with A,B and X,Y then I need to generate AX,AY,BX, and BY. At runtime there could easily be 10 arrays with 6 elements each, so there are a lot of combinations. The 1D arrays are not necessarily the same length.
How can I run serial operations parallel?
I am creating two message simulators, one is serial and one is Ethernet. The Ethernet is working fine but, the serial is not. I am formating a message and writing it to the port while it is also reading status coming in. That part is working fine but, I have to also send out a heartbeat every so often and cannot because it cannot do both loops in parallel. I am not sure why it is working fine on my Ethernet and not on the serial. Thank you, Molly
ODE Cash Karp Speed
Title: Message I'm using the ODE Cash Karp for some simulation routines and I'm wishing/hoping I can get this system to run faster (P4 1.6; 1gig ram; WinXP, LabVIEW 7.0). Currently, to simulate 1 sec worth of data takes ~80 sec. I've tried some of the other ODE solvers and they don't simulate my system well so if I stay with LabVIEW, I'm stuck with the Cash Karp. Does anyone know if the ODE routines have been optimized with the new version of 7.1? Does anyone out there have knowledge if a MatLab (or MathCad) routine would perform this calculation quicker? I have done the "simplify the equation" to see if the routine runs any faster, but that had no effect. time: 0 to 0.0167 step: 0.01 variables: a,b,c,d,e xo: 923.52, 908.23, 807.27, 808.03, 806.88 ((1.2500E+2)-(a-c)*(1.0767E+0))/(2.4056E-1) ((1.2500E+2)-(b-c)*(1.2399E+0))/(6.0162E-1) ((a-c)*(1.0767E+0)+(b-e)*(1.2399E+0)-(c-d)*(4.7079E+3))/(4.4475E-3)((c-d)*(4.7079E+3)-(d-e)*(4.7193E+3))/(3.3138E-3) ((d-e)*(4.7193E+3)-(e)*(3.0967E-1))/(2.4527E-3) === The information in this email is confidential, and is intended solely for the addressee(s). Access to this email by anyone else is unauthorized and therefore prohibited. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited and may be unlawful. ===
Can I interface RS-232 with USB on a Mac?
I have a light measurement device that has an RS-232 output. I'm running Labview 7.0 on a Mac with a data acquisition board. Is it possible to read the RS-232 port via the USB interface on the mac? I know there are cables to convert an RS-232 plug to USB, but the mac does not use the VISA drivers that PCs do, and I assume that the USB/VISA vi in Labview won't work on a mac.
Re: solve non linear complex-variable equations
use the formula node to enter your equation.
Re: How can I run serial operations parallel?
They are two different vi's, sorry should have explained better.
Re: Using third party Strain Amplfiers, feeding DC output to NI...
Hello, Have you taken a look at the Convert Strain Gauge Reading VI that ships with LabVIEW? You could still use an amplifier and then divide the input voltage by the gain and then feed the output to this conversion VI. The VI can be found by searching you functions palette for the word =91strain=92. Just let us know if this will help out! -Justin T. National Instruments Also, you can change the type of this VI by right clicking and selecting Select Type.
Re: How can I run serial operations parallel?
Look at what this guy wrote: http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101RPAGEID=135HOID=506500080091D2USEARCHCONTEXT_CATEGORY_0=_49_%24_6_USEARCHCONTEXT_CATEGORY_S=0UCATEGORY_0=_49_%24_6_UCATEGORY_S=0 They recommend making your vi re-entrant.
Re: Simulation Interface Toolkit Connection Manager - Won't Link
Ben, Make sure you have admin permission on the machine running the Connection Manager. Or more specifically permission to write to the project directory under LabVIEW install (default location: C:\Program Files\National Instruments\LabVIEW 7.0\project\). The reason is that the SIT Connection Manager attempts to create a temp file in the directory for model tree and fails if permission is denied. Thanks Sumit Garg LabVIEW RD
Re: Windows XP Embedded
I looked for Embedded Linux in Power Programming and found no mention, but did find 3 chapters in Johnson's Graphical Programming, 3rd Ed. Does Labviewguru still advise going Linux over XP embedded? Even for those of us who are Linux virgins? I have to configure a PC104 system to be a USB or TCPIP data server, and find myself wondering which way to go...Windows or Linux.
SUMMARY: MODBUS Automationdirect GS2 drives?
I received some very nice answers from the following wireworkers: Khalid Ansari Paul Sullivan Eric Scott == My own lessons learned: MODBUS is not like some serial protocols that are essentially a simple language for communicating with a controller. MODBUS is less of language and more a way to set parameters of a controller directly (which includes RUN and STOP). With MODBUS you send a sequence of numbers that starts the serial transmission, IDs the device (MODBUS can communicate with multiple devices on a serial network a la RS485), indicates whether the command is a read or a write, IDs the memory location, for write ops sends the new values, sends a redundancy check (LRC or CRC depending), and terminates the transmission. The syntax of a read op is slightly different. It will be necessary to have documentation of the controller memory addresses. You cannot even guess what to send otherwise (with a ANSI x3.28 you might actually strike a up a conversation on the fly, but not with MODBUS). I use MODBUS ASCII (as opposed to MODBUS RTU the standard when communicating between a PLC and a MODBUS device). The redundancy check is LRC, longitudinal redundancy check. This was foreign to me and is a little tricky, you sum up the hex representation of the sequence to be sent, calculate the 2s compliment of that, discard the leading Fs saving the last 2 digits, and adding them to the end of the sequence before terminating with a CR and LF. In LV the 2s compliment is very easy to compute - the hex integer is wired through a NOT function, that result is added to 1, and then the leading Fs are subtracted. I didn't stick my head into the CRC method. While there are apparently some pre-existing VI's and other helpful routines out there (some free some costly), for simple control such as I needed a simple VISA communication session is all that is necessary. Using VISA I can turn the spin and stop the drive and change the speed from a VI. If necessary I could also configure the drive in all its gory detail, but this can be done by other means and is not done often so I doubt a VI wil ever be written by me to do that. It is worth noting that his communication is much faster (orders of magnitude) than I had seen with other serial com methods, part of that is baud rate but not all. The contoller on the receiving end doesn't have to do much interpreting of the sequence it is sent, and the overhead at that end must be low. Please feel free to contact me at [EMAIL PROTECTED] if you think I can be helpful to you. If I can't spare the time I will tell you so. == From Khalid Ansari: Modbus is a simple, open communication protocol originally created by Modicon/Schneider Electric. Though it has been widely used by others and considered open for several years, only last week did they give up their copyrights for it. The Modbus protocol can be found here: http://www.modicon.com/techpubs/toc7.html Modbus-IDA now maintains it: www.modbus.org There are several options for communicating to Modbus devices from LabVIEW: 1. Write your own driver - Modbus is a simple protocol so you can write a driver, or part of it that you need in LabVIEW. You'll use serial/VISA as with any other serial driver (note that there's a Modbus-TCP protocol as well). The protocol specification above should give you an idea of what's involved. In addition, C/C++ and VisualBasic APIs are also available. 2. Use existing LabVIEW VIs There are several VIs available out there (none from NI though; some are from Alliance members). Some of these are free: http://www.air.nl/nlibrary/modbus_vi.html http://www.users.globalnet.co.uk/~pseudo/downloads.html (see Eurotherm; uses Modbus) http://www.softwarewithrelish.com/specs/BusVIEW.html http://www.ewebsite.nl/eng/html/modbus.html http://www.saphir.fr/SAPHIRnet/API/ModBusVIEW/index.htm http://labview.citeng.com/pagesEN/products/modbus.aspx Etc... 3. Use an OPC Server - As Modbus is heavily used in Industrial Automation, there are several OPC Servers available for it, including one from NI: http://ni.com/opc/opcservers.htm Here you'll find a free one from Matrikon: http://www.matrikon.com/drivers/FreeDownloads.asp In LabVIEW, as you very likely know, to talk to an OPC Server, you would either use DataSocket, or use the DSC module which has built-in support for OPC, and is recommended over DataSocket especially when you have a bunch of IO points. 4. Use an ActiveX Server - There are ActiveX Servers available which talk Modbus. http://www.automatedsolutions.com/products/modbusrtu.asp A Google search returns a bunch for these. In your case, the turning of the motor, reading its speed, etc., really is writing and reading of the correct
RE: Keyence and LabView
Hello Gokul, If the control allows access to its registers, you can read the values and control all timing issues with your LabVIEW application. Simply read the registers when you want data or setup a separate loop to read the values at a specified rate. However, if directly reading the registers is not an option, having the PLC dump data over its serial port is a legitimate way to link the two together but there are some timing issues to consider. Here is an example using the procedure you are considering... I recently linked a LabVIEW data collection system with PLC data by simply having the PLC dump data to its serial port at designated times throughout the test. The LabVIEW application, which is actually running on a RT Field Point Module (cFP-2020), monitors the serial port and brings in the PLC data. It combines the PLC data with temperature measurements it is collecting and eventually passes all of the data to another external computer over Ethernet. We caused the PLC to control the overall collection rate by dumping data to the serial port each time a measurement is required. Hence, the PLC actually triggers or controls the data sampling rate. The PLC outputs an ASCII string (the measurement string) which contains several measurements, a time variable (number of secs since test start), and terminates with a CRLF. The output rate is about 10 measurement strings per second. I found a baud rate of 17200 worked well. Note - if the PLC is going to be outputting data faster than 10 Hz or your measurement string is long, you will need to increase the baud rate (transmission rate) or find another alternative. Additionally, if timing is critical, you will also need to ensure that you are keeping-up with the instrument. In my case, the PLC dumps pressure and flow measurements which are process critical and that need to be correlated to the temperature measurements. Therefore, it is necessary to ensure that all of the measurements (pressure, flow, temp0, temp1, temp2) are correlated in time (within reason). However, it is fine, for this application, to have temperature updates collected at about once per second (1 Hz) although the pressure and flow are collected at 10 Hz (during the first five minutes of the test and then at 1 Hz during the remaining 15 minutes). By having the PLC control the timing, it enabled the LabVIEW code to simply monitor the port, grab the completed measurement sting, combine the other measurement info, and publish the combined string to an external program and write the sting to disk. In my opinion, the programming method, using serial communication with the PLC, should be very similar to what you did with the temperature controllers although, you may have had to request the measurement string by writing a command to the temp controller and then reading its response. I would suggest avoiding this, simply force the PLC to write and then monitor the port for new info. Best regards, Guy R. Hughes Controlink Systems, LLC -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gokul Sent: Thursday, May 06, 2004 8:49 AM To: [EMAIL PROTECTED] Subject: Keyence and LabView Hi, I am trying to acquire data using LabView from KV16AR PLCs data memory. A program in PLC is going to dump data in PLCs data memory and LabView is going to simultaneously acquire it. The transmission is over serial port and I have done serial port acquisition before with temperature controllers. I felt both type of acquisition are the same...but still wanted to ask... Is this any different? ... I have never worked with PLCs before..thats why wanted to know. TIA Gokul __ Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs http://hotjobs.sweepstakes.yahoo.com/careermakeover
Re: How do I distribute lbb files (created from a CVI .fp file)
Talking in terms of the LabVIEW distribution, I would recommend zipping the .llb, .mnu files, and .dll in a .zip file with a folder path of driver prefix. The LabVIEW user can then extract this zip file to thier LabVIEW\instr.lib\driver prefix folder. This should minimize any issues with working on different OS's or different machines. Also, it is important that your LabVIEW wrapper VIs have only a relative path to the dll stored in the Call Library Node. Basically, this will have LabVIEW look in all predefined paths on the computer for the dll. One of these paths is the current directory. Therefore, the VIs should have no problem linking to the dll if the dll is in the same directory as the VI (or if the dll is in any other defined system path like the VXIpnp directory). The CVI run time engine should be installed with LabVIEW. It is also installed with VISA, so if you wrote your driver with VISA this should not be an issue. Let me know if you have any other questions regarding this approach. I would also like to include your drivers on IDNet when you are finished so don't forget to submit them. Hobbs
Re: Do I need to set something when using Dynamic VIs to pass control
I'm using Set/Get Control Value Method. I did set the application builder to not remove Front Panel. If you don't do this you get a missing resource error when you run the application. I did find my error. On the one that does not work I was accedently closeing the reference prior to Calling the sub that requested the control value. Once I fixed this it worked fine.. Thanks for your help. If you are aware of any other tricks/tips when using VI server I would be greatful, I've only just started figuring out how to use these.
Re: Windows XP Embedded
Good advice also... I should check it out as well... I don't know about making an XP guy out of me.. :o)
Re: Windows XP Embedded
Good to see you back Labviewguru. I'd give you 10*, but it's limited to 4... The trend is toward Linux. I would stay away from XP = Xtra Problematic... If it has to be Windows-based, I'd stick to something more stable like Win-2K. My 2cents...
Re: Windows XP Embedded
oops sorry, commented on the wrong thread... but you get the idea ;o)
[W] Built application asking for CD
I have a built application that runs from a CD, acting as a software installer, placing the required files for a larger application, making Registry entries, and talking to a SQL Server database. LVRT is alongside the executable, it runs from the CD just fine. At one point in the install process, the application may prompt the user for a second CD. In this case, they need to eject the installer CD and insert the second. At this point the installer application fails... Is there a way, maybe some kind of fancy Windoze hack, to keep the installer in Memory after its CD has been ejected, short of running my installer from the user's hard drive? -- - Andrew Johnson - WireWorks West
Re: Detrmine all combinations of string arrays
This would work if I knew how many 1D arrays I have. If there were three 1D arrays at runtime, I would have no way of adding a third ForLoop. Then the next time the program calls this vi there might be 9 1D arrays and the time after that there might be 4, etc.
Re: How to add plot areas?
I don't understand how to use subPanels or dynamically loaded panels that are edited using the legend properties when idle and then shown to the user. Can you tell me more what kind of legend properties can be used to control the display number of the plot areas in stack plots? After looking into it, you can change a stacked chart's plot areas by setting the LegendPlots Shown. One snag is that you will have to do this to your VI while it is idle since it is really a pretty major edit. So, you can do this by dynamically loading and calling the VI. When you want to change the number of plot areas, you will need to exit the dynamically called VI, modify it, and rerun it. You can do this pretty seamlessly, and if you use a subPanel control, it can even be a part of the panel and UI. The snag I didn't expect was to find that it works for clusters, but not for 2D arrays. Greg McKaskle
Re: memory goes crazy when calling a sub-vi
Thanks for your insight, Greg. I was surprised to learn that global references each contain a copy of the data. This implies that each time data is written to a global, each copy of that global must get updated. The process sounds amazingly inefficient. Now I know why globals are taboo in LabVIEW. The readers don't get a new copy until the next time they read. The deal is that the global could be updated once a second with various readers needing to hold the value they read for who knows how long. Since there could be three readers needing to hold a different value for ten seconds, that pretty much means there needs to be one global and one per reader. I was also surprised to learn that control references are not like data pointers, or object pointers, in this case. Thanks for pointing out this error in thinking. This knowledge is sure to help me in future projects. I have noticed that most of the NI code for interfacing with registers and managing memory have a dll at the core. The function details are handled outside of the LabVIEW development toolbox, precompiled and self contained. It sounds to me that the only way to efficiently and effectively get control over the memory is to write the code block (in c or something) to manage the data the old fashioned way. It appears, as I have anxiously suspected, there's no substitute for knowing how to manage memory at the lowest level. Each tool has its advantage, and C's advantage is that anything goes with memory. Integers, pointers to A, pointers to B, its all the same. The downside is that this lack of safeguards means lots of debugging and head scratching. LV can't do everything as efficiently as C can, but in the common case, you get the low level stuff written in C, accessable and usable from LV so that you get the best of both. This is true of most/all good libraries. Greg McKaskle
Re: LabVIEW and USB to 1-wire (DS2490)
i am interested in reading several ds1821 in a similar fashion if possible could you provide the vi that does the 1-wire communication
Re: change display size of plot area
Simple way would be to place a transparent boolean button over each graph so that you can use the button event to pop up a big graph and put it away. There are other ways as well. If this doesn't work for you, comment.
RE: More then one active Vi with open Front panel?
Well I'm not arguing the idea of eliminating multiple loops. I definitly use the concept in every app I write. I'm stating that parallel processes shouldn't necessarily be tied to the main user interface VI by being contained on the diagram of that VI. Yes, it is comforting to see your code in the main menu but it is easier for me to debug parallel code when it is not linked to a caller. Sometimes I need to abort a a parallel process and restart it. The caller remains unnafected. I usually launch several dynamic VI's for hardware communication and it is more convenient to keep my main app running while I tweak things here and there. Also, certain concepts like cloning VI's cannot be achieved without dynamic calls (Gerd, you might want to consider this in your case, multiple views of the data). Let's not forget that this thread is trying to solve a problem of launching a VI so it is non-blocking. I really don't see the big deal with dynamic calls. I guess the phrase VI Server conjurs-up images of complex code to perform a simple task. I think the parallel loop ideas with occurences and such sound more involved to me (even though I've used them myself). Honestly, is this code scary?: http://lavausergroup.org/labviewimages/dynamicrun.gif :-) That's really all you need. Michael Aivaliotis Michael Aivaliotis [EMAIL PROTECTED] wrote: My problem is I enjoy discussions on methodology and implementation techniques too much. In our local LabVIEW user group meetings we sometimes (actualy always) discuss (actually argue) programming style. The issue lately is: single loop good, multiple loops bad. Are you kidding? Most complex programs I write never would fullfill user expectations without multiple loops in the main VI. You don't want to block alarm handling or built in TCP/IP server handling for remote control because a user wants to check the configuration settings. Of course making sure the local user and the remote application are properly locking out each other is another thing, but quite some remote commands do not need local lockout to be performed at all.
Re: synchronising cluster graph problem
Turn off run with multiple threads option. You are probably seeing the effects of user interface thread not getting any time to update the graph. Also set front panel smooth updates. This may not yield the performance that you want but it may be the answer to your question.
Re: teststand pxi instrument id between embedded and extended chassis
the DAQ function on the pallet that will return the device name for each device number. use this to create an abstraction manager to reference named devices. Keep going with the approach of reuse without hardcoding info. It will be worth it.
RE: Labview 7.1 released 5/4/2004
Well, I've ammended the LAVA LabVIEW Buglist to allow for reporting of LV7.1 Bugs http://forums.lavausergroup.org/index.php?s=44217085e547ee8f9c83d340ab96dd46showforum=17. I guess we are only aware of bugs that are reported to this LAVA forums list. If anyone knows of existing LV7 bugs that still exist then you can post them to this LV7.1 forum. If 7.0 bugs have been fixed then just add a reply to the 7.0 forum indicating if it is fixed or not in 7.1. Another buglist is here: http://hannahsmac.magnet.fsu.edu/labview/buglist70.html If any of these are reproducable in 7.1 then you should post these to the LAVA 7.1 buglist forum as well. Thank You Michael Aivaliotis -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of PJ M Sent: Thursday, May 06, 2004 1:55 PM To: Scott Hannahs Cc: LABVIEW INFO Subject: Re: Labview 7.1 released 5/4/2004 AFAIK, it is NI policy NOT to distribute a list of bug fixes. I have been variously informed this either for competitive reasons or it avoids confusing the users. Too bad, having a comprehensive list of bug fixe(s) (-joke here) would have been very nice. I guess we will have to compile that list ourself (as usual) :( PJM Scott Hannahs [EMAIL PROTECTED] wrote: At 9:44 -0700 5/6/04, andrew johnson wrote: Is there yet a list of labview bug fixes that 7.1 incorporates? AFAIK, it is NI policy NOT to distribute a list of bug fixes. I have been variously informed this either for competitive reasons or it avoids confusing the users. Standard disclaimer, if you don't like these reasons or want another reason, contact NI and your sales engineer. -Scott Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs
Re: i want to grab a image using web camera how do i do it with labview
vicky; Check the followings: a href=http://www.cs.unc.edu/~parente/#downloads;LabVIEW webcam library/a by Peter Parente a href=http://www.hytekautomation.com/Products/IVision.html;IVision LabVIEW Toolkit/a by HYtek Automation. a href=http://www.inventeering.com/;INVENTvisionVFW/a by Inventeering (contact them - website under remodelation) a href=http://www.info-labview.org/the-archives/vi/lv6/;LabVIEW drivers for the Logitech QuickCam/a by Christopher Relf (available via Info-LabVIEW.com. File is bLogitech QuickCam LabVIEW Driver v1.0.zip/b) a href=http://www.info-labview.org/the-archives/vi/lv4/;Snappy/a by Eric Eilebrecht (available via Info-LabVIEW.com. File is lv_vfw.zip) Regards; Enrique Vargas www.visecurity.com