A structured, disciplined and well documented coding strategy are the keys to producing software that works well, is easily maintained and makes system fault finding a trivial task.
To achieve these goals we have developed templates for all the basic control functions such as alarms, auto/manual control, system run/interlock permissives etc. The use of templates allows the same basic software structure to be used across all projects making code maintenance and fault finding a breeze. It has also allowed us to develop automatic software code generators which save our clients a significant amount of software development time and hence reduces the cost of the project.
The key to any system is the software that runs the actual process and determines the success or failure of any project. We have standardised on the "State Machine" approach which owing to its own design methodology the State Machine diagram becomes the basis of the documentation of the process and can be directly converted into PLC code. This differs from other methodologies like flow charts which cannot be converted directly into PLC code and so only partly describe how the process has been implemented in the PLC.
The State Machine can also be used directly on HMI and SCADA systems to show the process in action and immediately point to any problems without interrogating the PLC thereby keeping downtime to a minimum.
The use of state machines allows extremely complex processes to be broken down into smaller more manageable parts which can interact together or can then be coordinated by higher level state machines.
Any changes to the process can be implemented with the complete confidence that only the current step in the state machine being modified will be altered and will not affect any other code keeping the software stable and not introduce unintended software bugs.