The line is down. Someone changed a rung on the PLC last shift and now the machine faults on startup. You upload the last program from the programmer’s laptop and hope it’s the right one. This is not version control. This is memory.

The laptop is not a repository

Most PLC programs live on a single laptop. The programmer saves a copy when they remember. Nobody knows which version is in the machine. When the laptop dies or gets reassigned, the only copy of the logic is in the PLC itself. If the PLC memory corrupts, you’re rewriting from scratch.

Use the PLC manufacturer’s version management, or put the project files in Git. Every change gets a commit message. The current running program is tagged. Roll back to any previous version by checking out the tag. This is boring until you need it at 2 AM.

Download vs compare

Never download a program blind. Compare the offline project to what’s actually in the PLC first. The PLC might have patches that were made on the fly during production and never documented. Downloading over them erases them. The compare function shows every difference. Read it before you overwrite.

If there are undocumented differences, find out who made them and why. They might be a workaround for a mechanical problem that you’ll re-introduce by overwriting.

Online edits are debt

Changing logic online while the machine runs is necessary sometimes. But every online edit is a change that isn’t in the offline project. Over months, the PLC diverges from the project file. Then nobody trusts either one.

When you make an online edit, document it. Log it in the project file. Next time you’re in the office, replicate the change in the offline project. Treat online edits as temporary, not permanent.

Tags and comments

A program without comments is a program nobody wants to maintain. Every rung should explain what it does, not just what it says. Tag names should be readable: “Pump_Start_Request”, not “M100.7”. The next person who has to fix this at 3 AM will be you, six months from now, and you won’t remember what M100.7 was for.

Bottom line

Treat PLC logic like source code. Check it in, tag releases, compare before downloading, and document online edits. The machine doesn’t care about your Git history, but the person who has to fix it does.