I recently inherited an ugly VI that I am just now becoming familiar with. The tests I am trying to run are approximately 25 minutes long, but I keep getting a check buffer issue "error 70137". I cannot figure out how to fix this problem, nor do I know exactly what it means. Could anybody offer some guidance?
In the attached VI, im running 1 cycle @ 6 percent strain, with a relaxation period of 20 minutes, and then 10 oscillation cycles at varying frequencies.
Ugly is a mild word for that!
I do not have the Motion toolkit and apparently the error comes from one of those VIs. Try to narrow it down to a specific subVI. The error message should give an idea of the source of the error. Since the error handlers are the last VIs to run, it is difficult to tell when the error first occurs. I would place a bunch of error out indicators at various places in the code near where you suspect the error source. It may also be helpful to place indicators on other data lines near that code to see what is going on. Probes may also be used.
As far as the code itself, it violates almost all the good LabVIEW coding guidelines.
1. Having multiple event structures is almost always a bad idea. Having the same event in both is very bad. Having an event for a control with no label works, but it is extremely difficult to tell what the event does. How would you ever figure it out if several controls had no labels?
2. Sequence structures disrupt dataflow and have many other problems. They are rarely needed. The stacked sequence structure has no place in LV programs.
3. Local variables are slow, make copies of the data, and may lead to race conditions. There is really only one situation where they are appropriate and that does not appear to occur in your program. Use wires.
4. A state machine is often a good alternative to code which was originally written using sequence structures.
5. A diagram should be no larger than one screen. Create subVIs to perform repeated tasks such as the code linked to Relax 1, 2, and 3.
6. The use of parallel loops to separate things like data acquisition, motion, and saving to file is good. Look at the Produce/Consumer templates and design patterns for examples.
Thanks for the response! Here is an honest question though: is it even worth trying to fix up this VI or should I have a professional build one? I am not capable of building something this complicated, nor can I figure out any issues that arise.
Also, I believe the error is coming directly from the "Check Buffer" terminal. I just am not sure what exactly the buffer is.
Thanks for the response chembo!
the link was very helpful, but left me slightly confused. When it says, "To avoid the problem you must assign a different object number for either the buffer or the onboard program", how do I go about assigning a different object number? Is it as simple as an input for the configure or check buffer?
Getting professional help is probably a good idea. You may be able to fix that one error with help from the Forums, but the underlying structural problems with the VI will remain.
If you have a good definition of what the system is required to do, someone familiar with the Motion toolkit can probably write a program without too much difficulty. If the only system "specification" is that broken VI, then the reverse engineering to figure out what it was supposed to do will be a much bigger challenge.
Ask your local NI rep for the names of LV contractors in your area who could help.
I have reached out to a couple NI reps and alliance partners and haven't heard any response. Does it typically take around a week for them to contact you?
Regardless, a quick fix to this problem might be to just change the Buffer ID number. Does anyone know how to go about doing so?
Have you tried using the Configure Buffer VI?
Reply times can vary. It is hard to give an exact time for anyone to reply. Which NI reps are you reaching out to?
I contacted a technical sales rep in my home state (UT), and he referred me to an academic VI specialist in Salt Lake City. I'll post his name if mods say it is alright