Rick,
I have only 2 minor suggestions:
1. In your initialize VI, rather than calling a separate instance of FP Create Tag.vi for each channel, I would have created a 2-D array of device names and item names and used the VI in a for loop with auto-indexing. That would make creating and modifying the program easier.
2. In your main VI, place the case structure outside (rather than inside) of the while loop.
Once again, these suggestions are not critical, just minor details. Overall, you've done a good job of coding.