What is OPC HDA?
OPC HDA (OPC Historical Data Access) is an OPC Foundation specification that lets client software retrieve historical, timestamped process data from a historian or other archive in a standardised way over Microsoft COM/DCOM, as raw values, interpolated values or calculated aggregates. Where OPC DA delivers the current value of a tag, OPC HDA answers questions such as βwhat was the hourly average temperature over the past week?β. The standard belongs to the OPC Classic family and still sits in many OT environments between historians, SCADA trend displays, reporting tools and analytics software. For new integrations, its successor OPC UA Historical Access, part of OPC UA, is the logical choice.
π§ Where does OPC HDA come from and which version is current?
After the first OPC specification appeared in 1996, it quickly became clear that industrial automation needed more than live data: it also needed uniform access to process history. Every historian vendor had its own API, so a reporting tool required a separate integration for each brand. The OPC Foundation therefore developed a dedicated specification for historical data alongside Data Access, using the same client/server model and COM foundation but with its own interfaces.
| Specification | Final version | Date | Purpose |
|---|---|---|---|
| OPC DA (Data Access) | 3.00 | March 2003 | Reading and writing current values |
| OPC A&E (Alarms & Events) | 1.10 | October 2002 | Alarms and events |
| OPC HDA (Historical Data Access) | 1.20 | December 2003 | Historical values, aggregates and annotations |
Version 1.20 is the final release. The OPC Foundation marks the specification as complete and no longer maintained, and only members can download the document. No new features or security improvements will therefore be added, which confirms the position of OPC HDA as a legacy technology.
π§ How does OPC HDA work technically?
An OPC HDA server is a COM object supplied by the historian vendor. Clients such as a trend application, an Excel add-in or an analytics package connect locally through COM or across the network through DCOM. The architecture is a classic client/server model, just like OPC DA. The specification divides its functionality over a set of interfaces:
| Interface | Function |
|---|---|
| IOPCHDA_Server | Connection, status, lists of supported aggregates and attributes |
| IOPCHDA_Browser | Browsing the available items (tags) |
| IOPCHDA_SyncRead / AsyncRead | Reading history, synchronously or with a callback |
| IOPCHDA_SyncUpdate / AsyncUpdate | Inserting, replacing or deleting values |
| IOPCHDA_SyncAnnotations / AsyncAnnotations | Reading and writing notes attached to data points |
| IOPCHDA_Playback | Replaying history as a data stream |
The server and synchronous read functionality form the core; writing, annotations and playback are optional extensions that not every server supports.
The read interface has five core methods:
- ReadRaw - the values actually stored between a start time (inclusive) and an end time (exclusive), optionally including the bounding values just outside the interval
- ReadProcessed - a calculated aggregate per sub-interval, for example the time-weighted average per minute over the last hour
- ReadAtTime - values at specified timestamps; if no stored value exists there, the server interpolates
- ReadModified - values as they were before a later correction, important for audits
- ReadAttribute - an itemβs metadata over time
Every value comes back as a triple of timestamp, value and quality. In addition to the normal OPC quality,
HDA has its own quality flags, such as raw, interpolated, calculated, no
data and partial (an incomplete final sub-interval). Times can be given as absolute or
relative values, for example NOW-1D for 24 hours ago or DAY-1D+7H for 07:00
yesterday. That relative format lives on in OPC UA.
π Which aggregates and attributes does OPC HDA define?
The strength of OPC HDA lies in its aggregates: the server does the calculation, so millions of raw points do not have to cross the network. The specification defines 24 standard aggregates:
| Group | Aggregates | Typical use |
|---|---|---|
| Averages and totals | AVERAGE, TIMEAVERAGE, TOTAL, COUNT | Hourly averages, flow totals, daily reports |
| Extremes | MINIMUM, MAXIMUM, MINIMUMACTUALTIME, MAXIMUMACTUALTIME, RANGE | Peak values with the moment they occurred |
| Start, end and difference | START, END, DELTA, INTERPOLATIVE | Counter readings, aligned datasets |
| Statistics | STDEV, VARIANCE, REGSLOPE, REGCONST, REGDEV | Process variation and trends |
| Data quality | DURATIONGOOD, DURATIONBAD, PERCENTGOOD, PERCENTBAD, WORSTQUALITY | Reliability of the measurement itself |
| Context | ANNOTATIONS | Number of operator notes per interval |
Vendors may add their own aggregates, but their behaviour (for example whether a value on an interval boundary is included) can differ. Check this when you compare reports across systems.
For each item, the server provides attributes such as DATA_TYPE, DESCRIPTION, ENG_UNITS, NORMAL_MAXIMUM and NORMAL_MINIMUM, STEPPED (stepped or linear interpolation), ARCHIVING and EXCEPTION_DEV. An HDA client therefore knows how to draw a trend without any knowledge of the historianβs internal structure.
π What is the difference between OPC DA and OPC HDA?
| Property | OPC DA | OPC HDA |
|---|---|---|
| Data | Current value per tag | Archive of values in a time series |
| Interaction | Subscriptions and cyclic reads | Query over a time interval |
| Typical source | PLC driver, OPC server | Historian or time series database |
| Typical client | SCADA, HMI | Trend tool, reporting, analytics |
| Operations | Reading and writing process variables | Reading, aggregating, annotating, correcting history |
In practice they work together: the historian collects real-time data through OPC DA or a native protocol such as Modbus TCP, S7 Comm, Ethernet IP or BACnet, and exposes the stored data through OPC HDA. The historian thereby abstracts the protocol differences. Compression, such as deadband or swinging door algorithms, happens inside the historian; OPC HDA delivers the stored points and lets the server interpolate where needed.
π Where is OPC HDA used in practice?
Many common historians offer or have offered an OPC HDA server, such as the PI OPC HDA Server for OSIsoft PI (now the AVEVA PI System), AVEVA Historian (formerly Wonderware) and GE Proficy Historian, which supports HDA 1.20. Typical applications:
- Manufacturing - batch analysis, OEE trending, quality analytics and KPI reporting for MES and ERP
- Energy - load trends, turbine history and energy optimisation
- Water - flow history, pump monitoring and regulatory reporting on treatment performance
- Building Automation - HVAC analysis and energy management
- Analytics - training data for machine learning, anomaly detection and predictive maintenance
In regulated environments such as the pharmaceutical industry (GMP, 21 CFR Part 11), ReadModified matters: the original value remains retrievable after a correction, which supports data integrity and compliance.
π What security risks does OPC HDA carry?
OPC HDA was designed for trusted, isolated networks long before cybersecurity was an issue in OT, and it inherits all the weaknesses of DCOM. A connection starts on TCP port 135 and then switches to a dynamic port, by default between 49152 and 65535 since Windows Vista and Server 2008. That makes it hard to route HDA traffic through a firewall and explains why older installations were often set up with wide port ranges and weak permissions.
| Risk | Consequence | Measure |
|---|---|---|
| Dynamic RPC ports | Broad firewall rules between zones | Restrict the port range or use a tunneller/gateway |
| Optional encryption | DCOM can use Packet Privacy, but it is often disabled | Enforce the highest authentication level or tunnel the traffic |
| Weak permissions | Accounts such as Everyone in dcomcnfg |
Dedicated service accounts and least privilege |
| Outdated Windows | Unpatched historians and clients | Patch management and isolation of legacy systems |
| Write interfaces | SyncUpdate can modify or delete history | Read-only access for reporting clients |
Since Microsoft update KB5004442 (CVE-2021-26414) became fully enforced on 14 March 2023, updated servers reject DCOM connections below the Packet Integrity level. Old HDA clients on Windows XP or unpatched systems lose their connection as a result. Historical process data also reveals production volumes and process settings, so treat it as confidential business information.
π οΈ How do you migrate from OPC HDA to OPC UA Historical Access?
OPC UA Historical Access (part 11 of the OPC UA specification) offers comparable functions through the HistoryRead and HistoryUpdate services; the aggregates are defined in part 13. A practical approach:
- Inventory all HDA clients and servers, including the Excel macros and reporting scripts that are often forgotten.
- Record which aggregates, intervals and time formats each report uses, so you can compare the results after migration.
- Choose a route - a native OPC UA server on the historian, or temporarily a COM wrapper or gateway that translates HDA into OPC UA, so DCOM stays within a single machine.
- Segment according to the Purdue Model and IEC 62443: place a historian replica in the DMZ or IDMZ and let IT clients query only that replica through an industrial firewall.
- Validate the results in parallel: aggregates such as TIMEAVERAGE can differ slightly between implementations in how they handle boundaries.
- Monitor and log the new connection with logging and security monitoring, and remove the old DCOM rules only after that.
Modern architectures often add a Unified Namespace based on MQTT. Live data then flows as events to consumers, while the historian remains the memory. That fits ISA-95 and OT convergence, in which cloud analytics use the same data as the plant floor. Hardening guidance from NIST SP 800-82 and the NIST CSF helps reduce the remaining risk; see also hardening and network segmentation. Organisations covered by the Dutch Cybersecurity Act should also include such legacy connections in their risk assessment.
β Frequently asked questions
Is OPC HDA still supported?
OPC HDA 1.20 from December 2003 is the final version, and the OPC Foundation no longer maintains the specification. Many historians still ship an OPC HDA server for existing integrations. For new projects, OPC UA Historical Access is the recommended successor.
Can OPC HDA modify data or only read it?
OPC HDA can also write through the optional SyncUpdate and AsyncUpdate interfaces, which let a client insert, replace or delete values. Many servers do not support this or restrict it to specific accounts. Give reporting clients read-only rights in OPC HDA for that reason.
What is the difference between ReadRaw and ReadProcessed in OPC HDA?
ReadRaw returns the points actually stored in a time interval, with timestamps that differ per item. ReadProcessed has the OPC HDA server calculate an aggregate per sub-interval, such as a time-weighted average per minute. That produces aligned series and far less network traffic.
Does OPC HDA work without DCOM?
Within a single computer, OPC HDA uses plain COM without any network. Connections between computers need DCOM, or a tunneller or OPC UA wrapper that converts the traffic into a firewall-friendly protocol. The latter approach avoids broad DCOM port ranges between network zones.
Does OPC UA support all functions of OPC HDA?
Largely: OPC UA Historical Access covers raw, interpolated and processed history, corrections and annotations, and part 13 defines the aggregates. There is no direct counterpart of the HDA playback interface, tags become nodes in an information model, and aggregate boundary handling can differ slightly. Compare report results from OPC HDA and OPC UA before you switch.
Is OPC HDA a time series database?
No, OPC HDA is only an interface; the data lives in a historian or time series database behind it. The OPC HDA server translates the internal storage into standardised methods and aggregates. Compression and storage management remain the responsibility of the historian itself.
π In summary
OPC HDA gave historians, SCADA systems and analytics tools a common language for process history: raw values, aggregates, annotations and corrections through fixed COM interfaces. The specification has been frozen since version 1.20 in 2003 and relies on DCOM, which makes it hard to secure. It will keep running in existing OT environments for years, but segmentation, read-only access and a planned migration to OPC UA are wise.
OPC HDA is the completed OPC Classic standard for historical process data; keep existing connections well shielded and choose OPC UA Historical Access for new applications.
