How to Learn PLC: Thoughts on Going from Basics to Expert

How to Learn PLC: Thoughts on Going from Basics to Expert
How to Learn PLC: Thoughts on Going from Basics to Expert
To learn PLCs well, it is best to have at least some foundation in secondary control circuits; otherwise, there is not much to build on. Next, you need to learn from practice—work and study at the same time. Third, you need a programming mindset and a way of thinking about design. That is the overall learning path. In practical terms, it can be broken down into the following steps.
-
As preparation, you should have knowledge of secondary (control) circuit principles, including the basic principles of relay control circuits, the ability to read and draw common control schematics, and ideally some hands-on experience with wiring and commissioning. This is not something you can master by reading alone, but it is a good idea to find a book on topics such as low-voltage electrical control circuits and study while practicing. Build a solid foundation and understand basic concepts such as relays, counters, and timers. After all, PLCs were originally designed to replace and simplify relay circuits.
-
As a hardware investment, I personally recommend buying an entry-level PLC for practice. In my view, the cost is well worth it. Having real hardware makes both understanding and practice much more intuitive. In terms of cost-effectiveness and ease of getting started, Siemens compact PLCs have always held an irreplaceable position in the industrial market. Under current conditions, the S7-200 SMART or S7-1200 are the best starting points, and between the two I would recommend the S7-1200 more. One reason is that both the S7-1200 and the more advanced S7-1500 use the same TIA platform. Another is that the TIA platform is also the future direction of Siemens' software ecosystem. (That said, be mentally prepared before installing TIA—it can make almost any computer unbearably slow.) The S7-200 is still widely used, but it is clearly a generation behind the times.
-
For the basics, among popular textbooks, Liao Changchu's books are probably the most widely used and easiest to follow. He also mainly teaches Siemens systems. (I am not sure whether he has written specifically for the 1200 series, but I assume he has. At the very least, his books on the 200 and 300 series are quite good.) You should understand the basic structure of a PLC, but do not get overly obsessed with that area—moderate understanding is enough, or even a rough understanding at first. There will be plenty of time to go deeper later in real applications. What you must really master is LAD ladder diagram programming: basic concepts such as coils, nodes, counters, timers, shift operations, comparisons, calculations, rising edges, falling edges, and so on. If possible, it is also best to learn at least a little about other programming languages, such as STL or FBD. These are not flashy but impractical tricks. On the contrary, they can deepen your understanding of PLCs, help you implement certain functions more quickly, and complement higher-level textual programming languages very well.
-
In terms of learning methods, the ideal situation is to find a mentor willing to guide you through real projects. Most PLC books on the market only teach the basics and do not really cover actual project cases. If you ever get the chance—though this is rare—to read some excellent real-world programs, it will help a lot in improving both your coding habits and your programming mindset. If not, then make the most of the limited practice cases found in textbooks, such as marquee lights, traffic lights, or conveyor line exercises. Do the wiring yourself, write the programs, and debug them on your own. If you can independently make these functions work, and then combine them with some sensors to implement analog input and output functions, you can consider your foundation basically solid.
-
More advanced skills include two aspects: program organization and function implementation. On the program organization side, you should try to understand the roles of FBs, FCs, and DBs, learn the meaning and use of system OBs, and start organizing programs in blocks. Reduce repetitive work through calls, improve reusability, and make your programs clearer and easier to read. This is the foundation for improving your programming level and organizing large-scale programs. On the function implementation side, it is very important to learn some common programming patterns, such as sequential transition structures, PID control, stepper motor control, and the principles and implementation methods behind these functions, as well as how to use the built-in technology modules provided by the system. If possible, try writing your own PID control or motion control function without relying on system blocks. These are the dividing lines between being merely proficient and becoming truly advanced. I know many engineers who get stuck at this point and hit a technical bottleneck. There are many reasons for that. One is that everyday projects often do not require many advanced functions. But in my opinion, the main reason is that if you learn purely from the PLC perspective, the technical ceiling that eventually forms is mostly a result of limited viewpoints and concepts. Since we are talking about learning PLCs, it is worth sharing some thoughts on how to break through that dividing line.
-
Crossing the dividing line. If the foundation on the beginner's side of PLC learning is hardware circuits built from relays, then the other end of the road toward mastery is closely tied to software engineering. Although PLCs were abstracted from relay circuits, once that abstraction was complete, they became a software engineering problem. What engineers do in PLC programming is, in essence, a form of software design, and fundamentally it still cannot be separated from the guidance of software engineering. The issue is that most people doing PLC programming are engineers rather than professionally trained software engineers, so they often cannot improve further at the level of cognition and methodology. What FCs, FBs, and DBs are meant to achieve are also key ideas in software engineering: separation of logic and data, and independence between models and instances. Many encapsulated technology blocks are already written based on object-oriented ways of thinking. Therefore, it is crucial to grasp the basic ideas and methods of software engineering and, if possible, learn a higher-level programming language, rather than getting bogged down in various configuration tools, HMI software, and so-called scripting. These tools are designed for engineers, but their value in raising one's fundamental understanding and level is extremely limited. That is why mastering a higher-level programming language is essential. Personally, I lean toward Python, because life is short and Python is an efficient language. But if we look at ease of learning and quick results, I would still recommend starting with C#.
-
Other supplementary skills and knowledge. Beyond software engineering, if you truly want to become a PLC expert, I can hardly think of a greater challenge than designing a PLC yourself. This would include integrated circuit design and embedded systems software design. It requires a foundation in electronic circuits and the ability to design circuit boards. You would need to build a working embedded system, and at the same time create a PC-side compiler that converts ladder diagrams into a language the PLC-side embedded processor can understand. The disciplines and content involved here, in my view, represent the most comprehensive technical expression of an automation engineer's abilities. If you can reach this point, then I think you can truly be called a PLC expert.
Writing this, I suddenly had an idea: if one day I were to write a book about PLCs, perhaps I could call it How to Build Your Own PLC: The Path from Beginner to PLC Expert. Of course, that would be a different topic altogether.


