Wat is OPC HDA?

OPC HDA (OPC Historical Data Access) is een specificatie van de OPC Foundation waarmee clientsoftware via Microsoft COM/DCOM gestandaardiseerd historische, van een tijdstempel voorziene procesdata opvraagt uit een historian of andere archiefbron, als ruwe waarden, geïnterpoleerde waarden of berekende aggregaten. Waar OPC DA de actuele waarde van een tag levert, beantwoordt OPC HDA vragen als “wat was de gemiddelde temperatuur per uur over de afgelopen week?“. De standaard hoort bij de familie OPC Classic en zit nog in veel OT-omgevingen tussen historians, SCADA-trendschermen, rapportagetools en analysesoftware. Voor nieuwe koppelingen is de opvolger OPC UA Historical Access, onderdeel van OPC UA, de logische keuze.


🧠 Waar komt OPC HDA vandaan en welke versie is actueel?

Na de eerste OPC-specificatie in 1996 bleek snel dat industriële automatisering niet alleen behoefte had aan live data, maar ook aan uniforme toegang tot procesgeschiedenis. Elke historianleverancier had een eigen API, zodat een rapportagetool voor elk merk een aparte koppeling nodig had. De OPC Foundation ontwikkelde daarom naast Data Access een aparte specificatie voor historische data, met hetzelfde client/server-model en dezelfde COM-basis, maar met eigen interfaces.

Specificatie Laatste versie Datum Functie
OPC DA (Data Access) 3.00 maart 2003 Actuele waarden lezen en schrijven
OPC A&E (Alarms & Events) 1.10 oktober 2002 Alarmen en gebeurtenissen
OPC HDA (Historical Data Access) 1.20 december 2003 Historische waarden, aggregaten en annotaties

Versie 1.20 is de laatste uitgave. De OPC Foundation markeert de specificatie als afgerond en niet meer onderhouden; alleen leden kunnen het document downloaden. Er komen dus geen nieuwe functies of beveiligingsverbeteringen meer bij, wat de positie van OPC HDA als legacytechnologie bevestigt.


🔧 Hoe werkt OPC HDA technisch?

Een OPC HDA-server is een COM-object dat de historian-leverancier meelevert. Clients zoals een trendapplicatie, Excel-add-in of analysepakket verbinden lokaal via COM of over het netwerk via DCOM. De architectuur is een klassiek client/server-model, net als bij OPC DA. De specificatie verdeelt de functionaliteit over een reeks interfaces:

Interface Functie
IOPCHDA_Server Verbinding, status, lijsten van ondersteunde aggregaten en attributen
IOPCHDA_Browser Bladeren door de beschikbare items (tags)
IOPCHDA_SyncRead / AsyncRead Historie lezen, synchroon of met callback
IOPCHDA_SyncUpdate / AsyncUpdate Waarden toevoegen, vervangen of verwijderen
IOPCHDA_SyncAnnotations / AsyncAnnotations Opmerkingen bij datapunten lezen en schrijven
IOPCHDA_Playback Historie afspelen als een datastroom

Alleen de server- en synchrone leesfunctionaliteit vormen de basis; schrijven, annotaties en playback zijn optionele uitbreidingen die niet elke server ondersteunt.

De leesinterface kent vijf kernmethoden:

  • ReadRaw - de werkelijk opgeslagen waarden tussen een starttijd (inclusief) en eindtijd (exclusief), optioneel met de grenswaarden net buiten het interval
  • ReadProcessed - per deelinterval een berekend aggregaat, bijvoorbeeld het tijdgewogen gemiddelde per minuut over het laatste uur
  • ReadAtTime - waarden op opgegeven tijdstippen; ontbreekt daar een opgeslagen waarde, dan interpoleert de server
  • ReadModified - waarden zoals ze waren vóór een latere correctie, belangrijk voor audits
  • ReadAttribute - metadata van een item door de tijd heen

Elke waarde komt terug als drietal van tijdstempel, waarde en kwaliteit. Naast de gewone OPC-kwaliteit kent HDA eigen kwaliteitsvlaggen, zoals raw, interpolated, calculated, no data en partial (een onvolledig laatste deelinterval). Tijden mogen absoluut of relatief worden opgegeven, bijvoorbeeld NOW-1D voor 24 uur geleden of DAY-1D+7H voor gisteren 07:00. Dat relatieve formaat leeft voort in OPC UA.


📊 Welke aggregaten en attributen kent OPC HDA?

De kracht van OPC HDA zit in de aggregaten: de server rekent zelf, zodat niet miljoenen ruwe punten over het netwerk hoeven. De specificatie definieert 24 standaardaggregaten:

Groep Aggregaten Typisch gebruik
Gemiddelden en totalen AVERAGE, TIMEAVERAGE, TOTAL, COUNT Uurgemiddelden, debiettotalen, dagrapporten
Extremen MINIMUM, MAXIMUM, MINIMUMACTUALTIME, MAXIMUMACTUALTIME, RANGE Piekwaarden met het moment waarop ze optraden
Begin, eind en verschil START, END, DELTA, INTERPOLATIVE Tellerstanden, gelijk uitgelijnde datasets
Statistiek STDEV, VARIANCE, REGSLOPE, REGCONST, REGDEV Procesvariatie en trends
Datakwaliteit DURATIONGOOD, DURATIONBAD, PERCENTGOOD, PERCENTBAD, WORSTQUALITY Betrouwbaarheid van de meting zelf
Context ANNOTATIONS Aantal operatoropmerkingen per interval

Leveranciers mogen eigen aggregaten toevoegen, maar het gedrag daarvan (bijvoorbeeld of de waarde op de grens van een interval meetelt) kan afwijken. Controleer dat bij rapportages die u tussen systemen vergelijkt.

Per item levert de server attributen zoals DATA_TYPE, DESCRIPTION, ENG_UNITS, NORMAL_MAXIMUM en NORMAL_MINIMUM, STEPPED (trapvormige of lineaire interpolatie), ARCHIVING en EXCEPTION_DEV. Een HDA-client weet daardoor hoe hij een trend moet tekenen zonder kennis van de interne historianstructuur.


🔄 Wat is het verschil tussen OPC DA en OPC HDA?

Eigenschap OPC DA OPC HDA
Gegevens Actuele waarde per tag Archief van waarden in een tijdreeks
Interactie Subscriptions en cyclisch lezen Query met tijdsinterval
Typische bron PLC-driver, OPC-server Historian of tijdreeksdatabase
Typische client SCADA, HMI Trendtool, rapportage, analyse
Bewerkingen Lezen en schrijven van procesvariabelen Lezen, aggregeren, annoteren, historie corrigeren

In de praktijk werken ze samen: de historian verzamelt via OPC DA of een eigen protocol zoals Modbus TCP, S7 Comm, Ethernet IP of BACnet, en biedt de opgeslagen data via OPC HDA aan. De historian abstraheert daarmee de protocolverschillen. Compressie, zoals deadband- of swinging-door-algoritmen, gebeurt binnen de historian; OPC HDA levert de opgeslagen punten en laat de server interpoleren waar nodig.


🏭 Waar wordt OPC HDA in de praktijk gebruikt?

Veel gangbare historians bieden of boden een OPC HDA-server, zoals de PI OPC HDA Server van OSIsoft PI (tegenwoordig AVEVA PI System), AVEVA Historian (voorheen Wonderware) en GE Proficy Historian, die HDA 1.20 ondersteunt. Typische toepassingen:

In gereguleerde omgevingen zoals de farmaceutische industrie (GMP, 21 CFR Part 11) is ReadModified relevant: de oorspronkelijke waarde blijft opvraagbaar na een correctie, wat de data-integriteit en compliance ondersteunt.


🔐 Welke beveiligingsrisico’s heeft OPC HDA?

OPC HDA werd ontworpen voor vertrouwde, geïsoleerde netwerken, lang voordat cybersecurity in OT een thema was, en erft alle zwaktes van DCOM. De verbinding start op TCP-poort 135 en schakelt dan naar een dynamische poort, sinds Windows Vista en Server 2008 standaard tussen 49152 en 65535. Dat maakt het lastig om HDA-verkeer door een firewall te sturen en verklaart waarom oude installaties vaak met ruime poortbereiken en zwakke rechten zijn opgezet.

Risico Gevolg Maatregel
Dynamische RPC-poorten Brede firewallregels tussen zones Poortbereik inperken of een tunneller/gateway gebruiken
Versleuteling optioneel DCOM kan Packet Privacy gebruiken, maar dat staat vaak uit Hoogste authenticatieniveau afdwingen of verkeer in een tunnel
Zwakke rechten Accounts als Everyone in dcomcnfg Dedicated serviceaccounts en least privilege
Verouderde Windows Ongepatchte historians en clients Patchmanagement en isolatie van legacysystemen
Schrijfinterfaces SyncUpdate kan historie wijzigen of wissen Alleen-lezen toegang voor rapportageclients

Sinds Microsoft-update KB5004442 (CVE-2021-26414) op 14 maart 2023 definitief werd afgedwongen, weigeren bijgewerkte servers DCOM-verbindingen onder het niveau Packet Integrity. Oude HDA-clients op Windows XP of ongepatchte systemen verliezen daardoor hun verbinding. Historische procesdata verraadt bovendien productievolumes en procesinstellingen, dus behandel ze als vertrouwelijke bedrijfsinformatie.


🛠️ Hoe migreert u van OPC HDA naar OPC UA Historical Access?

OPC UA Historical Access (deel 11 van de OPC UA-specificatie) biedt vergelijkbare functies via de HistoryRead- en HistoryUpdate-services; de aggregaten staan in deel 13. Een praktische aanpak:

  1. Inventariseer alle HDA-clients en -servers, inclusief Excel-macro’s en rapportagescripts die vaak vergeten worden.
  2. Leg vast welke aggregaten, intervallen en tijdsformaten elk rapport gebruikt, zodat u de uitkomsten na migratie kunt vergelijken.
  3. Kies een route - een native OPC UA-server op de historian, of tijdelijk een COM-wrapper of gateway die HDA naar OPC UA vertaalt, zodat DCOM binnen één machine blijft.
  4. Segmenteer volgens het Purdue Model en IEC 62443: plaats een replica van de historian in de DMZ of IDMZ en laat IT-clients alleen die replica bevragen via een industriële firewall.
  5. Valideer de resultaten parallel: aggregaten zoals TIMEAVERAGE kunnen per implementatie licht verschillen in grensafhandeling.
  6. Monitor en log de nieuwe koppeling via logging en security monitoring en schakel de oude DCOM-regels pas daarna uit.

Moderne architecturen voegen daar vaak een Unified Namespace op basis van MQTT aan toe. Live data stroomt dan als events naar afnemers, terwijl de historian de rol van geheugen houdt. Dat past bij ISA-95 en bij OT-convergentie, waarin cloud-analyses dezelfde data gebruiken als de fabrieksvloer. Hardeningrichtlijnen uit NIST SP 800-82 en NIST CSF helpen bij het afbouwen van het restrisico; zie ook hardening en netwerksegmentatie. Wie onder de Cyberbeveiligingswet valt, moet zulke legacykoppelingen bovendien meenemen in de risicobeoordeling.


❓ Veelgestelde vragen

Wordt OPC HDA nog ondersteund?

OPC HDA 1.20 uit december 2003 is de laatste versie; de OPC Foundation onderhoudt de specificatie niet meer. Veel historians leveren nog wel een OPC HDA-server mee voor bestaande koppelingen. Voor nieuwe projecten is OPC UA Historical Access de aanbevolen opvolger.

Kan OPC HDA data wijzigen of alleen lezen?

OPC HDA kan ook schrijven via de optionele interfaces SyncUpdate en AsyncUpdate, waarmee een client waarden toevoegt, vervangt of verwijdert. Veel servers ondersteunen dat niet of beperken het tot specifieke accounts. Geef rapportageclients bij OPC HDA daarom alleen leesrechten.

Wat is het verschil tussen ReadRaw en ReadProcessed in OPC HDA?

ReadRaw levert de werkelijk opgeslagen punten in een tijdsinterval, met per item eigen tijdstempels. ReadProcessed laat de OPC HDA-server per deelinterval een aggregaat berekenen, zoals een tijdgewogen gemiddelde per minuut. Dat levert gelijk uitgelijnde reeksen op en veel minder netwerkverkeer.

Werkt OPC HDA zonder DCOM?

Binnen één computer gebruikt OPC HDA gewoon COM zonder netwerk. Voor verbindingen tussen computers is DCOM nodig, of een tunneller of OPC UA-wrapper die het verkeer omzet naar een firewallvriendelijk protocol. Die laatste aanpak voorkomt brede DCOM-poortbereiken tussen netwerkzones.

Ondersteunt OPC UA alle functies van OPC HDA?

Grotendeels: OPC UA Historical Access dekt ruwe, geïnterpoleerde en bewerkte historie, correcties en annotaties, en deel 13 definieert de aggregaten. Een directe tegenhanger van de HDA-playbackinterface ontbreekt, tags worden nodes in een informatiemodel en de grensafhandeling van aggregaten kan iets verschillen. Vergelijk daarom rapportuitkomsten van OPC HDA en OPC UA voordat u overstapt.

Is OPC HDA een tijdreeksdatabase?

Nee, OPC HDA is alleen een interface; de data staat in een historian of tijdreeksdatabase daarachter. De OPC HDA-server vertaalt de interne opslag naar gestandaardiseerde methoden en aggregaten. Compressie en opslagbeheer blijven de verantwoordelijkheid van de historian zelf.


📌 Samengevat

OPC HDA gaf historians, SCADA-systemen en analysetools een gemeenschappelijke taal voor procesgeschiedenis: ruwe waarden, aggregaten, annotaties en correcties via vaste COM-interfaces. De specificatie staat sinds versie 1.20 uit 2003 stil en leunt op DCOM, wat haar lastig te beveiligen maakt. In bestaande OT-omgevingen draait ze nog jaren mee, maar segmentatie, alleen-lezen toegang en een geplande migratie naar OPC UA zijn verstandig.

OPC HDA is de afgeronde OPC Classic-standaard voor historische procesdata; houd bestaande koppelingen goed afgeschermd en kies voor nieuwe toepassingen OPC UA Historical Access.