LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Tell us about your large LabVIEW applications!

Zura85:
Your post is offtopic here as was your other post elsewhere. Please start a new thread! 🙂
Message 81 of 105
(4,218 Views)

Hello all,

I developed a LabView application containing nearly 1000 VIs, but lot of them were generated with GOOP. In my oppinion it is really hard to develop such big application with LabView, because a lot of standard tools are missing. For example you don't have a project manager, so you have sometimes up 100 windows opened when you are developing.  For every function call you have at least two windows. In this way it is very hard to debug through all this windows. There is nothing like Object oriented classes, so you can't reuse your source code. Projects become very large, my was at least nearly 50 MB.

But even small application become big in memory usage. I now have the problem to realize a software on a cRio controller with 32 or 64 MB. Because LabView generates a lot of copies of big arrays automatically, I get into a problem with memory usage. So I am looking for a solution writing a dll in C that will handle my data.

Another problem that I had, when I developed a small application communicating with an OPC Server, was that the LabView VI where just communicating with an own OPC Client, which by its own made the communication to the Server. Unfortunately the LabView VIs didn't deliver the functions to Browse the OPC Server. So I had to write the communication to the OPC Server by my own in C code and integrate into LabView via DLL.

 Yes there are a lot of nice features in LabView, and maybe the name of the tools gives the hint where to use it. But who has ever had a really big procject with 10 or more man years developed in LabView? 

0 Kudos
Message 82 of 105
(4,189 Views)
I agree with the wiring and array copying comments made.  I too have used C-based DLL's to do the big work, LabView excells for quick and easy front ends.

What I'd like to see is an opening up of the LabView controls (beyond ActiveX).  If I want to create a new widget in a C-based graphics environment I can, I'd like to do the same with LabView, NI needs some kind of control toolkit.  As an example, I'd like to create a tree control that has non-string column values, booleans, floats, etcetera.  LabView will never anticipate all the controls a programmer might want, why not open it up to allow a programmer to create his own?

   ...Dan
0 Kudos
Message 83 of 105
(4,141 Views)
Hello,
 
My most recent application with labview was a fuel pump controller using pulse width modulation.  This actually applied to a UAV and had about 20 vi's.  The development of this project carried over from a previous dyno control GUI.  Using this along with help off of this message board and the NI phone and email support, the project was completed.  Now the testing begins and I am sure I will have more questions to come!
 
Earlier this year I helped develop a labview application that was the basis for the control of a Stewart platform which was used for spinal testing as a senior project.  This project had about 50 vi's.  The development of this project stemmed from the user manuals from the actuators that we had purchased.
 
Nick Statom
0 Kudos
Message 84 of 105
(4,125 Views)
I started programming with LabVIEW 5.0 in 1997.  I took a basic and advanced LabVIEW course.  My first application used two cameras, 14 pneumatic fingers, a DMM, GPIB programmable power supply, and one DAQ card, I think.  It was less than 50 VIs to test two oven controls simultaneously in under 24 seconds.  There was no requirement for revision control or documentation.

The largest application I support now is 176 VIs with very stringent documentation and revision control.  It tests airplane parts, and the test time is about 45 minutes.  I did not write the program, but when we received it from the vendor only about 25% of it actually worked as specified.  I spent almost 6 man-months making it work, so I guess it's "mine" now.  It would be simpler if the original programmer had used a state machine, but he called child processes with server functions instead.  It works now, but changes are rare because it literally takes hours or minutes to fix a problem, but days to revise the documentation.

Another application runs a 22-hour test in an environmental chamber.  Up to 6 test articles run simultaneously.  That application is 76 VIs, and includes VIs made exclusively to test other VIs.  It has a "simulate" feature that allows running the program about 30x faster for debug purposes while still retaining the "real time" DAQ.  Both of these applications are subject to Measurement System Analysis, a mathematical method of determining test effectiveness.

The program I'm developing now is over 80 VIs and counting.  It will run two endurance tests for almost a year.  The two test articles have to run simultaneously and independently, yet have a common interface with both automatic and manual modes.  The system architecture forces the test program to be that way.  There will be two very large test stands, one indoors, the other outside.  One stand has 8 tons of steel weights to move up and down.  The other has a 50Hp motor I will program to "simulate gravity."  I also built simulation into this program, because no hardware or test articles will be available for some time.

No, I'm not too worried about running that long with a Windows OS (2K).  I have another endurance application that's been running almost two years without a problem.  The only time the computer is turned off is when power fails.  LabVIEW programs can be very stable.  And also, "No, I don't have great affection for Microsoft either."

My first programs were relatively unstructured and not well documented.  However, you learn very quickly that you don't remember what you did or why.  Document those babies!

One very helpful book is Conway & Watts A Software Engineering Approach to LabVIEW.  State machines and messaging make programming large apps much simpler.  Large applications can cause huge problems if you don't spend the time up front to plan a reasonable system.  I have a background in circuits and mechancal design.  Software design is similar.  Know the overall function and break it up into smaller testable pieces.  Do that in your head first.

I'm impressed with the documentation capabilities built into LabVIEW.  It's obvious someone thought seriously about it.  I like the graphical approach.  I programmed in PASCAL and assembler, and structure in LabVIEW is so much easier to find than in a text language.  I don't have the professional versions, but have made utilities of my own to extract revision data from VIs and export hierarchies to EXCEL files.  I don't know if present-day advanced courses teach this aspect of programming, but they should.

LabVIEW started as a way to get measurement data into a computer, but it's now much more.  I have several applications that don't acquire any data at all.  They simply analyze or sort what's already there.  LabVIEW is a highly functional programming language that just happens to have DAQ roots.  Nothing to be ashamed of.
0 Kudos
Message 85 of 105
(6,589 Views)

What to say, what to say, what to say... How about:

"A poor workman blames his tools..."

Every one of the problems you mention comes from not LV, but from your inability to write usable code. Before trashing LV perhaps you should learn how to use it properly first. Or perhaps you should have your meds checked. Anyone who would make a statement concerning LV that "...you can't reuse your source code..." is clearly out of touch with reality.

BTW: The last C code I wrote to get around a short-coming in LV was in about 1993...

Mike...

PS: Don't bother flaming me in reply. Your opinions mean nothing and I won't be wasting time reading any more of them.

Message Edited by mikeporter on 09-08-2005 11:53 PM


Certified Professional Instructor
Certified LabVIEW Architect
LabVIEW Champion

"... after all, He's not a tame lion..."

For help with grief and grieving.
0 Kudos
Message 86 of 105
(4,012 Views)
I am having trouble with Labview DSC module. WHen I install it on my PC the windows shutdown HANGS. However if I uninstall all Labview software, my PC goes back to normal. Something is getting in the way of the power down of the computer. Has anyone had eny experience with this?

0 Kudos
Message 87 of 105
(3,989 Views)
Mikeporter,

here, here!

Lack of knowledge or lack of skill is no excuse for doing things wrong.

I've never encountered a LV app (small OR large) that "automatically" creates copies of large arrays.  Learn how to program properly and all these seemingly horrendous problems will simply go away.  And yes,  programming in LV IS DIFFERENT than programming in Pascal or C.  Different, but just as capable of up-scaling.  In fact I would argue that the visual programming style (once you've gotten used to it, which you perheps haven't yet) makes it EASIER to scale up a LV project.

As to not being able to reuse code, I have functions and code I've written years ago and I'm constantly dropping them into my current code.  If you program them properly, they will be reused.

Shane.
Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
0 Kudos
Message 88 of 105
(3,989 Views)

Sorry,

maybe you didn't understand what i meant to say. I didn't expect to hurt you personally, when I talked about LabView. I am just interested to find the best way to work with LabView. For me it is a tool and nothing else.

If you start the 'Show buffer allocation' you will find out where LabView makes copies of your data automatically. Maybe the buffers are reused. But I am astonished that my application needs 10 times more memory when I increase the array sizes, than I expected from the memory I neeed to store the pure data. On a PC platform  it is no problem, I increase the memory to 1GB an everything is fine. But unfortunately it is not possible to do that on a cRio platform there is no 1GB machine.

If I am a so bad software developer and you are so much better than me, take some time and explain it to me.

Otherwise if you don't want to see comments like mine on your disussion forum, i beg the administrator to delete my message. It was not my intention to pollute your side.

Hope you can except my excuse.

Best regards

 

 

0 Kudos
Message 89 of 105
(3,992 Views)
Brittner,

I don't feel hurt personally, it's simply a matter of expressing opinions.  Your opinion is valid (for yourself) as is everyone else's (for themselves).  As such there's no overlap, and also no reason to feel hurt.  Smiley Tongue  I didn't intend for my last post to be interpreted as me being annoyed.  I'm not.  It was meant as a simple statement of fact.

I don't have the "show buffer allocation" tool, because I'm working with LV 6.1.  There are some rules to wiring large data sets which can greatly avoid memory overhead.  When working with large arrays and basically just reading values, even from sub-sets of the original array (without modifying the array) make sure to wire the array through the structure or sub-vi you're doing the work in.  This will actually AVOID copies.  It seems counter-intuitive because you're passing the array to a sub-routine (which kind of suggests more copying, not less) but the LV compiler is "smart" enough to realise you're not chenging the array and passes it "Byref" instead of "Byval".  At least that's my understanding, but I don't have a formal programmer training, so I may be wrong.

LV is a different programming language (and indeed paradigm) so it DOES take time to learn the subtelties.  I can also understand that 10 copies of a 10MB array doesn't seem like a subtelty when it happens unexpectedly, but there's always a way to avoid it.  This is another reason why everyone says local and global variables are bad.  Each one generates a copy......

I don't take exception with your programming skill, quite the contrary.  If I think back at what I did with LV when I started I shudder and a shiver runs down my spine.  What I did take exception with (on a factual level, not a personal one) was your damnation of LV due to something which CAN be avoided when you know how.

I don't think your post is "polluting" anything.  It's important to have different views, but it's also important to be willing to learn something instead of quickly blaming something as being faulty.  A quick question as to why LV creates so many copies instead of claiming it simply "automatically" creates copied would have generated a totally different response, and would have most likely lead to several people taking time to explain things to you.  In this way, everyone wins.

On a side note, I don't accept apologies where they're simply not neccessary.  Don't worry.  I don't fly off the handle quite that easily.

Shane.

PS for some understanding of code optimization in LV, check out the past coding challenges.  They're a gold mine of speed optimizations.....

Message Edited by shoneill on 09-09-2005 03:12 PM

Message Edited by shoneill on 09-09-2005 03:14 PM

Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
0 Kudos
Message 90 of 105
(4,288 Views)