Although I doubt that many engineers habitually view things this way, marketing folks like to divide the world into sectors. So, embedded systems might be in telecoms, medical, automotive, consumer, mil-aero, or industrial. There are probably others that I have not thought of. Each sector has its own characteristics and may or may not sound interesting to be involved in. Automotive is quite high profile just now, as the amount of electronics being packed into cars is increasing daily. Medical is important to us all and is also growing fast. Mobile telephony is a kind of merger between telecoms and consumer and has a certain appeal for many engineers.
But I have something of an affection for industrial systems …
When I first started learning about software – nearly 40 years ago – I also dabbled in electronics and quickly concluded that computers were most interesting when they controlled “stuff”. At that time, the “data processing” world seemed to have more glamor and that was where the big money was to be found. I made what turned out to be a wise decision: I set out to find work in the area that interested me. My early career was working with materials testing machines and then with SCADA [Supervisory, Control And Data Acquisition] systems.
One of the interesting things about industrial systems is how much they have changed over the years; another is how little they have changed.
Industrial systems where among the first places, after financial/business systems, that computers were widely employed. Engineers were quick to see the potential of automation in this context and there was much progress during the 1960s and early 1970s. At that time, industrial systems took two broad forms: a central computer [commonly a minicomputer from companies like DEC] connected to numerous “outstations”, which would gather data or effect control; or a number of independent programmable logic controllers [PLCs], which were effectively very small computers that automated the operation of factory machines.
In the late 1970s and the decade or so that followed, microprocessors began to be widely applied. In industrial systems a significant impact of these new, powerful devices was in the outstations, which were previously implemented in dedicated hardware. The use of a microprocessor, or later a microcontroller, resulted in much more flexibility and capability in the design of such devices. This is the area where I made contributions in my early career. I often needed to study very carefully how the hardware outstation worked so that we could take the first step to bringing it up to date. Commonly we would simply make it emulate the exact functionality of its predecessor and the minicomputer would be unaware that anything had changed. Later, we could add new facilities.
At that time, the computer typically had a direct link to each outstation – basically a star topology network – and protocols were designed to fit the needs of the application [often having been defined by the previous hardware devices]. The next big step was the application of more standardized networking technologies and protocols, which led to the type of systems we see today. PLCs were also updated, each becoming more powerful and commonly being connected together.
The biggest changes we have seen in recent years are:
- connectivity – most industrial systems are networked with other enterprise systems and commonly on the Internet
- security – coming largely out of the above, there has been an increasing need for systems to be protected from unwanted external access, whether accidental or malevolent
- standardization – the use of industry standard and formally standardized components [hardware, software, protocols and procedures] is seen as best practice
- regulation compliance – for a variety of reasons, modern systems need to comply with regulatory bodies’ requirement
Developers of industrial systems face many challenges, bringing together the technologies to deliver on very complex sets of requirements. From the embedded software perspective alone, they are likely to be looking for the means to implement real time systems [using an RTOS, like Nucleus] and other systems which are not real time, typically using Linux. Add to this the application of a hypervisor, most likely in a multicore device, which also needs specialized development and debug tools, and the need to develop a sophisticated user interface. The integration of components alone is a nightmare. And this is all before any application software has been developed.
It is with these issues in mind that Mentor Embedded recently announced a comprehensive package of solutions for embedded software development in industrial systems. This is backed up with plans for numerous technical publications and events. An initial opportunity to get up to speed is an upcoming free webinar which will look at the issues around developing industrial systems, with a particular emphasis on security and regulatory compliance.