I've been programming in LabVIEW for a few years and have a dozen or so programs that I've written use for calibration of test items. However, as the number of inputs and outputs grows for some of my programs, my block diagrams suffer from a clear case of spaghetti code. I have a top level VI that calls about 20 sub-vis during different steps in the calibration process, and about 50 user inputs from the front panel. I've attached a few screenshots of the spaghetti code below. It's hard to see what is going on, but you get the general idea.
Whenever I need to modify the block diagram to add additional measurement steps or add more user inputs based on different test parameters, I end up spending a huge amount of time trying to create space by moving wires and SubVIs around to try to fit everything so it isn't 5 screens wide, and the wires paths are at least somewhat visible. Even as it is, I have 5 layer of stacked sequences to process everything.
I sure there is a better way. Do you all have some tips as to how to build more manageable block diagrams? For the data, instead of wiring everything separately should I just make a 50 input cluster typedef and then wire the cluster to all my VI and unbundle the inputs I need inside each SubVI? Should I instead make 5 clusters of 10 inputs each to make the number of inputs more manageable? Any other style suggestions? I know from reading the forums that many LabVIEW programmers discourage using stacked sequences and would instead prefer to use a Producer/Consumer design pattern with queues, but I don't really understand how to do that. I would like to learn these techniques eventually, and apply that to future programs, but I am not there yet. Also, rewriting my program to a new design pattern would likely take me a few weeks or so, which I can't spare. I am looking more for tips that I can implement in a day or two of modifying my block diagrams without having to redo everything from scratch.
Thanks. Here are a few screen shots of spaghetti code.