The important role of software engineering in industry
To keep up with increasing complexity, the programming practices used in industry need to be modernised with the latest tools and techniques.
The last decade or so has seen a sharp increase in the demands placed on industrial control systems. This is due in part to the higher levels of automation needed to make products efficiently; but industry is also having to fulfil ever greater and more diverse customer requests.
These increases in demands have led to what seems an exponential rise in the complexity of programs used by industrial control systems — a trend that seems certain to continue well into the future. The overall value of a control system has moved away from its hardware, and is now heavily weighted towards its software, which contains the intellectual property (IP) of the overall system.
Software development therefore needs to be carefully controlled to prevent programs becoming unwieldly, difficult to maintain and highly time‑consuming to fault‑find. If not kept in check, program management will become ever more expensive and burdensome for industry.
Fortunately, more attention is being paid to the software engineering practices used by industry. This will become ever more important as companies seek to digitise their operations. It will also help avoid cost blow‑outs for software projects.
The value added by PLCopen
Industry has long recognised the trend towards ever-greater complexity and the ramifications it has for programming. PLCopen is one organisation specifically established to help in this process. Its stated aim is to enhance the quality of industrial software and thereby improve the overall efficiency of industry.
Being vendor neutral, PLCopen seeks to collaborate with as many vendors as possible, across a wide range of industries. It creates vendor working groups with the goal of creating standards for industry. The process is long, with many requests for comments (RFCs) received from vendors, but the final product shows the benefit of such collective input.
In the early days, PLCopen promoted the use of the IEC 61131‑3 PLC programming standard. Since then, it has more recently branched out into producing standards for other aspects of industrial control such as motion, safety, communications (mainly OPC UA) and data exchange. It also provides training and certification services for vendors to publicise their level of compliance to these standards.
The use of such standards has undoubtedly increased the quality of software used in industry; it has also helped programmers become more efficient in their automation projects.
The traditional model for program development
For many years, industrial programmers have had to purchase a development package for their controllers and install it onto their local computer. This computer was usually located close to the controller so that a physical connection could be made to it.
Creating programs in this way almost always restricted program development to a single user, working on a solitary computer. It also meant the programmer was solely responsible for procuring and maintaining the computer hardware, as well as generating backups of the program. They were responsible for installing updates (to both the operating system and development package) and for ensuring the integrity of the system by protecting against malware.
Much effort was required of this one programmer — in areas they were not necessarily expert in. Nevertheless, this model has worked reasonably well over many years and continues to be used today. But apart from the extra demands placed on the programmer, the one aspect that’s becoming increasingly important is the ability to support multiple programmers on the same project. Due to the growing complexity of programs and the sheer amount of code that needs to be written and tested, projects are increasingly drawing on expertise from different areas, necessitating collaboration from numerous programmers.
The future of software engineering for industry
It’s become clear that to successfully navigate the larger, more complex programs required of modern applications, the programming practices used by industry will need to be modernised.
To improve programming efficiency, industry should really adopt more of the methodology and techniques commonly used in mainstream IT. For example, Visual Studio is a popular development environment used by IT: it is very adept at handling large programs and supports some very useful facilities that make programming manageable and easy to fault‑find.
The first PLCs were designed to replace hard‑wired relay circuits, and thus only supported the ladder diagram programming language. While it is still the preferred language for solving Boolean logic type problems, its overuse will cause a phenomenon called ‘code bloat’, where PLC programs are far longer and more complicated than they need to be. However, the use of structured text language will prevent programs from becoming overly convoluted, particularly when an application requires heavy mathematical calculations.
Object‑oriented programming (OOP) is another example of a programming paradigm that’s been available for decades to the IT community but is still not supported by most industrial vendors. This is despite OOP’s inclusion into the third edition of the IEC 61131‑3 programming standard in 2013.
The way OOP organises programs around objects with data and code is radically different from the logic and functions approach of traditional industrial programming. Certain applications lend themselves very well to OOP and its use greatly simplifies programming. Moreover, without OOP, these applications would become far less efficient and more difficult to manage.
Cloud‑based software engineering — the next frontier
One of the more recent innovations in software engineering has been the adoption of cloud‑based services. The cloud, with its virtually unlimited storage capacity, very scalable infrastructure and large array of facilities, has become highly attractive to businesses. It’s also being used extensively by IT departments.
Automation suppliers have similarly been integrating the cloud into industry and using it in areas like IoT for ‘big data’ collection. Using existing internet infrastructure, the cloud can similarly add value to industrial programming environments and can add features that would otherwise be very difficult to implement.
So what exactly is cloud‑based engineering and how can it be applied? More importantly, how can it help us improve what we do?
What is cloud‑based engineering?
With cloud-based engineering, the whole development suite — together with all its tools — resides not on a local computer but in the cloud. The entire programming environment is called a ‘virtual machine’ because, while it exists in cyberspace, as far as the programmer is concerned it runs as if it’s installed on the developer’s local machine.
Every controller is given its own instance of a virtual machine image in the cloud. Programmers need only login to a portal via a standard web browser on a local device to access it; no special software needs to be loaded. The physical industrial controller on the factory floor is also tunnelled to the cloud via a secure transport channel and linked to the virtual machine to enable program deployment.
One advantage of using the cloud in this way is that it provides true platform independence. Programmers aren’t restricted to just desktop computers: they can use tablets, mobile phones or any other internet‑enabled device. The internet affords complete location independence, meaning programmers and controllers can be anywhere in the world. This alleviates the need for programmers to be physically present onsite.
The advantages of cloud‑based software engineering
Perhaps the most significant advantage of cloud‑based engineering is the lifting of the burden on the programmer having to provide the computing resources. With the cloud, it’s the vendor who’s responsible for supplying all the computing hardware and software, as well as its maintenance and the installation of updates. File handling is also performed by the cloud provider; programmers do not need to be concerned with backups or malware.
Another advantage is the elimination of having separate software versions for different firmware editions. In the cloud, every firmware revision is supported, and each will have their own virtual machine. In this way, programming software always matches the controller’s hardware and firmware revision.
Version control (ie, the handling of different revisions of the same program) can be handled in the cloud by seamlessly integrating established systems such as Git. Git is arguably the most used versioning system and its branching and merging facilities are ideal for collaborative work between multiple programmers.
Security concerns
Cloud‑based engineering undoubtedly improves the productivity of the programming team. It does this by streamlining their work and allowing them to concentrate on their core task of programming, rather than peripheral issues such as file management.
However, security remains a significant concern for some users, who need to be highly protective of their IP, as it’s what gives them their market advantage. For this reason, some web‑based services are hosted locally, rather than in the cloud, where the location of the data is often unknown. While some cloud providers counter this by specifically guaranteeing the final location of the data by country, a hybrid cloud system remains a viable alternative. This is where the cloud is used for general data and services, and a locally‑hosted cloud stores the sensitive elements.
Cloud engineering offerings
Cloud‑based computing is essentially a software-as-a-service (SaaS) offering. Despite the advantages of SaaS, take up in the industrial space has heretofore been slow — the main reason being the lack of support from industrial vendors. This placed the onus of creating virtual machines in the cloud and connections to the hardware onto the programmer. These tasks are difficult to implement without expert knowledge.
To help overcome this roadblock, hardware vendors are starting to rent out cloud‑based engineering services to their programmers. They have created web‑based portals for users to login to, dashboards into virtual machines, and connection handles for real controller hardware. The portal can also provide tutorial support and guidance documentation.
Setting up a new cloud instance only takes a few minutes, with many of the functions automated. In future, vendors will be able to extract operational data through the same channels and can add value to their offerings by including integrated analytics, predictive maintenance and much more.
While still embryonic, offerings for cloud‑based services are starting to appear, albeit slowly. And with the integration of AI into programming, it seems certain the cloud will be increasingly used in industrial software engineering.
Calibration explained: principles, processes and modern reporting
Accurate calibration ensures reliable measurements, supports preventive maintenance, and...
How to centralise remote access: securing all access to your OT systems
Centralising remote access and reducing tool sprawl creates benefits for engineer and system...
Shining a light on cyber threats hiding on the plant floor
Facilities that treat OT cybersecurity as an operational discipline and not simply an IT function...




