11-21-2005 03:09 PM
11-21-2005 04:28 PM
11-21-2005 04:56 PM
11-21-2005 05:53 PM
11-22-2005 08:51 AM
First of all, I should emphasize that I'm talking about not making any changes to the VI itself, only changes to the subVI that it's calling. In doing experiments with one VI and one subVI, I get the same explanation each time in the Current Changes field: "VI recompiled." and "SubVI call(s) modified.". Both are pretty generic.
Since no one has so far responded with a list, here is the start of a list:
1. Adding or deleting controls and/or indicators.
2. Changing the label and/or description of a control or indicator.
3. Adding a for loop to the block diagram.
Those are the obvious ones. There are others I could add to the list, but these don't seem to be very consistent. For example:
4. Connecting or disconnecting wires to controls or indicators.
5. Wiring a control to a case statement (a specific example of #4).
In regards to #5, yesterday, in my experimental VI (I've enclosed them), I wired the numeric control to a case statement, then saved the subVI. The calling VI then needed to be resaved. I disconnected the numeric control and wired up the string control to the case statement. Once I saved the subVI, the asterisk appeared on the calling VI. This was very consistent. Now, this morning, I do the same thing, but the calling VI doesn't need to be resaved.
So my question is, when does the calling VI decide it needs to be resaved? Since I haven't made any changes to the connector pane, or to the controls and indicators, why does the calling VI need to be resaved? Why should the calling VI care if a for loop is added to the subVI?
Since the driver I'm working on is called by 15 different drivers, which is called by 20 different application, all of which have been validated, I really don't want to have to revalidate all of these drivers and applications, simply because I went in and fixed a bug in a low-level driver. So any information that helps me to understand what triggers a calling VI to recompile due to a change in a subVI would be greatly appreciated.
Thanks!
Tom
11-22-2005 09:23 AM
11-22-2005 09:47 AM
11-22-2005 10:33 AM
And sometime it's easier to work around the rules
. I don't have rules as rigid as the medical industry but I have some to follow as well. I use TestStand and what I do is make all of my instrument and low level drivers DLLs. I can make a lot of changes to the VIs I build into DLLs without the high level test steps aware of it. Using the Call by Reference node can do much the same thing. Another thing I sometimes do is defer changes. I am required to do a new validation whenever new firmware for the product is released or there is an ECO to the product. For non-critical updates to the code, I will wait until one of these events happens and do everything at once.
I do understand your pain though. I once was contracted to write a program for a medical company. Each and every VI (about 200 in total) had to be separately validated starting at the lowest level and working my way up. I think the validation process took longer to do than writing and debugging the entire application. The company had a new employee just starting to learn LabVIEW. His first application was a huge VI with no subVIs at all. His reasoning was that he would only have to do a single validation step and could be done quicker. I wouldn't recomend this method.
11-22-2005 11:49 AM
11-22-2005 12:04 PM
tbob,
Do you? The contract job I mentioned was for Medtronic. My primary contacts were from Phoenix but I had to travel to Minnesota as well.