Object-Orientation for Automation Design
A modernization project utilizing smart and emerging technologies requires a good holistic design to be successful. When that design also incorporates a proper degree of modularity and standards-based components, the upgrade will be faster, more agile, and provide a foundation to better support a facility’s long-term needs.
While there are various ways to approach the design effort, the greatest result combines best practices and standards guidelines with the latest technologies. Object-oriented modular design is not new to automation, having been ushered into the mainstream decades ago by the ISA-88 standard, and is now considered a fundamental methodology for modern process control solutions. Like the rapid advancements it first brought to application development in the business world, object-orientation offers the same benefits to automation software development.
Beneficial Design Principles
Object-orientation is now arguably the dominant methodology for software design. In simplest terms, object-orientation is the technique of bundling code into well-defined and easily applied software building blocks. Numerous benefits result from this methodology, which streamline the effort of creating a flexible, feature-rich and rock-solid control system solution. Some of the main benefits include:
Modularity: The source code for an object can be written and maintained independently of the source code for other objects. Once created, an object is easily duplicated to enhance consistency and simplify understanding.
Abstraction: Objects interact through interfaces consisting of methods and attributes. By exposing only its public interface, the inner workings of an object remain hidden from the outside world. After all, once an object is coded and tested, it doesn’t matter how it works – it just does.
Re-Use: If an object already exists and performs a needed function, simply re-use it. If a library of these objects is developed and maintained, chances are good that most of the functionality of a new control system can be constructed from existing components. Think how much effort that could that eliminate!
Interchangeability: If a particular object turns out to be problematic, simply remove it and plug in a different one as its replacement. So long as the interfaces are consistent, the replacement should work without modification to the rest of the system.
Tools for object-oriented design are ubiquitous, but that hasn’t always been the case for process control platforms. Not long ago, implementing an object-oriented control design was tedious and difficult. Thankfully, hardware vendors now offer development tools that are designed with object-orientation in mind.
Set Goals for Successful Results
Object-orientation is a powerful tool on its own, but when combined with time-tested project implementation methods and solid goals, successful results can and should be expected. To maximize success, set defined goals early on with the following considerations:
Strive for an “agile” methodology. The term agility implies a lightweight process that can both accelerate and change direction quickly. To this point, a development team should incorporate a select group of cross-trained individuals who have broad experience in the many facets of process control design and implementation. These individuals will ramp up quickly and adapt to changing requirements with equal aplomb.
Maximize simplicity and maintainability. Few will argue the virtues of the KISS principle (keep it simple, stupid), and simplicity of design is at the heart of many success stories. By its nature, reducing extraneous details enhances maintainability. After all, the easiest system to maintain is the one that is simple to understand.
Minimize engineering effort through re-use. The concept is simple. When components of a system are designed to be re-usable, the fruits of expensive engineering efforts are maximized. Furthermore, when a component will be used over and over, committing resources for adequate testing and documentation is rarely an issue.
Aim for a “best practices” solution. For control system design, the most applicable standards – ANSI/ISA-88.00.01 and IEC-61499 – both provide guidelines for applying object-oriented principals to process control and contain a thorough explanation and breakdown of techniques, which are considered the best practices in the industry. Safety standards – ISA-84 and IEC 61511 – and business integration standards – ISA-95 and IEC 62264 – are also important for guidance when integrating process control with other systems.
Optimize the whole rather than the parts. It seems logical that by fully optimizing each part of a system, the system is also optimized. This can be true to some extent, but when optimizing individual components, the needs of the whole system tend to be ignored, which puts a lower value on overall system functionality. A better approach is to first optimize the system, and then optimize the resulting components – but only to the extent that the effort doesn’t detract from any prior system optimization. An example of this is using a generic object that may contain common denominator functionality that isn’t required for every instance where it’s applied but maintains consistency of the broader control architecture.
Provide support for frequent software verification. Provisions for testing and verification are essential and are easily accomplished by adding simulation capabilities to each object in a library. This feature permits testing of the expected response to a condition without having to actually create it, which is especially useful if that situation might risk equipment damage or personnel safety.
Integrate project documentation. If design documentation is integrated into the system in the form of an online reference, chances are it will be better maintained and will be accessed with greater ease. Creating documentation for object functionality is easy and requires less total effort, because it’s only created once (i.e., when the object class is first created).
Ideally, this documentation should be integrated with the code, but where those tools aren’t provided, it’s also easy to integrate that documentation into online help as part of the human-machine interface (HMI). Regardless of the method used to create it, documentation that is part of the solution will be more frequently used and understood.
Support safety integration. In addition to the regular re-testing of requirements mentioned earlier, safety standards impose the need for reliable mechanisms for manipulating process or equipment actions when adverse conditions are detected. Reliability is the key here, and a simple, consistent and thoroughly tested means of initiating pre-determined actions is critical to the integration of safety systems into the process control system. Properly developed objects can easily facilitate this capability when designed with a configurable override response feature and a simple, consistent and reliable mechanism for triggering it.
A Sustainable End Result
Upfront planning and well-formed, holistic, standards-based design strategies result in long-lasting control system solutions. Applying standardized strategies produces solutions with continual relevance, adaptability to change, ease of management, and simplicity of use. To achieve these benefits, certain guidelines should be followed:
Keep procedural logic separate. Much of the code running in legacy systems freely mingles direct control (the how) with sequential or procedural logic (the when and why). A nasty side effect of this approach is a close interdependency of the code (a.k.a. spaghetti code). As a result, it’s difficult to modify any part of the code without somehow affecting the rest of it.
A better approach is to separate the part of the code that typically doesn’t change from that which might change. ISA-88 defines control and procedural object types as different entities. Control objects mimic the unchanging attributes and actions of real devices, while procedural objects deal with the execution of predefined operations that produce a product with the highest quality or in the greatest quantity.
In contrast to the unchanging nature of direct control, the procedural logic will often experience flux, so it makes sense to separate it from direct control code. The benefit of this strategy is logic that is more concise, easier to understand and simpler to modify and revalidate.
In summary, a quality object-oriented design can ensure the success of a control system implementation. While there are many possible ways to realize an object-oriented design, the most sustainable solution relies on a detailed plan based on a holistic strategy, well-organized and properly orchestrated components, integrated documentation and a thorough application of standards-based design principals and tools. The application of these will make the project easier to implement and achieve more and longer-lasting benefits – and ultimately maximize bottom-line value.