Another post, another review. As some readers might have noticed, my posts lately are mostly about reviews. This is due to the fact that I have very little time to write extensive pieces on the topics I would do otherwise, as the time requirments for writing such a post are just too high for me nowadays. Instead, I spend this time on reading and practicing. Of course, to somewhat compensate for the lack of other types of posts, today I present a lengthy review about the book I just fininshed reading. Please enjoy the review.
I bought this book because I wanted to read German literature about PLC programming in order to improve my German vocab and possibly to learn something new in the field. Fortunately, this book was everything I expected with only a few small problems.
The book starts out with a short introduction about controllers, then quickly switches to the real technical stuff, namely how PLCs are built up from a hardware point of view, what type of controllers are there, what sort of signaling is possible between controllers and field devices, etc. After discussing the hardware side of things, the book moves on to discuss basic software concepts, like resources, tasks, multitasking, program cycles, basic building blocks, variables and the available IEC 61131 programming languages themselves. One of the minor problems I found in the book was related to the last item, as the author clearly favors some languages over others. The book pretty much exclusively uses FBD and SFC, while ST and especially LD are only mentioned almost like a side note, which I find a bit odd, as some problems are better expressed using the last two languages (the author states as much as well).
After having discussed software fundamentals, the book starts to discuss what types of basic automation blocks there are (combinational and sequential circuits, individual drive functions, sensor functions, controller functions, etc.) and how to design them using various helper methods (KV-map, state diagram, etc.). We are then presented how to combine the aforementioned building blocks into larger working sequences to model systems, while introducing further design methods. The Petri net and the reachability graph, which can be used to model and check concurrently executing task sequences with shared resources, were the design methods I enjoyed reading about most. This is because even though there are numerous books about concurrency, by far not all of them talk about designing concurrently running programs, instead many of them simply focus on the programming language facilities related to concurrency. How those facilities are to be used, is usually up the reader to figure out, but not in this book. Furthermore, I was delighted by the fact, that these sections also mention some concepts really relevant in real world projects, like idle-current and working-current principle, alarming, device working modes, Gray code, safety considerations, etc.
The book then moves on to discuss a topic, that in my opinion seems to be a bit out of place: motion control systems. The chapter about it mostly discusses some basic concepts of such systems, more precisely CNC machines and serial robotic arms. The reason I have mixed feelings about this chapter is, that such systems usually have their own built-in, highly complex controllers, which can be programmed using manufacturer provided software and programming languages. As such, PLCs do not usually implement the actual control logic for such devices, instead they simply use user defined interfaces to interact with them and to help integrate these machines into a larger system. I think the integration of such devices into a larger system should’ve been the focus of this chapter, but of course, knowing where to start if motion control needs to be implemented using PLCs certainly doesn’t hurt (although I would pick up a book dedicated to the subject instead).
After this strange logical detour the book reverts to elaborating on PLC software design, more precisely object oriented programming. Those familiar with the concept will not find much new information here, however those who are unfamiliar with it, should probably pick up a book dedicated to OOP first, as a single chapter is simply too short to fully grasp what it is all about. All this chapter is enough for is to demonstrate that OOP is possible with IEC 61131 languages as well, if the IDE supports it (not all of them do).
Finally, the author takes a broader view and talks about safety concepts, risk analysis, the difference between normal PLCs and safety PLCs, system planing guidelines, network concepts, vertical and horizontal system integration and so on. The last problem I had with this book was related to the last few items mentioned before, as they seemed to be a bit outdated. The author for example mentions java applets as one possible solution for visualizing automation related data, a technology I personally haven’t seen in many years. Then the book relies heavily on the server-client / master-slave approach of connecting services and devices, a concept that is rapidly being replaced by the publish-subscribe pattern. I understand that legacy installations still use the former approach, and as such it needs to be discussed, but at least elaborating a bit on the latter one wouldn’t hurt at all, as technologies based on it were already available during the publishing of this edition of the book (MQTT, OPC-UA).
If I would need to recommend this book, I would do it for people who already posses some knowledge about PLC programming and related subjects (UML, OOP, networking, web technologies) and want to go beyond the basics, as the author doesn’t spend much time on explaining basics like the IEC languages or the other mentioned topics. Without having some initial background knowledge in those topics could quickly lead to frustration for complete newcomers due to the amount of new information and required extra reading. As such, before opening this book up, taking/reading some intro courses/books on the aforementioned subjects is highly recommended. After having done those courses, this book will do an excellent job in putting everything together, which I believe might have been the original intent of the author when writing this excellent piece.