CASESTUDIES
Custom HMI Solution
There is a number of mature solutions for HMIs and SCADA that do not require expert software development expertise. A lot of the time it is better to choose a solution from a well established company that provides a reliable product with long term support.
Standard solutions are good for the problems they are designed to solve. However applications often have special requirements that a standard HMI might provide an inefficient or an expensive solution that requires additional hardware like a PLC or even a PC. Following is some of the requirements I had in my career:
- load a file of a custom format;
- communicate to an industrial laser projector over a custom protocol;
- control lighting over DMX;
- play an audio file from a network location;
- communicate to a web server;
- communicate with a relational database;
- handle IO of special configuration;
- implement complex calculations etc.
When dealing with custom applications like above, I have developed a modular framework for custom HMI that can be extended to accommodate special requirements.
Certain features are present in many projects, like display forms, job recipes, data logging, general diagnostics or multilingual user interface. These can be set using configuration files.
The framework is written in standard C++ with cross-platform usage in mind and I have used it to implemented solutions that run on Windows and Linux, desktop and embedded, operated with a touch screen and on-screen keyboard, or operated headless and autonomously.
Case Study: Control System and HMI for Manufacturing
Designed and implemented control system software and HMI. Software is implemented to run on standard PC (x86-64) hardware.
The complete application consists of two pars: human-machine interface (HMI, the front end) and the control process (PLC, the back end). Both parts run on same PC under a custom-built Linux-based operating system with real-time patches.
The soft PLC (back end) interacts with several devices over TCP/IP and RS-485 using Modbus. The PLC reads current status of the digital and analogue I/O and feedback from motors, runs process control logic according to production process parameters and commands position for motors and output power for heaters. The PLC is implemented as a multi-threaded process that performs network queries and runs control logic. Actual control logic is coded in IEC 1131 language and cross-compiled under engineer’s Windows PC, then downloaded and run on the soft PLC.
The HMI (front end) is a full featured application. It is developed as a multi-page Qt (widgets) application and runs on a touch screen. It queries the PLC and performs the following functions:
- displays current status of production;
- displays current status of hardware and any possible alarms and warnings;
- samples process data and logs to files according to user-specified settings;
- lets the operator to edit and load recipes;
- provides operator with relevant documentation stored in PDF;
- provides extensive diagnostics facilities.
Cross-compiler built using Crosstool-NG. Minimal embedded Linux system is built using Buildroot. Linux RT patch is applied.
- Comms: Modbus RTU; Modbus TCP.
- Languages: C, C++.
- Tools: buildroot, Qt (widgets), flex/bison.