There’s a lot to not be happy with regarding Industrial Automation software development, in comparison to our modern Internet software development colleagues. No automated unit testing. No equivalent of the JVM (Java Virtual Machine) whereby software development is largely independent of the target hardware platform. Incomplete implementation of object oriented program principles. There’s no such thing as a C# or Java ‘interface’ for encapsulating a behavior (e.g. CommandOn) and associating it with a type (e.g. Valve or Motor). But at least industrial strength industrial automation software doesn’t crash every 5 minutes, right?
It’s time to update that view and cherry pick what technologies exist that improve the automation software development life cycle. Automated unit testing is a great example. What if your proprietary hardware vendor exposed all their external properties and methods for their ISA-S88 type instances via OPC UA? Then a 3rd party unit test framework could provide the engineer with the AAA (Arrange Act Assert) test pattern. What about the rapid development of a generic, functional design specification in the first place, utilising everything the ‘iTouch’ factor has to offer? Isn’t it a waste of resources having expensive engineers typing word document specifications when a lot of that work could be automated? Instead the engineers should spend their hours visualising and planning how they want plant to work, then export the XML. The XML that will provide the source for the unit test, ultimately.
There are a lot of hardware vendors resisting the idea of an open control platform. But there’s also a lot of frustrated end users unhappy with how costly and complex integration between all these proprietary vendors is. Sooner or later something has to give, and when it does, we will be right there with you. With the prototyping, with the open platform, with the unit testing framework. All industry data model specific. Be it S88, S95 for process, or MDIS for Oil & Gas.
HAL Software. Making Automation accessible.