Skip to content

bigbases/opc-cloud

Repository files navigation

OPC-CLOUD: Edge-Cloud Orchestration for OPC UA-Based Microgrids

This repository implements OPC-CLOUD, a novel cloud-edge collaborative framework for managing OPC UA-based microgrids as described in "Orchestration of Edge Controller and Cloud Metric Engine for Managing OPC UA-Based Microgrids"(IEEE Transactions on Industrial Informatics, 2025).

Overview

OPC-CLOUD addresses the challenge of data transmission redundancy in industrial IoT systems by orchestrating Edge Controllers (EC) and Cloud Metric Engine (CME) to optimize network traffic while maintaining data quality for microgrid monitoring and analysis.

Key Innovation

  • Adaptive Transmission Control: Uses Coefficient of Variation (CV) analysis to dynamically adjust data transmission frequencies and thresholds
  • Edge-Cloud Orchestration: CME analyzes collected data patterns and configures EC transmission parameters
  • Lightweight Processing: Rule-based transmission control suitable for resource-constrained edge devices
  • OPC UA Standardization: Unified protocol for diverse industrial sensor vendors

Architecture

System Components

  1. OPC UA Generator (go-opcua-generator-master/)

    • Simulates industrial sensors with configurable data patterns
    • Supports 4 data types: Default (normal distribution), Categorical, Stair, Cumulative
    • Configurable anomaly injection for testing
  2. Edge Controller (go-edge-controller/)

    • Receives sensor data via OPC UA protocol
    • Applies adaptive transmission control
    • Publishes filtered data to RabbitMQ
  3. Intermediate Server (go-intermediate-server/)

    • Manages configuration distribution to multiple edge sites
    • Maintains in-memory hashmap of site configurations
    • Handles configuration persistence and retransmission
  4. Real-time Processing Engine (go-real-time-processing/)

    • Consumes raw data from Kafka
    • Performs parsing and decomposition operations
    • Produces refined data back to Kafka
  5. Cloud Metric Engine (python-metricserver-master/)

    • Analyzes data patterns from InfluxDB
    • Calculates CV and standard deviation for each sensor
    • Generates adaptive transmission configurations

Transmission Control Algorithm

Dual-Mode Transmission Control

1. Frequency-Based Transmission (FBT)

  • Periodic data transmission based on CV analysis
  • Sensors classified into High/Medium/Low volatility groups
  • Default frequencies: 1s (high CV), 10s (medium CV), 30s (low CV)

2. Threshold-Based Transmission (TBT)

  • Transmits when data change exceeds calculated threshold
  • Threshold = Standard deviation of sensor during observation period
  • Responds to unexpected variations between periodic transmissions

Adaptive Configuration (AC)

The Cloud Metric Engine dynamically adjusts configurations:

# CV Calculation for frequency grouping
cv = stddev / mean

# Threshold calculation for change detection
threshold = stddev_of_historical_data

# Configuration update every 5 minutes based on recent data patterns

Performance Results

Based on extensive experiments with real microgrid data (183 kWh lithium-ion battery system):

  • Network Traffic Reduction: ~37% reduction compared to baseline
  • CPU Utilization: Decreased by 17.83% overall system
  • Memory Utilization: Decreased by 14.01% overall system
  • Edge Overhead: Minimal increase (0.15-0.35% CPU, 0.86% memory)
  • Data Quality: Maintained 7.81% MAPE vs 7.02% MAPE for full dataset in ML prediction tasks

Quick Start

Prerequisites

  • Go: Version 1.21 or higher
  • Python: Version 3.10.12 or higher
  • Infrastructure: RabbitMQ, Kafka, InfluxDB, PostgreSQL

Build and Run

1. Start OPC UA Data Generator

cd go-opcua-generator-master/cmd
go build -o generator
./generator

2. Launch Edge Controller

cd go-edge-controller/cmd  
go build -o edge-controller
./edge-controller

3. Start Intermediate Server

cd go-intermediate-server/cmd
go build -o intermediate-server
./intermediate-server

4. Run Real-time Processing

cd go-real-time-processing/cmd
go build -o rtc
./rtc

5. Start Cloud Metric Engine

cd python-metricserver-master
python3 main.py

Configuration

Each component uses configuration files in their respective config/ directories:

  • server.config: INI-format configuration for connection settings
  • data.json: Sensor data schemas for the generator
  • metric.ini: InfluxDB and analysis parameters

Configuration Parameters

Edge Controller (config/server.config)

[SERVER]
sensor_port = 8989
mode = threshold  # threshold/change/default
interval = 21600  # Management info transmission interval (seconds)
config_port = 8990

[RABBITMQ]
host = rabbitmq
queue = test.queue
# ... other connection parameters

Transmission Modes

  • threshold: CV-based adaptive transmission (recommended)
  • change: Zero-threshold mode (transmit any change)
  • default: Basic periodic transmission (every second)

Infrastructure Requirements

  • RabbitMQ: Message queuing between edge and processing systems
  • Apache Kafka: High-throughput stream processing
  • InfluxDB: Time-series sensor data storage
  • PostgreSQL: Metadata and configuration persistence

License

This research implementation is provided for academic and research purposes. Please cite the original paper when using this code.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published