Wat is OPC DA?
OPC DA (OPC Data Access) is de oorspronkelijke OPC-specificatie waarmee Windows-applicaties via Microsoft COM/DCOM actuele procesdata (waarde, tijdstempel en kwaliteit) lezen uit en schrijven naar industriële apparaten, ongeacht de leverancier. De OPC Foundation publiceerde Data Access 1.0 in 1996 om het driverprobleem in industriële automatisering op te lossen: in plaats van een eigen koppeling per PLC en per SCADA-pakket kwam er één standaardinterface. OPC DA is het bekendste lid van OPC Classic en draait nog in talloze legacy systemen in OT-omgevingen, al neemt OPC UA die rol steeds vaker over.
Binnen OT-convergentie is OPC DA vaak de laag waar procesdata voor het eerst leveranciersonafhankelijk beschikbaar komt, en daarmee een logisch beginpunt voor koppelingen met historians, MES en moderne dataplatformen.
🧠 Waar komt OPC DA vandaan en welke versies zijn er?
Halverwege de jaren negentig draaiden HMI- en SCADA-pakketten vrijwel allemaal op Windows. Een groep leveranciers koos daarom de Microsoft-technologie OLE/COM als basis, en de afkorting OPC stond oorspronkelijk voor OLE for Process Control. Sinds 2011 betekent OPC officieel Open Platform Communications. Data Access was de eerste en verreweg meest gebruikte specificatie; OPC HDA (historische data) en OPC A&E (alarmen en events) volgden later.
| Versie | Jaar | Belangrijkste vernieuwing |
|---|---|---|
| DA 1.0 / 1.0a | 1996 / 1997 | Custom COM-interface, synchroon lezen en schrijven; asynchroon verkeer via het oudere IDataObject/IAdviseSink-mechanisme |
| DA 2.0 - 2.05a | vanaf 1998 | Automation-interface (o.a. voor Visual Basic), nieuwe asynchrone interface met connection points en OnDataChange-callbacks, beter browsen |
| DA 3.0 | 2003 | Schrijven van waarde, kwaliteit en tijdstempel samen, reads met MaxAge, keep-alive per groep, verbeterd deadbandbeheer en foutmeldingen |
Een DA 2.0-client werkt met een DA 3.0-server, maar gebruikt dan alleen de 2.0-functies. Omgekeerd werkt een DA 3.0-client niet altijd met een oude DA 1.0-server, omdat die de callback-interfaces van versie 2.0 (IOPCDataCallback) mist. In de praktijk ondersteunen de meeste servers en clients DA 2.05a en 3.0 naast elkaar.
🔧 Hoe is OPC DA opgebouwd?
OPC DA volgt een client-serverarchitectuur. De keten ziet er typisch zo uit: PLC of veldapparaat → OPC DA-server → (COM lokaal of DCOM over het netwerk) → OPC DA-client zoals SCADA of historian.
| Component | Functie | Voorbeeld |
|---|---|---|
| Device driver | Spreekt het eigen protocol van het apparaat | S7 Comm-driver voor een Siemens-PLC |
| OPC DA-server | Vertaalt apparaatdata naar de standaard OPC-interface en houdt een cache bij | Kepware KEPServerEX, SIMATIC NET |
| Groep | Verzameling items met eigen update rate, deadband en actief/inactief-status | Groep “Lijn3_Snel” met 500 ms |
| Item | Verbinding met één datapunt via een Item ID | Lijn3.Motor.Snelheid |
| OPC DA-client | Leest, schrijft of abonneert zich | SCADA, HMI, Historian |
Elke server registreert zich in Windows met een ProgID en een CLSID, en de service OpcEnum geeft clients een lijst van geïnstalleerde servers. Een client bladert vervolgens door de adresruimte van de server en voegt de gewenste tags als items toe aan een of meer groepen. Belangrijk detail: een item is niet de data zelf, maar een verbinding met de databron.
Draaien client en server op dezelfde computer, dan loopt alles via COM en is er geen netwerkverkeer. Staan ze op verschillende computers, dan gebruikt OPC DA DCOM: eerst TCP-poort 135 voor de RPC Endpoint Mapper, daarna een dynamische poort (sinds Windows Vista en Server 2008 standaard 49152-65535). Bij subscriptions wordt de client bovendien zelf aangeroepen door de server, zodat er verkeer in beide richtingen loopt.
🔄 Hoe wisselt OPC DA data uit?
OPC DA kent drie manieren om data te lezen, plus synchroon of asynchroon schrijven. De keuze bepaalt de belasting van het netwerk en van de PLC.
| Methode | Werking | Wanneer gebruiken |
|---|---|---|
| Synchroon lezen uit cache | De client krijgt direct de laatst bekende waarde uit de servercache | Snelle opvraag, mag iets verouderd zijn |
| Synchroon of asynchroon lezen van device | De server haalt de waarde direct uit het apparaat | Controle vóór een kritieke actie; zwaar bij veel items |
| Subscription (OnDataChange) | De server stuurt per groep alleen gewijzigde waarden via een callback | Continue monitoring en trending; de standaard voor SCADA |
| Schrijven | Synchroon of asynchroon een waarde naar het item | Setpoints en commando’s |
Bij subscriptions regelen twee groepsinstellingen het gedrag:
- Update rate - het snelste interval in milliseconden waarop de server wijzigingen voor die groep meldt. Gangbaar zijn 250-1.000 ms voor schermen en 1-10 seconden voor rapportage- of historiandata.
- Percent deadband - geldt voor analoge items met een meetbereik: een wijziging wordt pas gemeld als die groter is dan het percentage van het bereik. Bij een bereik van 0-200 °C en een deadband van 0,5% wordt een temperatuursprong pas vanaf 1 °C doorgegeven.
DA 3.0 voegde MaxAge toe: de client geeft aan hoe oud een waarde maximaal mag zijn. MaxAge 0 betekent altijd van het apparaat lezen, de maximale waarde betekent altijd uit de cache. Met keep-alive meldt een DA 3.0-server zich ook als er niets verandert, zodat een client een stille verbinding van een verbroken verbinding kan onderscheiden.
🧠 Wat betekenen waarde, tijdstempel en kwaliteit?
Elk OPC DA-item levert drie velden, vaak afgekort als VQT: value (een Windows VARIANT, dus integer, float, boolean, string of array), quality en timestamp (in UTC). Juist de kwaliteit maakt OPC DA geschikt voor realtime procesbewaking: een operator ziet niet alleen een getal, maar ook of dat getal te vertrouwen is.
De kwaliteit is een byte met de opbouw QQSSSSLL: twee bits voor de hoofdstatus, vier voor de substatus en twee voor limietinformatie.
| Code (hex) | Betekenis | Typische oorzaak |
|---|---|---|
| 0xC0 | Good | Waarde actueel en betrouwbaar |
| 0xD8 | Good - local override | Waarde handmatig overschreven |
| 0x40 | Uncertain | Kwaliteit twijfelachtig |
| 0x44 | Uncertain - last usable value | Bron levert geen updates meer |
| 0x00 | Bad | Niet gespecificeerde fout |
| 0x08 | Bad - not connected | Item niet geconfigureerd of verbonden |
| 0x18 | Bad - comm failure | Communicatie met PLC of IO verbroken |
| 0x1C | Bad - out of service | Item of groep inactief |
Een goede SCADA- of historianconfiguratie toont slechte kwaliteit zichtbaar aan de operator en slaat de kwaliteit mee op, zodat analyses achteraf geen ongeldige waarden als echte metingen behandelen.
🏭 Waar wordt OPC DA gebruikt?
OPC DA werd de standaardinterface tussen besturingen en Windows-software. De server verzorgt de protocolvertaling naar het onderliggende netwerk:
| Onderliggend protocol | Typische toepassing |
|---|---|
| Modbus en Modbus TCP | PLC’s, energiemeters, frequentieregelaars |
| Profibus en ProfiNET | Siemens-gebaseerde installaties |
| Ethernet IP | Allen-Bradley-besturingen |
| S7 Comm | Siemens S7-PLC’s |
| BACnet | Gebouwautomatisering en HVAC |
Bekende serverproducten zijn KEPServerEX van Kepware (een multiprotocolserver met een grote driverbibliotheek), SIMATIC NET van Siemens, OPC Factory Server van Schneider Electric, de MatrikonOPC-servers en RSLinx Classic van Rockwell Automation. Aan de clientkant ondersteunen vrijwel alle SCADA-pakketten van die generatie OPC DA, zoals WinCC.
Typische toepassingen:
- Procesindustrie en productie - SCADA-schermen, alarmbeheer en datacollectie voor de historian
- Energie en water - pompstations, onderstations en telemetrie via een centrale SCADA
- Koppeling naar IT - MES- en ERP-systemen halen productiedata meestal indirect op via een historian of gateway die zelf OPC DA leest
- Edge en cloud - gateways op een edge-computer lezen OPC DA en publiceren naar MQTT of een Unified Namespace
- Labs en simulatie - OPC DA-simulatieservers zijn nog veel in gebruik voor training en het testen van clients
In het Purdue Model zitten OPC DA-servers en -clients meestal op niveau 2 en 3, binnen het procesnetwerk.
🔐 Welke risico’s en beperkingen heeft OPC DA?
OPC DA is ontworpen voor gesloten netwerken en heeft geen eigen beveiligingsmodel. Alles hangt af van Windows en DCOM, wat de cybersecurity van veel installaties zwak maakt:
- Lastige firewalls - poort 135 plus een groot dynamisch bereik, en callbacks in de richting van de client
- Zwakke configuraties - leveranciershandleidingen adviseerden lang authenticatieniveau None en rechten voor Everyone, waardoor iedereen op het netwerk de server kon bedienen
- Geen versleuteling in de praktijk - DCOM kan met Packet Privacy versleutelen, maar in OPC-installaties stond het niveau zelden zo hoog
- Verouderde hosts - OPC-servers draaien vaak op Windows-versies zonder updates, wat patchmanagement bemoeilijkt
- Gericht misbruik - de Havex-malware (2013-2014) zocht actief naar OPC-servers in netwerken, en Industroyer (Oekraïne, 2016) bevatte een OPC DA-component
Met de DCOM-hardening KB5004442 (CVE-2021-26414) eist Microsoft voor activatie minimaal Packet Integrity: optioneel sinds juni 2021, standaard aan sinds 14 juni 2022 en niet meer uit te schakelen sinds 14 maart 2023. OPC DA-clients op ongepatchte of verouderde Windows-versies verliezen daardoor de verbinding met een bijgewerkte remote server.
🛠️ Hoe beheert en migreert u OPC DA in de praktijk?
Een realistische aanpak combineert hardening van wat er draait met een geleidelijke overstap:
- Inventariseer alle OPC DA-servers, clients en netwerkstromen in uw asset-inventaris, inclusief DA-versie en Windows-versie.
- Houd DCOM lokaal - zet client en server op dezelfde machine of gebruik een OPC-tunneller die DCOM vervangt door één vaste, bij voorkeur versleutelde TCP-verbinding.
- Beperk DCOM - perk het dynamische poortbereik in, verwijder anonieme toegang, gebruik aparte serviceaccounts met minimale rechten.
- Segmenteer - plaats OPC-verkeer volgens IEC 62443 in een eigen zone met conduits, pas netwerksegmentatie toe met een industriële firewall en laat data naar IT via een DMZ of datadiode lopen.
- Bewaak DCOM-verkeer met logging en security monitoring; onverwachte verbindingen naar poort 135 kunnen op laterale beweging wijzen.
- Migreer bij vervanging van SCADA of historian naar native OPC UA, en gebruik tussentijds een DA-naar-UA-wrapper of gateway.
Voor Nederlandse organisaties onder de Cyberbeveiligingswet (van kracht sinds 15 augustus 2026) helpt deze aanpak om aan te tonen dat de bekende risico’s van legacy OT-koppelingen passend zijn beheerst. NIST SP 800-82 en het NIST CSF bieden aanvullende handvatten, en ISA-95 helpt bij het positioneren van de integratie tussen procesbesturing en bedrijfssystemen.
📡 Wat is het verschil tussen OPC DA en OPC UA?
OPC UA (IEC 62541) is de platformonafhankelijke opvolger en integreert de functies van DA, HDA en A&E in één architectuur.
| Eigenschap | OPC DA | OPC UA |
|---|---|---|
| Technologie | COM/DCOM | Eigen protocolstack, onafhankelijk van COM |
| Platform | Alleen Windows | Windows, Linux, embedded en cloud |
| Netwerk | TCP 135 plus dynamische poorten | Eén poort (standaard 4840), ook HTTPS en PubSub |
| Beveiliging | Afhankelijk van Windows/DCOM-instellingen | Certificaten, versleuteling en gebruikersauthenticatie ingebouwd |
| Datamodel | Tags in een naamruimte met VQT, zonder typemodel | Objectgeoriënteerd informatiemodel |
| Status | Legacy, geen nieuwe ontwikkeling | Actieve standaard |
❓ Veelgestelde vragen
Waar staat OPC DA voor?
OPC DA staat voor OPC Data Access, waarbij OPC oorspronkelijk OLE for Process Control betekende en sinds 2011 Open Platform Communications. OPC DA is de specificatie voor het lezen en schrijven van actuele procesdata. Historische data en alarmen vallen onder de aparte specificaties OPC HDA en OPC A&E.
Wordt OPC DA nog gebruikt?
OPC DA wordt nog veel gebruikt in bestaande SCADA-, historian- en HMI-installaties, vooral in procesindustrie, energie en water. De OPC Foundation ontwikkelt de specificatie niet verder en nieuwe projecten kiezen voor OPC UA. Bestaande OPC DA-koppelingen blijven werken zolang de Windows-hosts en DCOM-instellingen goed worden beheerd.
Werkt OPC DA op Linux?
OPC DA werkt niet native op Linux, omdat de specificatie gebouwd is op Microsoft COM/DCOM; een OPC DA-server draait altijd op Windows. Om OPC DA-data op Linux te gebruiken, plaatst u meestal een gateway of wrapper op een Windows-machine die de data aanbiedt via OPC UA of MQTT. Voor nieuwe Linux-toepassingen is OPC UA de logische keuze.
Wat is de update rate in OPC DA?
De update rate in OPC DA is het interval in milliseconden waarop een OPC DA-server wijzigingen van een groep items aan de client meldt. Een lagere update rate geeft snellere schermen, maar belast server, netwerk en PLC zwaarder. Combineer de update rate met een deadband om onnodige meldingen van kleine schommelingen te voorkomen.
Wat betekent een bad quality in OPC DA?
Een bad quality in OPC DA betekent dat de waarde van een item niet betrouwbaar is, bijvoorbeeld omdat de communicatie met de PLC is verbroken (0x18) of het item niet verbonden is (0x08). De server levert dan vaak nog een getal, maar dat mag niet als echte meting worden gebruikt. SCADA- en historiansystemen horen bad quality zichtbaar te maken en mee op te slaan.
Hoe koppel ik OPC DA aan OPC UA?
OPC DA koppelt u aan OPC UA met een wrapper, die een bestaande OPC DA-server als OPC UA-server aanbiedt, of met een proxy, waarmee een oude OPC DA-client data uit een OPC UA-server leest. Veel multiprotocolservers en edge-gateways bieden beide functies. Zo kunt u stap voor stap migreren zonder alle systemen tegelijk te vervangen.
📌 Samengevat
OPC DA is de op COM/DCOM gebaseerde OPC-specificatie die sinds 1996 actuele procesdata met waarde, tijdstempel en kwaliteit leveranciersonafhankelijk beschikbaar maakt voor Windows-software.
OPC DA loste het driverprobleem tussen PLC’s en SCADA op en vormt nog de ruggengraat van veel OT-installaties. Groepen, update rates, deadbands en kwaliteitscodes maken het een volwassen realtime interface, maar de Windows-binding, de lastige DCOM-configuratie en het ontbreken van ingebouwde beveiliging maken het een legacytechnologie. Beheer bestaande koppelingen met segmentatie, tunnels en hardening, en plan de overstap naar OPC UA.
