LabVIEW

cancel
Showing results forΒ 
Search instead forΒ 
Did you mean:Β 

Thoughts about "my" architecture concept

Hello!

 

I'm currently working on the concept for a new test stand in our company. The test stand will later perform various long-term tests on a whole range of devices. For the first time the test stand shall be controlled only via a web interface without a classical user interface. At the moment I'm busy thinking about a suitable concept for this web interface (and later also for the test stand). After extensive research and testing, we agreed internally to use the LabVIEW NXG Web Module for this purpose, since we don't have any real web developers with us and the Web Module already works really well.

 

The architecture behind the Web Module should be suitable so that the web interface is comfortable to use, but also quick and easy to extend and maintain. Since I am still relatively new to the LabVIEW world I have spent several weeks to get familiar with the different design patterns, tools and libraries and I think I have found a favorite for our project.

 

Based on the RIO Developer Essentials Guide for Academia from NI I found this really nice mix of using both QMH (Queued Message Handler) and QSM (Queued State Machine) to fulfill my requirements. I changed some small things here and there and added a producer/ consumer loop for the whole UI handling and right now I think I'm ready to go.

 

But before I start putting more work into it I really would like to her some thoughts about the concept and what you like/ dislike or what you might have done different than I did. It is still a big learning curve for me and my first real project in LabVIEW so have some mercy on me πŸ™‚

 

Right now the frontend itself is not really existing in this project only a view controls for testing purposes. The website will contain on main page with a tab control for the main "pages" of the website (like overview, test schedule, configuration, ... ). There is a lot of data to be exchanged so I decided to use Web Sockets for the communication between the webserver and the website to avoid any polling. I hope these information are enough to get a feeling of what I want to do. There are more explainations inside the VI's πŸ™‚

 

Best regards
Jens

 

 

 

0 Kudos
Message 1 of 3
(2,505 Views)

Hi Jens_S,

 

The Queued Message Handler is a good place to start. I would start there and add new processes as needed. Do you have an architecture diagram or similar to explain your application?

 

Also, depending on the type/amount of data you need to exchange, you might not need much. You could use the SystemLink Tag API to share data (included with the NXG Web Module):

 

Transferring Data Using Tags

https://www.ni.com/documentation/en/labview-web-module/latest/manual/transfer-tags/

 

Thanks,

Frank

Message 2 of 3
(2,397 Views)

Hi and thanks for your response!

 

I attached a picture with a very basic overview of the architecture I've planned so far. As you can see almost everything is gonna use a https connection to the test stand. Nonetheless I like the idea of using the SystemLink Tag API but I guess this would require a LV runtime engine on the web server? Right now we would love to use a simple web server for the web interface so we can use the Gitlab runner to build the website with the NXG CLI on a build machine and then publish it onto the web server. At least that's the plan for now πŸ™‚

 

With a simple website this would be just copy/ paste but with a LV runtime it's gonna get a lot more tricky. I'm not sure if the initial time I might save by using the Tags is then causing me a lot more work in the long therm. But maybe I'm wrong ...

0 Kudos
Message 3 of 3
(2,341 Views)