3

We have developed the PC control software of an industrial complex machine. The software runs on a PC on the machine, and it communicates with:

  • a PLC,
  • some National Instruments acquisition boards,
  • some devices with a RS485 and/or RS232 interface,
  • some other devices with an Ethernet / TCP connection We use a MySQL database (running on the same PC of the described software), a OPC (not UA) connection.

The software is about 400k lines of C code developed in LabWindows/CVI and it has been developed over the last 20 years. The same software runs on all the flavours of the machines, and it is customized for each machine via administration-level pages that allow to configure which modules are present on the machine and so on.

Now we have new requirements, mainly:

  • a beautiful modern graphical interface, possibly the best available in year 2020 to make the development of a connection with cloud technologies as fast as possible (main goals: backups and monitoring) The following requirements are also to be met:
  • multitouch interface, in order to e.g. zoom into beautiful charts
  • swipe between pages and easy navigation, creating a captivating user experience
  • awesome graphic components (charts, grids, sliders, popups and even customizable objects)
  • solid support for localization
  • integration of 3D models that graphically show the current behaviour of the machine. So we think that probably it's time to change our development software. If this will be our choice, we will also have to consider how to manage the transition: start at some point of the future with an all-new machine, or starting updating a module at a time (400k lines are a lot; maybe if possible some communication modules will be kept with the old software as long as possible and used e.g. via a DLL).

We are looking for some alternatives. Initial research pointed us to WPF, UWP and web technologies (HTML, Javascript, CSS and/or Javascript frameworks on top of a web server running on the same PC, that communicates with the main software via e.g. sockets (?), and in this case the main software would stick on LabWindows/CVI).

Do you suggest any tools/frameworks that meet the above requirements? Have you any suggestions of any kind? All are welcome. Thanks in advance.

2 Answers 2

1

Have a look at Qt. Your requirements seem to revolve a lot around a nice graphical user interface, and there is hardly anything better. It is based on C++, so you can still code all the backend communications and database stuff in C++ and use Qt for all the graphical interface.

1

Tricky question. The technologies which allow you to make user interfaces which are also multi-platform are:

  • Qt which is a commercial C++ based user interface framework
  • JavaScript/TypeScript - can make Electron applications that run on any platform
  • WPF is not cross-platform however commercial tools such as Avalonia XPF allow you to deploy a WPF application to Linux as well as Windows, macOS.

If you can run on Windows only I'd suggest WPF, but if you must be cross platform then chose one of the options above.

Next: how to make a beautiful user interface.

All the above can do this, however Qt will probably have the hardest learning curve and the longest time to develop as it's C++. WPF has the easiest learning curve. JavaScript + Electron is medium level difficult however developers are ubiquitous. There are also performance considerations where Qt will be the fastest user interface, WPF second and JavaScript third, if that is important to you.

Lastly, charting solutions.

I work for SciChart, they provide WPF Charts, JavaScript charts as well as ios/android charts. They provide 3D as well as 2D charts and are able to render 3D objects in the scene. Custom work can be carried out in case there's a feature we don't have.

The WPF charts are not yet compatible with Avalonia XPF but will be soon. Both the WPF Charts and JavaScript charts by SciChart are high performance and perfect for scientific, industrial monitoring applications.

1
  • 1
    As a small side note, for some specific applications about plots/charts, I found a great tool in ScottPlot, which I wholeheartedly recommend. See github.com/ScottPlot/ScottPlot
    – LuC
    Jan 12 at 16:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.