FrameworX's real-time core is an in-memory, event-driven database that bridges hard process control (Level 1) and enterprise applications (Level 2/3). When a solution executes, Tags, Templates, and Assets load into memory, maintained by the TServer.exe process running as a Windows Service or on Linux.
For historical context: From DOS to .NET: Forty Years of SCADA/HMI
All FrameworX modules interact through a publish-subscribe model, where data changes trigger immediate notifications to subscribed components. This event-driven approach ensures:
When a tag value changes in the real-time database:
This pattern appears throughout FrameworX - from device communications publishing to the database, to displays subscribing for updates, to scripts triggering on value changes.
When a solution executes, variables like Tags, Templates, and Assets are loaded into memory, acting as a central point of reference for all functional modules. The TServer.exe process maintains this real-time database, running as either a Windows Service or deployed to Linux and other supported operating systems.
All modules interact with the real-time database through a publish/subscribe model, ensuring consistent data access and efficient performance across the entire system.
FrameworX supports the full spectrum of .NET types, going beyond traditional SCADA primitives:
This rich type system enables direct SQL mapping and eliminates conversion overhead when integrating with enterprise systems.
Category | Types Supported | Use Cases |
---|---|---|
Time-based | DateTime, TimeSpan, DateTimeOffset | Precise timestamps, duration calculations, timezone handling |
Complex Data | DataTable, JSON objects | Recipe management, batch records, configuration data |
Binary | Byte arrays, Images, Files | Document storage, camera snapshots, binary protocols |
Collections | Arrays (up to 3 dimensions), Lists, Dictionaries | Matrix calculations, lookup tables, dynamic sets |
Structured | Custom classes, Structures, Enumerations | Complex equipment models, state machines |
This type richness enables direct 1-to-1 mapping with SQL databases and seamless integration with enterprise systems without data conversion overhead.
For applications with millions of tags, FrameworX implements intelligent memory management:
Tag properties (Min, Max, Engineering Units, Retentive values, etc.) are only allocated when actually configured or accessed. A tag with just a current value uses minimal memory, while a fully-configured tag with alarms, scaling, and history allocates additional structures as needed.
Large data structures like templates and complex types load into memory only when referenced, reducing startup time and baseline memory consumption.
The real-time database provides bidirectional synchronization with SQL databases:
This seamless integration enables FrameworX to function equally well in: