Book a consultation

Automation Change Management

PLC Version Control: Approved Versions, Git and the Native IDE Tools

PLC version control explained: approved-version tools against Git, native Git in TIA Portal, Design Studio and CODESYS, and why ladder is hard to diff.

Vladimir Romanov


PLC version control keeps every version of a controller program, records who changed it and why, and lets engineers compare versions and roll back. In a plant it has one extra job that ordinary software version control was never designed for: telling you whether the program running in the controller still matches the version that was approved, because a controller can be edited while it runs.

Two models answer that job differently. Dedicated change management tools use an approved-version workflow built around the running device. Git, which most vendors’ engineering tools now support in some form, is built around the engineer’s project. This page explains both, the native Git options now inside the vendor IDEs, why binary project files make Git hard, and how to choose. It sits under the automation change management hub.

Two models of PLC version control

The approved-version model treats each device as the unit. There is one approved version per controller, robot or HMI. An engineer checks it out, edits it in the vendor’s own software, and checks it back in, where it is reviewed and approved. Scheduled jobs upload from the device and compare it with the approved version, so an online edit made outside the process shows up as drift. AMDT’s octoplant describes this workflow on its own site, and FactoryTalk AssetCentre works on a similar principle in Rockwell estates.

The Git model treats the project as the unit. Engineers commit changes to a repository, work on branches, open a merge or pull request, and the change is reviewed before it reaches the main branch. It is how software teams work, and it suits engineering teams building and reusing code across many machines.

DimensionApproved-version workflowGit workflow
Unit of controlThe device and its approved versionThe project and its branches
Built forOperating and maintaining a running fleetDeveloping and reusing code
Detects online edits on the controllerYes, through scheduled upload and compareNot by itself; needs a device backup tool
Parallel developmentLimited; usually one change at a time per deviceNative: branches and merges
Who it suitsMaintenance, plant controls, quality and auditorsEngineering teams, OEMs, integrators
Binary project filesHandled through vendor-aware compareStored, but not meaningfully diffed or merged
Audit trailBuilt in, with approval recordsCommit history; approvals depend on the platform

Neither model is complete on its own. An OEM building twenty machines from one code base needs branches. A plant running those machines for fifteen years needs to know what is in each one tonight. That is why the market is converging: Git-native tools such as Copia DeviceLink now back up running devices, and approved-version tools are adding better engineering workflows.

Git branching against an approved-version workflow Two lanes. The upper lane shows Git: a main branch, a feature branch that an engineer commits to, a review, and a merge back to main, from which the program is deployed. The lower lane shows the approved-version workflow: the approved version is checked out, edited in the native tool, checked in and approved, while a scheduled job compares the running device against the approved version and flags drift. A note says the lower lane catches the online edit the upper lane never sees. GIT: built around the project main branch feature branch: commits review merge deploy to device APPROVED VERSION: built around the device Approved v12 Check out Edit in native tool Check in Approved v13 Nightly job: upload running program, compare with the approved version, alert on drift This is the step that catches the 2 a.m. online edit, which the Git lane above never sees.
Git controls how changes are made to a project. The approved-version model also checks what is actually running. Plants that use Git for engineering still need the nightly compare.

Native Git in the vendor IDEs

The biggest change in PLC version control over the last few years is that the engineering tools themselves now integrate with Git or similar systems. The details vary by release, so treat the table as a guide and confirm against your version.

Engineering toolVendorHow it supports version controlWhat it means for a plant
TIA Portal with the Version Control InterfaceSiemensExports project objects to a file workspace that an external system such as Git manages; V21 extends the Git alignment (eeNews Europe)Git becomes practical for Siemens projects, with care over which objects are exported
SIMATIC AXSiemensCode-first environment built on VS Code, with text-based source and Git workflows (ARC)Software-style development for new Siemens projects; existing TIA projects stay where they are
FactoryTalk Design StudioRockwell AutomationCloud-based, with “integrated version control, change tracking and streamlined workflows for sharing, reviewing and merging” (Rockwell)Git-style collaboration for Logix projects, delivered from the cloud
CODESYS with CODESYS GitCODESYS GroupAdd-on that stores CODESYS projects in Git repositories (CODESYS Store)Applies to the many controllers built on CODESYS, including ABB Automation Builder
TwinCAT 3BeckhoffVisual Studio-based, with project items stored as separate files that work with Git (Beckhoff)One of the most Git-friendly PLC environments
PLCnext EngineerPhoenix ContactVersion control integration, with Git and SVN support (PLCnext help)Git for PLCnext projects
Ignition 8.3Inductive AutomationGateway configuration stored as files on disk, which can be placed under Git (Inductive Automation)SCADA and HMI configuration joins the same workflow as code

What this does not cover. Every one of these is single-vendor and engineering-side. None of them, on its own, uploads from a running device on a schedule, covers robots, drives or a 2004 controller, or produces an audit trail of who changed which device on the floor. That gap is the reason multi-vendor tools still exist, and it is covered in our PLC version control software comparison.

Why binary project files complicate Git

Git was designed for text. It stores any file, but its diff, merge and blame features only make sense when changes appear as lines.

Dark code editor showing a commented function that reads stored data from device memory
Git reads a change like this line by line. A binary PLC project gives it nothing to read, only the fact that the file changed.

Many PLC projects are binary. A Studio 5000 project saved as an ACD file, an RSLogix 500 file or a classic STEP 7 project is a binary or database-style container. Git will keep every version, but a diff between two of them says only that the file changed. Two engineers editing the same binary project cannot merge their work; one of them has to redo theirs.

Text exports help, with limits. Rockwell’s L5X and Siemens’ VCI exports turn a project into XML or text. The diff becomes readable, but a single moved rung can show as dozens of changed lines, and some content, such as online tag values or certain module settings, may not round-trip cleanly. Treat the export as a view of the project, and test that a re-imported project matches the original before relying on it. Our Studio 5000 project structure page explains why structure decides how readable those diffs are.

Project formatWhat Git seesPractical consequence
Studio 5000 ACD, RSLogix 500, classic STEP 7A binary or database-style containerEvery version is kept, but diffs and merges are meaningless; one engineer edits at a time
Rockwell L5X and Siemens VCI exportsXML or textReadable diffs, noisy for moved rungs; test that the re-imported project matches the original
Projects stored as separate files, as in TwinCAT 3Many smaller XML or text filesThe closest to normal software practice: per-object diffs, and merges become possible with care
SCADA configuration on disk, as in Ignition 8.3Configuration filesHMI and SCADA changes can be reviewed in the same way as code

Repositories grow. Binary files of tens of megabytes, committed daily, inflate a repository quickly. Git LFS or a dedicated tool’s storage handles this; plain Git on a file share does not.

Diffing ladder logic

A useful compare answers what changed in terms an engineer recognises: this rung, this tag, this preset, this module. That needs a tool that understands the vendor’s format.

  • Graphical, rung-level compare shows the old and new rung side by side with the changed instruction highlighted. Copia advertises “built-in rendering for ladder logic, function block diagrams, and structured text” (copia.io); octoplant’s Smart Compare offers graph, table and text views (AMDT Smart Compare).
  • Vendor compare tools ship with several IDEs and compare two projects, or a project against the online controller.
  • Data and configuration matter as much as logic. A changed timer preset, a modified I/O configuration or an altered safety parameter can change machine behaviour with no change to a single rung. Check that a compare covers them.

Making PLC version control stick on the plant floor

The technical choice is the easier half. Version control works in a plant when a few rules are agreed and kept.

Write down who may edit what. Online edits will always be needed to keep a line running. The rule is not “never edit online” but “every online edit is checked in, or reversed, by the next working day.” The nightly compare enforces it without anyone policing it.

Record why, not only what. A compare shows that a timer preset changed from 2.0 to 3.5 seconds. Only a change note says it was raised to stop nuisance trips on the infeed, and that the real fix is a sensor bracket. That note is what the next engineer needs.

Make integrators and OEMs part of it. Commissioning should end with the final project checked into the plant’s repository as the approved version, with the source, the passwords and the software release recorded. Our systems integrator scope of work guide shows how to put that in a contract.

Start with the lines that hurt most. Bring the most critical and most frequently changed equipment under control first. Early wins, such as a drift alert that caught a change before it caused a fault, do more for adoption than any policy.

Limits and open questions

  • Process versus tooling. Version control fails when online edits bypass it. No tool fixes that without an agreed rule about who may edit what, and a compare that catches the exceptions.
  • Licensing of native features. Some IDE Git features sit in higher editions or add-ons. Check what your existing licences include before assuming they are free.
  • Cloud engineering tools raise the same network and data questions as any cloud service touching OT. Agree them with the OT security owner first.
  • Mixed estates. A plant with five vendors may end up with five Git integrations and still need a separate tool for the running devices.

How to evaluate a PLC version control approach

  • Which of your engineering tools can store projects as text today, at your software versions?
  • Do you need parallel development (OEM, integrator, multi-line standards) or mostly controlled maintenance changes?
  • How will online edits on the floor be detected and reconciled?
  • Can the compare show rungs, tags, data values and hardware configuration in a readable form?
  • Who approves a change, and where is that approval recorded?
  • Will integrators and OEMs work inside the same repository and process?
  • What happens to legacy controllers whose tools have no Git support?

Deeper

If a modernization is the moment to put this in place, our control system modernization work builds version control and approval into the new system from the start.

Frequently asked questions

What is PLC version control?

PLC version control keeps every saved version of a controller program, records who changed it and why, and lets engineers compare versions and return to an earlier one. In OT it also has to answer a question software teams rarely face: whether the program running in the controller still matches the approved version, because controllers can be edited live.

Can you use Git for PLC programs?

Yes, increasingly. TIA Portal, SIMATIC AX, FactoryTalk Design Studio, CODESYS, TwinCAT, PLCnext Engineer and Ignition 8.3 all offer some form of Git or source-control integration. Git works best where the project is stored as text. It works poorly on binary project files, and it does not back up running devices or detect an online edit by itself.

Why is it hard to diff ladder logic?

Many PLC project files are binary, so a text diff shows nothing useful. Even when a project is exported to XML, a single rung change can appear as many changed lines, and the meaning sits in rungs, tags, data values and hardware configuration rather than in lines of text. Readable compares need a tool that understands the vendor's format and shows the change graphically, rung by rung.

What is the difference between Git and an approved-version workflow?

Git is built for parallel development: branches, merges and reviews before code reaches the main line. An approved-version workflow is built for operations: one approved version per device, check-out and check-in around each change, and scheduled compares that flag when the running program drifts from it. Many plants now use Git for engineering projects and an approved-version tool for the running fleet.

Does the integrator or OEM need to use our version control?

They should, and it is easiest to require it in the contract. Ask that commissioning ends with the final project checked into the plant's repository as the approved version, that changes during warranty go through the same process, and that the plant holds the source and passwords. Without that, the plant's history starts with a version nobody can explain.

References and further reading

  1. FactoryTalk Design Studio PLC Programming Software · Rockwell Automation
  2. CODESYS Git · CODESYS Group
  3. TE1000 TwinCAT 3: Source Control · Beckhoff Automation
  4. Version Management using a VCS · Phoenix Contact, PLCnext Engineer help
  5. Version and Source Control Guide · Inductive Automation, Ignition 8.3 User Manual
  6. About octoplant · AMDTOne vendor's description of the approved-version, check-in and check-out workflow.
  7. Copia Source Control · Copia Automation

← Automation Change Management

Have a project that needs technical ownership?

Send us the situation. If it is not something we should take on, we will say so.