Wat is Version Control?

Version control (versiebeheer) is het systematisch vastleggen, vergelijken en kunnen terugzetten van elke wijziging in code, configuraties en documenten, met per versie wie wat wanneer en waarom heeft aangepast. In de IT is het al decennia standaard voor softwareontwikkeling. In industriële automatisering en IT/OT-omgevingen gaat het om PLC-programma’s, SCADA-projecten, HMI-schermen, firmware, robotprogramma’s en netwerkconfiguraties. Dat zijn bestanden die een installatie direct aansturen, dus een onbekende wijziging kan een productiestop of een veiligheidsrisico betekenen.


🎯 Waarom is versiebeheer belangrijk in OT?

In veel fabrieken staat de “echte” versie van een PLC-programma alleen in de controller zelf, met daarnaast een paar kopieën op laptops van engineers en leveranciers. Versiebeheer lost een aantal concrete problemen op:

  • Welke versie draait er nu? Zonder centrale opslag weet niemand zeker of de kopie op de laptop gelijk is aan wat in de controller staat.
  • Snel terug naar een werkende versie bij een storing na een wijziging, in minuten in plaats van uren zoeken.
  • Verschillen zichtbaar maken (diff): welke netwerken, blokken of parameters zijn veranderd tussen twee versies.
  • Audit trail en compliance: aantonen wie een wijziging heeft gedaan en waarom, met automatische logging, bijvoorbeeld in GxP-omgevingen.
  • Samenwerken: meerdere engineers, een systeemintegrator en een onderhoudsploeg werken aan dezelfde installatie zonder elkaars werk te overschrijven.
  • Ongeautoriseerde wijzigingen opsporen, zowel per ongeluk als kwaadwillend.

🧱 Welke soorten versiebeheer bestaan er?

Type Werking Voorbeelden Geschikt voor
Handmatig Kopieën met namen als V1, V2_final, V2_final_echt Netwerkschijf, USB-stick Niets; foutgevoelig en niet herleidbaar
Gecentraliseerd Eén centrale server met de enige officiële historie; gebruikers checken in en uit Subversion (SVN, sinds 2000), CVS Teams die vaste vergrendeling van binaire bestanden willen
Gedistribueerd Elke werkkopie is een volledige repository; wijzigingen worden uitgewisseld Git (2005, Linus Torvalds) Tekstgebaseerde code, scripts, IaC, IEC 61131-3 in tekstvorm
Industrieel (OT-specifiek) Centrale server die PLC-, HMI-, robot- en drive-projecten ophaalt, versioneert en vergelijkt met wat online draait octoplant van AMDT (voorheen versiondog en MDT AutoSave), FactoryTalk AssetCentre van Rockwell Automation Gemengde OT-omgevingen met veel merken en controllers

Versiebeheer bestaat al sinds SCCS begin jaren zeventig, gevolgd door RCS (1982) en CVS (1986). Git is ontstaan omdat de Linux-kernelgemeenschap in 2005 haar gratis licentie op het commerciële BitKeeper verloor. Het werd ontworpen voor snelheid en veel parallelle takken (branches).


🛠 Wat kunt u onder versiebeheer brengen?

  • PLC-code - ladderdiagram, Structured Text, functieblokken volgens IEC 61131
  • SCADA- en HMI-projecten - schermen, alarmdefinities, tags en recepten
  • Firmware-versies en instellingen van controllers, drives en veldapparaten
  • Netwerkconfiguraties - switch- en firewallconfiguraties, VLAN- en veldbusinstellingen
  • Scripts en automatiseringscode - Python, PowerShell, Ansible
  • Documentatie - functionele specificaties, I/O-lijsten, testprotocollen voor FAT en SAT

🔧 Hoe werkt versiebeheer met PLC- en SCADA-projecten?

Git en SVN zijn gebouwd voor tekstbestanden. Veel engineeringtools slaan projecten echter op als binaire of gecomprimeerde bestanden. Git kan die wel bewaren, maar kan niet laten zien wát er binnen het project veranderde. Leveranciers en gebruikers lossen dat op verschillende manieren op:

Platform Aanpak voor versiebeheer
Siemens TIA Portal Multiuser Engineering voor samenwerken; Version Control Interface om blokken als tekst/XML naar een externe tool als Git te exporteren
Rockwell Studio 5000 Export naar L5X (XML), vergelijken met de Compare-tool; centraal beheer via FactoryTalk AssetCentre
Beckhoff TwinCAT 3 Draait in Visual Studio; projectbestanden zijn XML en direct in Git te beheren
CODESYS Add-ons voor Git en SVN in de engineeringomgeving
Leveranciersonafhankelijk PLCopen XML, gestandaardiseerd als IEC 61131-10, voor uitwisseling en vergelijking

Een tweede verschil met IT: in OT kan iemand een programma direct in de controller wijzigen, bijvoorbeeld online editing tijdens een storing. Industriële versiebeheertools halen daarom periodiek automatisch het programma uit de controller en vergelijken dat met de laatst vrijgegeven versie. Elke afwijking levert een melding op.


🔐 Welke rol speelt versiebeheer in security en compliance?

Versiebeheer maakt u niet automatisch compliant, maar levert bewijs voor eisen uit meerdere normen:

Norm of regelgeving Relevante eis
ISO 9001:2015 Clausule 7.5.3.2 vraagt beheersing van wijzigingen in gedocumenteerde informatie, met versiebeheer als voorbeeld
ISO 27001:2022 Annex A 8.4 (toegang tot broncode), 8.9 (configuratiebeheer) en 8.32 (wijzigingsbeheer)
IEC 62443-3-3 SR 3.4 (software- en informatie-integriteit), SR 7.3 (back-up van het automatiseringssysteem) en SR 7.6 (netwerk- en securityconfiguratie)
IEC 61511 Wijzigingen aan een SIS alleen via een gepland en geautoriseerd Management of Change-proces
21 CFR Part 11 (FDA) §11.10(e): beveiligde, automatisch gegenereerde audit trails met tijdstempel; een wijziging mag eerdere gegevens niet onzichtbaar maken
EU GMP Annex 11 / GAMP 5 Wijzigings- en configuratiebeheer voor gevalideerde systemen; GAMP 5 Second Edition verscheen in juli 2022

Voor security is versiebeheer ook een detectiemiddel. Stuxnet, ontdekt in 2010, wijzigde code op Siemens S7-315- en S7-417-controllers en verborg die wijzigingen voor het engineeringstation dat de code uitlas. Een vergelijking die niet alleen op een mogelijk besmet engineeringstation vertrouwt, is daarom waardevol. Ook bij ransomware of een gecompromitteerde laptop van een leverancier is een betrouwbare, vrijgegeven versie de basis voor herstel. Daarom combineert u versiebeheer met back-ups, liefst onveranderbaar opgeslagen.


📋 Hoe richt u versiebeheer in een OT-omgeving in?

  1. Inventariseer alle controllers, HMI’s, drives en netwerkapparaten met hun projectbestanden; gebruik de asset-inventaris als basis.
  2. Kies een centrale repository: Git voor tekstgebaseerde code, een industriële tool voor gemengde merken en automatische vergelijking.
  3. Leg een baseline vast: haal van elke controller de huidige versie op en markeer die als uitgangspunt.
  4. Koppel aan wijzigingsbeheer: elke check-in verwijst naar een wijzigingsverzoek of werkorder.
  5. Plan automatische vergelijkingen: dagelijks of wekelijks online versus vrijgegeven, en direct na onderhoudsstops.
  6. Beperk rechten met RBAC: niet iedereen mag vrijgeven of naar productie laden.
  7. Test het herstel: laad periodiek een versie uit de repository in een testcontroller of simulatie.

Voor Nederlandse organisaties onder NIS2 (in Nederland de Cyberbeveiligingswet, van kracht sinds 15 augustus 2026) sluit dit aan op de zorgplicht voor beveiliging bij aanschaf, ontwikkeling en onderhoud van systemen.


❓ Veelgestelde vragen

Kan ik Git gebruiken voor PLC-programma’s?

Ja, Git kan PLC-programma’s opslaan, maar bij binaire projectbestanden ziet u alleen dát er iets veranderd is, niet wát. Exporteer daarom code naar tekst of XML (zoals L5X, PLCopen XML of TwinCAT-XML) of gebruik de versiebeheerkoppeling van de engineeringtool. Zo werkt de vergelijking van Git wel.

Wat is het verschil tussen versiebeheer en een back-up?

Een back-up is een kopie om na verlies of schade te herstellen. Versiebeheer bewaart de volledige historie met wie, wat, wanneer en waarom, en laat verschillen tussen versies zien. In OT heeft u beide nodig: versiebeheer voor gecontroleerde wijzigingen en back-ups voor herstel na een incident.

Hoe ontdek ik wijzigingen die rechtstreeks in de PLC zijn gedaan?

Wijzigingen die online in een PLC zijn gedaan, vindt u door het programma periodiek uit de controller op te halen en te vergelijken met de laatst vrijgegeven versie. Industriële versiebeheertools doen dit automatisch volgens een schema en melden afwijkingen. Sommige controllers registreren daarnaast een wijzigingsteller of checksum die u kunt bewaken.

Is versiebeheer verplicht voor GMP- of FDA-systemen?

Regelgeving zoals 21 CFR Part 11 en EU GMP Annex 11 schrijft geen specifiek versiebeheersysteem voor. Wel eisen ze aantoonbaar wijzigings- en configuratiebeheer en betrouwbare audit trails. Versiebeheer is in de praktijk de gangbare manier om dat bewijs voor gevalideerde systemen te leveren.

Wie moet toegang hebben tot de repository?

Leg toegang tot de repository vast op basis van rollen. Engineers mogen meestal inchecken, maar alleen aangewezen personen geven een versie vrij voor productie. Leveranciers krijgen bij voorkeur alleen toegang tot hun eigen project, via een gecontroleerde route.


📌 Samengevat

Version control legt elke wijziging aan PLC-, SCADA-, HMI- en netwerkconfiguraties vast, maakt verschillen zichtbaar en maakt snel herstel mogelijk. In OT betekent dat meer dan Git alleen. U heeft tools nodig die met projectbestanden van leveranciers kunnen werken en die regelmatig vergelijken wat er werkelijk in de controller draait.

Versiebeheer geeft u in OT aantoonbaar zicht op welke code uw installatie aanstuurt, wie die heeft gewijzigd en hoe u snel terugkeert naar een werkende versie.