PLC backups and version control

What to back up (project, online program, retentive data, firmware, HMI and drive parameters), how to keep versions traceable, text export for diffs and a restore test routine.

The real program is the one running in the controller. A good backup lets you restore a failed CPU, compare what changed and prove which version is in operation.

What to back up

ItemWhy
Engineering project (archived, with libraries)Comments, symbols and structure exist only here
Online upload / card imageProves what is actually running
Retentive data, recipes, setpointsLost on CPU replacement if not saved separately
Firmware versionsNeeded to restore the same behaviour
HMI/SCADA projects, drive and device parametersOften forgotten — a replaced drive without parameters stops the line
Network dataIP plan, device names, switch configs

Version control

  1. One version ID per release: date + increment, recorded in the program (a constant visible on HMI) and in the archive name.
  2. Change log: what, why, who, approved by whom.
  3. Use Git or a vendor version-control system for exported sources (structured text, PLCopen XML, TwinCAT/CODESYS text files, SimaticML/Openness exports). Binary project archives belong in the same repository or a versioned store, not on personal laptops.
  4. Compare before downloading: online vs offline comparison in the engineering tool, or text diff of exports.

Restore test

At least once a year (and after major changes) restore a backup onto a spare CPU or simulator and check that it compiles, downloads and runs. A backup that was never restored is a hope, not a backup.

Loading the map…

Sources

  1. Git documentation — Git
  2. IEC 61131-3 overview — PLCopen
  3. NIST SP 800-82 Rev. 3 — NIST

Updated 2026-10-04