Programming control systems is a complex matter. Some of the complexity is the history behind it, some is hardware related and some is the interdependency of hardware and software.
Control system hardware has migrated from mechanical to electrical, and from electrical to electronic, or digital. Mechanical systems relied on changing gears and pulleys, adjusting hard stops and a variety of means to produce products in the early industrial revolution. As electricity became widespread and electric motor became “the workhorse of industry”, simple electrical controls like relays and timers became the means for controlling manufacturing processes.
In the age of electronics there are programmable solutions and “hard wired” solutions for control. In the early days of electronics there were many logical devices like op amps and it was possible to generate complex solutions in hardware much the way we program PLCs. The difference was that the hardware solution was difficult to alter after it was built. Simulation programs comparable to PLC editors were created to help developers verify their design work and avoid costly mistakes.
Higher speed and greater functionality has been the watchword in everything electronic, control systems are no different. Today FPGA (Field Programmable Gate Arrays) are comparable to old school logic devices only scaled up to millions of gates that are able to execute in microseconds. For the FPGA programmer, there are a suite of languages specific to that task.
General purpose processors execute their programming based on rules in the Operating System of that specific machine. Obviously Windows is a common OS for the consumer world, and due to effort over the last 20 years, is also accepted in the industrial controls world. Today’s gigahertz processors far exceed the update rate of any application requirement in industry. So forcing the programming to follow execution steps in the processor is not necessary, making language development for general purpose hardware platforms independent of the processor.
The descriptive language is the key element. Is there a single descriptive language the accounts for all stated and functionalities in all control system applications. No yet. Development in this direction continues as IEC 61131 migrates to include process loop programming and motion control function blocks. Some suppliers have created larger program environments in which it is possible to call up multiple windows with different languages in each.
Complexity in the programming language turns into complexity in verification and troubleshooting. In order to increase reliability and simplify troubleshooting a simple framework needs to be defined and complexity added incrementally through function blocks. If the function blocks are well defined and use a higher level language like Visual Basic, then the user will not be burdened with learning exotic code to get his application complete.
The fundamentals of most equipment, regardless of whether the application is discrete or continuous process, falls into three main categories; startup, run time, and faults and diagnostics.
More next week