Midweek PLC Musings
Abstraction in Art and the Art of PLC Programming
What is it about abstract art that gets so many people unsure, concerned and even upset? We are machines evolved to abstract things. We constantly simplify, and thereby abstract stuff, to put into our memory. Our brains would just not be large enough to remember everything. Yes, in art a lot of people are enchanted by realism. But that, I think, stems from our comfort of being able to identify what the artist intended at a glance. If you really spent some time, and looked close enough, you’d see that even the most accomplished realist artists are taking shortcuts. Not every individual hair is shown. That would be silly. When I got involved in the arts, I readily embraced abstraction, because I’d been doing it at work for a long time already. When we take an industrial problem, express it in the precise terms required to take action to solve it - we are abstracting the real world. When a valve becomes two limit switches, a motor forward and reverse direction output and a couple of control signals, we have done a pretty good job of abstracting a pretty complex piece of machinery!
So now that you are following my train of thought, where is this train going? It is departing normal everyday ladder logic programming to meander through the program (or programs) that you and I have created to see if there is opportunity for abstraction. Are there any repeated areas of similar code, where we are executing task that could be abstracted into a function block maybe? A bunch of valves possibly, a whole lot of motor control that could be packaged up, a number of similar actuators, a bunch of signal transmitters with alarming and bypass functionality maybe. Even the bypass just mentioned would benefit from being packaged into a separate function block, so that every time you apply one it is done the same. And when someone else adds one to your program, it is also done the same. That is the benefit of abstraction: Time saving in all future applications, working with a tested (and hopefully documented) function block where you don’t constantly have to look into how it works. Eventually everyone will use it, and it becomes your own facility standard.
There have been some pretty impressive examples of function block creation out there in the industrial world. The Rockwell PlantPAx comes to mind. But you don’t have to go anywhere near to that complexity, to make some pretty significant gains real for you. I bet that you can walk through your own code and come up with easily a dozen function blocks that would make sense to you, and those you work with. And don’t limit yourself to the idea of just packaging up the code into a function block. If you are building something, it makes sense to add better troubleshooting tools, monitoring and some diagnostics to make your and everyone’s life easier. Making a new function block takes from half a hour to the better part of a day for something pretty complex. But the payoff in repeated use (and certainty of operation) for the more complex ones is also higher, so they still make sense.
So, what do you think? Do function blocks make sense for you? Have you built some?