Event-Driven Runtime for Distributed Function Block Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The complexity of designing application programs for automation systems is exacerbated by dependencies between function blocks and the need for synchronization, particularly in distributed control systems that require event-driven execution.

Innovation Solution

A runtime environment is configured to execute function blocks event-drivenly when their respective trigger events occur, utilizing an event executor and memory resources to store and manage events and data for each function block, ensuring efficient data and event transfer between blocks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If function blocks share global memory for state storage, then ease of operation is improved, but device complexity increases due to synchronization requirements

Engineering Contradiction:
Improveease of operationVSAvoiddevice complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent segments the global memory space into separate instance memory spaces for each function block. Each function block has its own dedicated memory region where it stores its state variables, eliminating the need for shared global memory and the complex synchronization mechanisms that would be required to manage concurrent access to shared resources.

Inventive Principle:
Principle #1Segmentation

2Reliability

If data is transferred after each potential change in shared memory, then reliability is improved, but productivity decreases due to bandwidth consumption and CPU utilization

Engineering Contradiction:
ImprovereliabilityVSAvoidproductivity
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the data transfer mechanism from the continuous shared memory model and implements it within the discrete event framework. Data is only transferred when an event occurs that triggers a state change, rather than continuously monitoring and transferring data after every potential change. This reduces unnecessary data transfers and improves system productivity while maintaining reliability through event-driven updates.

Inventive Principle:
Principle #2Taking out (Extraction)

3Productivity

If event-driven execution is implemented, then productivity is improved, but device complexity increases due to encapsulation requirements

Engineering Contradiction:
ImproveproductivityVSAvoiddevice complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges the event-driven execution model with the function block architecture by integrating event handling directly into the function block instance structure. Each function block instance has its own event queue and executes algorithms in response to events, combining the productivity benefits of event-driven execution with the modular function block approach without requiring separate complex encapsulation mechanisms.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS20220397875A1Runtime Environment and Method for Creating an Event-Driven Execution Model of an Industrial Application
Publication Date: 2022.12.15 NXTCONTROL
  • US20220397875A1 patent drawing
  • US20220397875A1 patent drawing
  • US20220397875A1 patent drawing

AI summary

A runtime environment for execution of an event driven control program for a distributed control system including one or multiple computing resources, wherein the control program includes at least two function blocks. The runtime environment includes for each computing resource an event executor which is configured for execution of sets of events and respective associated data on the respective computing resource. And wherein the runtime environment includes for each function block a memory resource, which memory resource is configured to: store a set of events and associated data for each function block if the data is produced by the function block; and/or store a reference to a set of events and associated data for each function block if the data is consumed by the function block.