Skip to main content

OPC Classic™

Connect to OPC Classic™ servers using OIBus with the OIBus Agent.

Technology Context
  • Industrial communication protocol by OPC Foundation
  • Supports both HDA and DA mode
  • Requires Windows-based OIBus Agent
  • For OPC UA, see OPC UA connector
System Requirements

OIBus Agent must be installed on a Windows machine

OPC Classic vs OPC UA

OPC Classic™OPC UA
StandardThree separate specs: DA (live values), HDA (historical data), AE (alarms & events)Single unified standard: DA (live values) + HA (historical access) + alarms
Historical mode nameHDA — Historical Data AccessHA — Historical Access (OPC UA Part 11). Same concept, different name — see note below
TransportCOM/DCOM — Windows inter-process communication onlyTCP/IP or HTTPS — works over any IP network
PlatformWindows onlyCross-platform: Windows, Linux, macOS, embedded
SecurityRelies on Windows domain/DCOM securityBuilt-in: message signing, encryption, certificate-based auth
Introduced19962006
OIBus requirementRequires an OIBus Agent running on the Windows machine that hosts the OPC serverConnects directly from OIBus — no agent needed
HDA vs HA — the naming confusion

Users coming from an OPC Classic background often look for HDA in OPC UA and cannot find it. OPC UA renames the equivalent feature HA (Historical Access, defined in OPC UA Part 11). The concept is identical — querying a server for values recorded in the past — but the acronym changed. In OIBus, this connector calls the mode HDA, and the OPC UA connector calls it HA. Do not confuse OPC UA HA with OPC Classic HDA: they are separate protocols and are not interoperable.

Choose OPC Classic when your infrastructure already runs OPC DA or OPC HDA servers that cannot be migrated. The COM/DCOM technology that OPC Classic relies on is Windows-only and does not travel over standard IP networks without DCOM tunnelling — hence the requirement for OIBus Agent to run directly on the Windows host.

Choose OPC UA for any new deployment. OPC UA is the current industry standard, supported on all platforms and with security built in. See the OPC UA connector for details.

Common OPC Classic Servers

ServerVendorModesNotes
KEPServerEXPTC (Kepware)DA, HDAMost widely deployed OPC gateway; supports hundreds of PLC, DCS and device types. Also exposes an OPC UA endpoint — see the OPC UA page
FactoryTalk LinxRockwell AutomationDAStandard OPC DA server for Allen-Bradley / ControlLogix PLCs
SIMATIC NET PC SoftwareSiemensDAOPC DA access for S7-300 and S7-400 PLCs. S7-1500 and newer expose native OPC UA — use the OPC UA connector instead
Matrikon OPCHoneywellDA, HDALarge catalogue of device-specific OPC servers, including a widely used free simulation server
PI ServerAVEVA (OSIsoft)DA, HDAIndustry-leading process historian; also exposes an OPC UA interface
Proficy HistorianGE DigitalHDACommon historian in manufacturing and utilities
InfoPlus.21AspenTechDA, HDAWidely used in oil & gas and chemical industries

Specific Settings

SettingDescriptionExample Value
Remote agent URLAgent endpoint (e.g., http://host:2224)http://192.168.1.100:2224
Retry intervalTime (ms) before connection retry10000
Server URLAddress of OPC server (from agent machine)localhost or IP address
Server nameOPC server name (ProgID)Matrikon.OPC.Simulation
ModeData access mode (DA or HDA)HDA

Group Settings

Items are organised into groups. Each group defines a shared schedule and, for HDA mode, the default throttling parameters for all items it contains.

SettingDescriptionExample Value
NameUnique label for the group within this connector.Group A
Scan modeCollection schedule applied to every item in the group.Every 1 min

Throttling Settings

Throttling controls how OIBus paces historical data requests. These settings appear on each group (for connectors that support groups) or on each item (for single-item connectors). Items in a group can override the group defaults by disabling the Sync with group toggle.

SettingDescriptionExample Value
Max read intervalMaximum duration of each sub-query in seconds. Larger time ranges are automatically split into chunks not exceeding this value.3600
Read delayPause in milliseconds between consecutive sub-queries. Helps prevent server overload and manages rate limits.1000
Start time offsetMilliseconds added to the start of the query window (@StartTime). A negative value moves the start earlier, to capture late-arriving data from the previous interval — this is the old "Overlap" behavior. A positive value moves the start later instead, skipping that much of the window.-60000
End time offsetMilliseconds added to the end of the query window (@EndTime). A negative value pulls the end in earlier — useful for eventually-consistent sources where the very latest rows aren't reliable yet. A positive value extends the window later. If the resulting end is not after the effective start, the query is skipped for this run.0
Recovery strategyOrder in which OIBus catches up on a backlog of unqueried sub-intervals — e.g. after being stopped for a while, or on first run against a wide time range. From oldest to newest (default) processes the backlog chronologically. From newest to oldest queries the most recent sub-interval first, so up-to-date values become available immediately while older gaps are backfilled afterward.From oldest to newest

How Throttling Works

  1. Interval splitting — A 24-hour range with Max read interval = 3600 (1 hour) is split into 24 separate 1-hour sub-queries.
  2. Read delay — A pause is inserted between sub-queries to manage server load.
  3. Start/End time offset — With Start time offset = -60000 (-1 minute), a query for [10:00–11:00] actually requests [9:59–11:00], ensuring no late-arriving data is missed. End time offset shifts the other boundary the same way.
  4. Recovery strategy — Only matters when there's more than one sub-interval to catch up on. With From newest to oldest, the tracked instant only advances once every sub-interval in the backlog has been queried — this avoids skipping over not-yet-queried older intervals if OIBus restarts mid-catch-up.
Offsets apply to the full query range

Start/End time offset are applied once, to the start and end of the overall query window — not to the start of each individual sub-interval when a large range is split into chunks by Max read interval.

ScenarioMax read intervalRead delayStart time offset
Stable network, small datasets3600 (1 hour)5000 (none)
Unstable network1800 (30 min)20000 (none)
Large historical retrievals7200 (2 hours)10000 (none)
Real-time with occasional gaps900 (15 min)200-15000 (-15 sec)
Going deeper

For the reasoning behind these numbers — sizing Max read interval against real data volumes, the Read delay / Max read interval trade-off on a large backlog, and worked examples of Start vs. End time offset (including the batched multi-item case where items don't all flush at once) — see Tuning South History Call Settings.

Overriding throttling per item

Each item can override the group throttling defaults by disabling the Sync with group toggle in the item edit form.

Item Settings

SettingDescriptionExample Value
Node IDPath to data in OPC server namespaceChannel1.Device1.Tag1
AggregateData aggregation method (verify server support). See note below for full list.Raw, Average, Minimum, …
ResamplingResample aggregated values at requested interval (requires non-Raw aggregate)None, 1 second, 1 hour, …
Compatibility Notes
  1. Aggregation Support: Not all servers support all aggregation methods
  2. Resampling: Only available when aggregate ≠ Raw
  3. Recommended Settings: Use Raw aggregation and None resampling for maximum compatibility
  4. Server Capabilities: Verify supported features with your OPC server documentation
Aggregate values
ValueDescription
RawAll raw values in the interval
InterpolativeInterpolated value at the requested time
TotalSum of all values in the interval
AverageArithmetic mean
Time averageTime-weighted average
CountNumber of data points
STDEVStandard deviation
Minimum actual timeMinimum value with its actual timestamp
MinimumMinimum value in the interval
Maximum actual timeMaximum value with its actual timestamp
MaximumMaximum value in the interval
StartFirst value in the interval
EndLast value in the interval
DeltaDifference between first and last value
Reg slopeLinear regression slope
Reg constLinear regression y-intercept
Reg devLinear regression deviation
VarianceStatistical variance
RangeMaximum minus minimum
Duration goodDuration of good-quality data
Duration badDuration of bad-quality data
Percent goodPercentage of good-quality samples
Percent badPercentage of bad-quality samples
Worst qualityWorst quality code in the interval
AnnotationsAnnotation events
Resampling values

None · 1 second · 10 seconds · 30 seconds · 1 minute · 1 hour · 1 day

Configuration Examples

  1. Basic Configuration:
  • Node ID: Simulation Random.Int4
  • Aggregate: Raw
  • Resampling: None
  1. Aggregated Values:
  • Node ID: Production.Line1.Temperature
  • Aggregate: Average
  • Resampling: 1 minute
  1. High-Frequency Data:
  • Node ID: Process.Vessel.Pressure
  • Aggregate: Minimum
  • Resampling: 1s