KB Controls is reader-supported. When you buy through links on our site, we may earn an affiliate commission. Read more in our disclaimer
An explanation of what PLC programmers do in their day-to-day work during each stage of a project, based on my 5+ years of working as a PLC programmer.
Since I have started publishing content and courses aimed at new PLC programmers, like my free PLC Bootcamp, a few people have contacted me to ask what it is like to work as a PLC programmer.
Instead of replying to those people individually, I have put together this post that outlines my experience of day-to-day life as a PLC programmer based on more than five years of experience as a PLC programmer and a lead engineer.
I think most of you will be surprised by how little of my time is spent programming PLCs.
Before I talk about my experience, I want to take a minute to explain that not every PLC programming job is the same., and not every PLC programmer does the same tasks.
I spent all of my career working for a large system integrator that was delivering multi-million dollar projects to international clients.
Any PLC programmer working for a system integrator or machine builder doing project work will have a very similar experience to mine, although their projects may have shorter or longer lifecycles.
In contrast, a PLC programmer working in a factory may have a very different experience from mine.
If you intend to work with a machine builder or system integrator doing automation projects, then this post will be useful for you.
As a side note, I highly recommend that you start your career working for a machine builder or system integrator. By working with a machine builder or system integrator, you get the chance to work on a variety of different projects and have the opportunity to travel the world at your company’s expense. As you get older, you should have enough technical expertise to settle into a specialist role and slow down on travel, if you want.
In this section, I will explain what tasks I was involved in every day while working as a PLC programmer.
Although there is no typical day for a PLC programmer, since each project and each project team are different, there are very similar activities that need to be done for each project depending on the stage of the project.
Let’s look at a typical day during each stage of a project.
At the beginning of an automation project, the focus of the PLC programmer is to understand what the client wants and to help the project team reach an agreement about what will be delivered to the client.
The client will supply a machine builder or system integrator with a document that contains their requirements. This document contains a description of the needs and wants for the system that they have bought. Usually, this document is vague and confusing.
To get clarity on what the client wants, the machine builder or system integrator will arrange one or more workshops with the client. This workshop is a meeting where you can ask the client questions about what certain requirements mean and confirm that you have interpreted their requirements in the correct way.
After the workshop, the PLC programmer prepares a Functional Specification, or FS, document. This document explains what the machine or system will do.
The Functional Specification is reviewed and approved by the client.
Once the Functional Specification is approved by the client, the PLC programmer creates a Software Design Specification or SDS. This SDS describes how the software will implement the functionality described in the FS.
The SDS contains a detailed description of the PLC software to be created. This document is reviewed by an internal team and, once approved, is the base for the PLC software to be implemented.
During the engineering phase of a project, the focus of the PLC programmer is on writing the actual PLC code. In this phase, you implement the functionality described in the Software Design Specification and do some casual, informal testing to make sure that you code you write is doing what you expect it to do.
During this stage, light modifications are made to the design — it is not uncommon that someone on the team will find a design flaw and propose a solution to it. For this reason, it is important to have regular meetings with people from other disciplines on the same project like mechanical engineers, electrical engineers, and, if applicable, SCADA engineers.
When the engineering phase is finished, formal testing begins.
Typically, there are two to three formal test phases in an automation project. The first formal test stage is a Factory Acceptance Test, also known as the FAT.
For larger systems, a Factory Acceptance Test is carried out in an emulated or simulated environment. For machines, these tests are typically carried out on the physical machine before it is shipped to the customer’s site.
During the FAT, you execute a defined set of tests with the client to prove that your software delivers the functionality that was agreed upon in the Functional Specification document.
Once the FAT is complete, the machine is shipped to the client’s site, or for larger systems, the system is built on the client’s site. When the machine or system is available for commissioning, you travel to the site to do the commissioning.
You have to be prepared to work long days onsite. It is not uncommon to be expected to put in 10–12 hour days, 6 days a week. Of course, most companies allow you to travel home in some sort of rotation — when I was doing projects in Europe, I spent 10 days on-site and 4 days at home. From what I understand, this is a common rotation for many projects.
If you like to travel as I do, then commissioning is the most exciting part of the whole project. If you get lucky and have a good relationship with your client, then you have access to local people who can take you to/recommend some unusual attractions that you might not find as a tourist — I still smile every time I think of doing the booze cruise from Helsinki to Tallinn with some of the best clients that I ever worked with.
Of course, commissioning is not all sunshine and rainbows — there is time pressure to get the job done and as the PLC engineer, you are typically the person that the client comes to when they have issues or complaints.
The Site Acceptance Testing is a second round of formal testing with the client.
In this period, you repeat the tests that were executed during the Factory Acceptance Testing to verify that all of the functionality seen at the factory is still working at the site.
The client may also request to do additional testing to verify that the machine or system is integrated correctly into their systems. These integration tests may involve testing horizontal interfaces (with other machines) or vertical interfaces (with MES or SCADA systems).
If you have done a good job with commissioning, then the SAT phase can be a calm time to regain your energy after the commissioning period.
After the SATs have been passed, the client takes ownership of the system and begins to use it themselves. For the client, there is a steep learning curve, and most clients will start using a new system slowly and ramp up their use over time.
During this ramp-up period, the PLC programmer remains on-site to help the client ramp up and deal with any issues or bugs that were missed in the previous project phases. Again, if the commissioning and testing phases of the project were done well, this should be quite a calm part of the project.
In this post, I tried to explain what a PLC programmer does at each stage of a project.
I hope that after reading this post, you understand how much more skills a PLC engineer needs than just technical skills. Some other important skills for a PLC programming include;
Of course, you should be a strong PLC programmer but in many cases, you will still be able to land and do a PLC programming job even with only a very basic knowledge of PLC programming. In fact, if you have strong interpersonal, organizational, and communication skills, then the technical skills that you learn in my free PLC Bootcamp may be enough to get your first job as a PLC programmer.