There has never been a single answer to the question of how we program control systems. This is because people write control programs that are designed to run on processors which are programmed by other people. Invariably personal preferences and subjective evaluations of what is important, what is necessary, what is preferable in the creation of these intermediate levels of control code, all become part of the final solution.
Not until the second attempt at standardization of Programmable Logic Controller code, IEC 61131 in 2003, was sufficient progress made to allow serious commonality of programming languages. Yet with all the work that has gone into the standardization, the industry has only been able to narrow things down to 5 languages.
Ladder diagramming is a set of symbols derived from electrical relay diagramming that has a very long and well established history. The fact that relay diagramming formed the basis for early automation systems is the reason for its existence and the reason that it grew into the standard means of describing control applications. The universality of ladder diagram is based in part on its history.
Unfortunately ladder diagrams were never designed to incorporate more complex control elements. Really, any analog input signal was treated as a digital input with a threshold value that represented an “on” or “off” state. For many years, PID controllers for analog instrumentation, were their own specialized form of controller. Complex process controls were created using the PID controller as a building block and cascading signals in order to model in the hardware of the time, the needed control architecture for a given application.
So the problem with universality is language. What is the descriptive language with which we can represent any control application at the human level, and then host that control application on a binary processor that will give the desired result?
Short answer? There isn’t one.
The reason is that there are many layers of abstraction required to reach the binary executable solution so that it reliably executes the desired scheme. In the ISO model of the computer, there are many layers between the CPU hardware and the user control code. Operating Systems, internal bus architectures, memory mapping, I/O subsystems all have to be designed to get signals from the real world to interface to the binary processor at the bottom layer of the system.
Linux based PLC’s have been developing for years in the hope that general purpose computers would be the final solution of least cost and greatest complexity. But embedded processors and other technologies keep changing the playing field.
At the most fundamental layer of control architectures is the Field Programmable Gate Array. The FPGA has evolved over the last 20 years into one of the most powerful ways to harness silicon and solve control applications. National Instruments, probably the single most aggressive controls vendor in applying the FPGA and it’s primary supplier Xilinx, have migrated the technology expanding the capability again and again.
Today the FPGA is moving into PLC territory, and as it has in the past, is likely to change the cost performance of controls forever.