03-26-2019 09:05 AM
03-26-2019 10:46 AM
You might want to look into the Distributed Control and Automation Framework (DCAF). By default the modules aren't really running asynchronously but the framework has a configuration editor meant for users to easily integrate user developed plugins so, if anything, you might get some inspiration from the framework.
https://github.com/LabVIEW-DCAF/Documentation
03-26-2019 11:31 AM
On the LabVIEW Tools Network you should look at DQMH, Aloha, and my own "Messenger Library".
03-26-2019 03:50 PM
From what you describe, it seems like actor framework would definitely be suitable for what you want. Just make sure you look into "zero coupling" for your messages to get what you are wanting about being able to plug in different modules without re-programming.
03-29-2019 06:56 AM
Thank you very much, you helped me a lot with your suggestions.
03-29-2019 09:13 AM - edited 03-29-2019 09:24 AM
@philipp_htr wrote:
The developed software architecture should be processed into a framework structure in which different required software modules can be generically integrated (by the user, not the programmer) without additional programming effort. Different modules are needed for different tasks (each module stands for a measuring device). The modules must be able to communicate with each other, including sending and processing different message data.
So what you really want is a program that allows the end user to select what tests they want to perform or not and set the order they are performed?
03-29-2019 09:40 AM
That's almost it. Let's say we have 7 measuring devices overall, so we have 7 different software modules. Those modules are all stored in one directory. Now for example for the first test setup all 7 modules are required, but for the second test setup only 3 of them. So the user should have the possibility to select the actually needed modules..
The testing order shall be realized through a kind of a "Sequencer" module, but this is a task for the future and not for my masterthesis.
03-29-2019 09:49 AM - edited 03-29-2019 09:54 AM
@philipp_htr wrote:
That's almost it. Let's say we have 7 measuring devices overall, so we have 7 different software modules. Those modules are all stored in one directory. Now for example for the first test setup all 7 modules are required, but for the second test setup only 3 of them. So the user should have the possibility to select the actually needed modules..
The testing order shall be realized through a kind of a "Sequencer" module, but this is a task for the future and not for my masterthesis.
You are getting off into the weeds worrying about "we have 7 measuring devices overall, so we have 7 different software modules. Those modules are all stored in one directory". All of that is superfluous
You should have ONE PROGRAM where the end user selects the tests that are needed to perform. All of your "software modules" are in that one program, but the program only runs the modules needed to perform the tests the user selects.
Sounds like a simple Queued State Machine to me.
03-29-2019 10:14 AM - edited 03-29-2019 10:27 AM
Here's an example I did a long time ago.
Three different tests can be performed, each test has several steps, some are the same for all tests some not
Depending on the test selected the queue is loaded with the test steps in the proper order. All of the "software modules" to run all of the test equipment is integrated into the program.
Line Efficiency and Regulation selected
Dropout Tests selected
Inverter Efficiency and Regulation selected
03-29-2019 10:23 AM
@RTSLVU wrote:
All of the "software modules" to run all of the test equipment is integrated into the program.
Maybe I have misunderstood what you are trying to say here but there still might be a benefit to being able to load these steps as plugins (then again there might not). It will likely be easier to implement your suggestion at first but if OP is expecting many new steps to need to be created, if they are expecting their users to implement these steps, and if they are distributing this to many labs with little overlap in step requirements it could be beneficial to create templates which the user can create and have their application load dynamically.
Of course, we don't really know all of OPs requirements so this is all speculation.