3.8 KiB
3.8 KiB
Component: Data Connection Layer
Purpose
The Data Connection Layer provides a uniform interface for reading from and writing to physical machines at site clusters. It abstracts protocol-specific details behind a common interface, manages subscriptions, and delivers live tag value updates to Instance Actors. It is a clean data pipe — it performs no evaluation of triggers, alarm conditions, or business logic.
Location
Site clusters only. Central does not interact with machines directly.
Responsibilities
- Manage data connections defined at the site level (OPC UA servers, custom protocol endpoints).
- Establish and maintain connections to data sources based on deployed instance configurations.
- Subscribe to tag paths as requested by Instance Actors (based on attribute data source references in the flattened configuration).
- Deliver tag value updates to the requesting Instance Actors.
- Support writing values to machines (when Instance Actors forward
SetAttributewrite requests for data-connected attributes). - Report data connection health status to the Health Monitoring component.
Common Interface
Both OPC UA and the custom protocol implement the same interface:
IDataConnection
├── Connect(connectionDetails) → void
├── Disconnect() → void
├── Subscribe(tagPath, callback) → subscriptionId
├── Unsubscribe(subscriptionId) → void
├── Read(tagPath) → value
├── Write(tagPath, value) → void
└── Status → ConnectionHealth
Additional protocols can be added by implementing this interface.
Supported Protocols
OPC UA
- Standard OPC UA client implementation.
- Supports subscriptions (monitored items) and read/write operations.
Custom Protocol
- Proprietary protocol adapter.
- Implements the same subscription-based model as OPC UA.
Subscription Management
- When an Instance Actor is created (as part of the Site Runtime actor hierarchy), it registers its data source references with the Data Connection Layer.
- The DCL subscribes to the tag paths using the concrete connection details from the flattened configuration.
- Tag value updates are delivered directly to the requesting Instance Actor.
- When an Instance Actor is stopped (due to disable, delete, or redeployment), the DCL cleans up the associated subscriptions.
- When a new Instance Actor is created for a redeployment, subscriptions are established fresh based on the new configuration.
Write-Back Support
- When a script calls
Instance.SetAttributefor an attribute with a data source reference, the Instance Actor sends a write request to the DCL. - The DCL writes the value to the physical device via the appropriate protocol.
- The existing subscription picks up the confirmed new value from the device and delivers it back to the Instance Actor as a standard value update.
- The Instance Actor's in-memory value is not updated until the device confirms the write.
Value Update Message Format
Each value update delivered to an Instance Actor includes:
- Tag path: The relative path of the attribute's data source reference.
- Value: The new value from the device.
- Quality: Data quality indicator (good, bad, uncertain).
- Timestamp: When the value was read from the device.
Dependencies
- Site Runtime (Instance Actors): Receives subscription registrations and delivers value updates. Receives write requests.
- Health Monitoring: Reports connection status.
- Site Event Logging: Logs connection status changes.
Interactions
- Site Runtime (Instance Actors): Bidirectional — delivers value updates, receives subscription registrations and write-back commands.
- Health Monitoring: Reports connection health periodically.
- Site Event Logging: Logs connection/disconnection events.