LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

LabVIEW test sequence arquitecture

Hello everyone,

I am building a custom test sequencer in LabVIEW (no TestStand) and would like advice on the architecture.

Setup

  • LabVIEWusing a project (.lvproj) and a build specification for the .exe.
  • The main .exe scans a test_cases sub-folder next to it and lists all .vi files found.
  • Each selected VI is run in sequence with Open VI Reference (by path) and Call By Reference. This works fine.
  • I chose this design so I can drop new VIs into the folder without rebuilding the .exe.

Problem

  • The test case VIs call custom sub-VIs from the main project, which are not in the test_cases folder.
  • When loaded, the VI seems to try to recompile and fail because it cannot find these sub-VIs.
  • The VIs also use normal global variables. They seem to work, but I am not sure why, or whether the values are shared with the main program.

Questions

  1. What is the recommended architecture for dynamically loaded test cases that depend on shared project sub-VIs?
  2. Would packed project libraries (.lvlibp) or a source distribution still allow adding new test cases without rebuilding the .exe?
  3. Is there a better pattern than Open VI Reference and Call By Reference?
  4. How can I reliably share data between the main program and the test cases instead of using globals?

Thank you!

0 Kudos
Message 1 of 2
(123 Views)

@luisdclopes2 wrote:

Questions

  1. What is the recommended architecture for dynamically loaded test cases that depend on shared project sub-VIs?
  2. Would packed project libraries (.lvlibp) or a source distribution still allow adding new test cases without rebuilding the .exe?
  3. Is there a better pattern than Open VI Reference and Call By Reference?
  4. How can I reliably share data between the main program and the test cases instead of using globals?

1. You might want to look into using Actor Framework, Workers, or DQMH. I don't use them as I think they have more overhead than my systems require. But these will cover your other issues as well.

2. I use PPLs for my test framework. I don't use them for test cases, but for instrument drivers.

3. I like using Asynchronous Call By Reference to dynamically call VIs. This allows me to pass in parameters such as (see 4).

4. Queues and User Events. You can create the queues as needed and pass references into the dynamically called VI if you follow #3.



There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
0 Kudos
Message 2 of 2
(77 Views)